yii源码分析
1. 在github上面怎么样搜索yii2.0开发的网站源码
这是yiiChina上传的yii开发源码
https://github.com/yiichina/yii2
2. 如何修改114la导航源码
方法/步骤
1 我们先要去下载一份114la导航源码,我这里用得时utf8的版本,宣传页面做得很漂亮,但这个不是主要的。下载好后我们解压源码。
2、解压后我们看到如何下目录结构,我先说明下每个目录的功能
admin 后台管理目录,其实几乎所有的功能都在这个文件夹下面,我们也基本只要修改这个文件夹就可以
core 这个目录里面放置的是系统使用的框架,这个系统采用的时YII
ajax 几个ajax游戏的页面
html 这个就是后台生成的页面存放的地方,就两类一个是首页,一个是频道页面,这个都是可以在后台设置的非常简单
3、下面我们来说下如果和修改首页的内容,default目录里面就是用户来生成页面的代码,我们一个一个来说
footer.php 用来生成页面底部的代码,注意有几个页面效果的js也是写在这个文件里面的
games_hot_ajax.php 这个文件对应页面热门游戏部分
games_min_ajax.php 小游戏部分
games_web_ajax.php 网页游戏部分
gouwu_ajax.php 购物部分
header.php 生成页面的头部
index.php 页面首页,其他的文件都是在这个页面中调用的,一会详细说明下这个文件
inner.php 是频道页面
left.php 首页吗左边的内容
main.php 首页主分区的内容 其实就是右边靠上那部分
tools.php 工具模块部分
yule_ajax.php 娱乐部分
4、说了好文件的目录和功能,下面我们详细看下创建主页的文件,看到文件中得
<?php $this->renderPartial('default/left', array('x' => $x)); ?>
这个部分就是在调用模板,而且采用的方式是直接在页面上写php的代码的方式,大多数用户应该都可以看的懂。
5、最后我们说说核心的一点代码是如果调用每个模块的,其实非常简单,这套系统式直接把数据库中得所有分类以及数据读取到一个数组中去了,看看下图,foreach中得$x这个数组,91 就是分类的编号,是不是感觉茅塞顿开,以后需要什么分类直接去调用分类的id然后循环就可以了。
步骤阅读
6、不过大家还要把代码中得广告给清理干净。
END
注意事项
分析代码要仔细
要注意页面中的外链
3. yii2.0获取到最后一条执行的sql怎么看
这个有很多种方法
1. yii有提供一个getRawSql方法 比如说一个查询
$query=User::find();
$query->select(['username','age'])->where(['id'=>1)->one();
echo$query->createCommand()->getRawSql();//输出sql语句
2.可开启yii2的debug模块,这个功能很强大,在里面可以查到当前页面所有的sql信息,具体配置方法自行网络,网上太多这个配置了
3.查找Yii源码 随便找个模型调用原生的方法 比如 User::updateAll 方法,通过编辑器定位到updateAll方法的源码 你会发现下面一段代码
publicstaticfunctionupdateAll($attributes,$condition='',$params=[])
{
$command=static::getDb()->createCommand();
$command->update(static::tableName(),$attributes,$condition,$params);
return$command->execute();
}
继续定位execute方法
publicfunctionexecute()
{
$sql=$this->getSql();
$rawSql=$this->getRawSql();
Yii::info($rawSql,__METHOD__);
if($sql==''){
return0;
}
$this->prepare(false);
$token=$rawSql;
try{
Yii::beginProfile($token,__METHOD__);
$this->pdoStatement->execute();
$n=$this->pdoStatement->rowCount();
Yii::endProfile($token,__METHOD__);
$this->refreshTableSchema();
return$n;
}catch(Exception$e){
Yii::endProfile($token,__METHOD__);
throw$this->db->getSchema()->convertException($e,$rawSql);
}
}
方法里$rawSql就是最原生要执行的sql拉,在这里打断点输出就ok
个人推荐第二种方法,最方法最高效,具体配置方法自己网络,很简单!
4. yii 框架简析
date: 2017-11-21 10:50:00
title: yii 框架简析
因为工作原因需要重拾 yii 框架, 而之前一直使用的 hyperframework -- 公司技术团队内部开发的框架, 需要什么服务, 直接往框架上添加即可. hyperframework 底层是服务容器, 需要添加新的服务很简单, 这个在我之前的 blog hyperframework WebClient 源码解读 / 用 yii 框架 10 分钟开发 blog 系统? 都有提到, 不熟悉的同学可以移步一览. 所以思路上需要做一点改变: yii 已经封装好了很多常用服务, 开箱即用 .
之前也提到过, 这样的重型框架之所以入门比较困难, 很大一部分原因是 功能太多 , 导致难以分清主次和记忆. 这里 记忆 不是死记硬背, 而是知识的内化, 不过知识的内化说起来更难以理解, 倒不如说是想要达到知识随用随取信手拈来的境界, 你起码得记得吧 . 当时也提到一些方法, 这篇 blog 会进行完善并实践.
简析 yiii 框架的方法(类似的重型框架都可以采用这个思路):
通过生命周期来 解读源码/定位问题 是非常非常重要的手段. 鸟哥 在他的博客中, 无论是源码分析, 还是问题解决, 多次实践, 这里摘录 思考能力何其重要.. 中的一段话:
yii 框架的生命周期, 虽然在应用上会做如下分类:
但是其实是统一的, 都是对应程序的输入与输出(input/output), 只是在 http 请求这里, 使用 request/response 来表示, 而在后台脚本这里, 使用 argument/option 表示输入, 脚本中直接 echo/print 表示输出
这张图里, 最核心的其实是: 应用主体 , 其他部分, 都是通过应用主体来协调调度, 甚至你可以认为, yii = application(container) + component(service)
我制作的 网络脑图: get_yii , 带上了标识表示我理解的重要性.
熟悉我的同学可能都知道, 我比较喜欢用 思维导图 , 平时也喜欢 记笔记 , 部分观点在之前也提到过, 这里再赘述一下:
当然还有一些其他的工具, 主要遵循 一图胜千言 的理念, 比如流程图, 时序图, 这就看场景了, 不过使用频率没那么高.
关于实践, 我们前任 CTO 的建议我会一直铭记:
5. 求一个php期末大作业的源码(包括素材) ,可以实现增删改查功能就可以
。。如果没有其他要求,你只要:
①安装环境,如集成xmapp
②自己随便建个表,没其他需求俩字段就够了。
③下个yii源码包,用自带gii工具生成一套crud。
over。
6. 买了个网站源码YII框架的,不知道怎么安装,哪位大大教下
检查数据库连接。
数据库,用户名,密码,数据表。
类似这样的代码。修改成你的的mysql代码
<?php
$con = mysql_connect("localhost","root","root");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
// some code
?>
7. thinkphp与yii 哪个更优秀,分别是哪些方面优秀
yii更优秀,而且要比thinkphp优秀很多。
要回答分别是哪些方面优秀我们先要明白,框架是用来干什么的。
框架的作用:1、简化开发。2、提高工程的可维护性。3、规避编程语言本身的坑和陷阱。
那么我们就从这3个方面来讨论下着二者的优劣。
1、简化开发方面:从新手的视角来看(或者表面来看),thinkphp做项目更简单,因为其一提供了大部分web开发常用类库,其二中文手册写的很详细。但事实上,thinkphp有两个缺失的特性导致一旦项目做久或者稍微上规模,就会使人头痛不堪,这缺失的两个特性分别是:完整的AR支持以及完善的多层次模型
其次,web项目开发中大部分代码都是重复的,因此自动化代码生成工具是必不可少的,截至最新的tp3.2.3,我仍然没看到tp对自动化工具有任何支持的迹象
2、可维护性,缺失了完整的AR和多层次模型,代码不可能工整到哪里去,代码一多,源代码必然跟面条一样杂乱。最重要的时,TP没有unitTest,这导致重构都无门。同样,数据库方面,tp缺失了数据迁移工具,这都导致了项目后期维护由很大困难
3、规避编程语言本身的坑和陷阱:tp和Yii都是由PHP做的实现,PHP本身有很多的坑和陷阱,诸如混乱的语言结构与函数傻傻分不清的关系,变量转换的陷阱,凌乱不堪的类库命名。这些在yii里基本都得到了改善,Yii完全用面向对象的方式构建,常用web类库都以组件方式呈现,终于改善了PHP程序员边写代码边网络:‘XX功能该用哪个函数’的情况。反观TP,仅仅对常用类库封装成class,要用什么取什么,根本没做过精心的设计,完全像是一个多年的程序员攒了些类库,然后七拼八凑而成的一个框架,因此我常常说,thinkphp是个伪MVC框架。