phpyii
① 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框架。
② PHP中使用YII框架的问题
因为你Users Model的对应的表明没改,在这个Users模型类里,有这样的方法:
public static function tableName()
{
return '{{%users1}}'; // users1是你的新表名
}
而且直接执行sql查询,好像不是这样用的吧?
我一般都是这样的
Yii::$app->getDb()->createCommand($sql)->queryAll()
Yii::$app->getDb()->createCommand($sql)->queryOne()
Yii::$app->getDb()->createCommand($sql)->excute()
....
区别你可以看看源代码的说明。(Yii2上的用法,yii1.x应该差不多,你稍微改改就应该没问题)
③ php Yii 框架问题!
yii的component组件有点像对php一些功能的扩充。
在yii应用app启动时载入。并发生作用。
比如像对http请求的处理组件,缓存组件,授权组件,数据库组件,会话组件。
网址处理组件。
这幅图可以说明,组件在框架中的作为。
④ yii 前端如何使用php的变量
你是说视图?
yii视图默认不使用模板引擎,用原生的php
首先在控制器
$this->render('viewFile',array(
'var' => 'string',
));
然后视图:
<?php
echo $var;
?>
⑤ php中yii框架findByAttributes()怎么用呢
$model=Post::model()->findByAttributes(array('user'=>$user));
这个方法是 只要找到一个符合的 就返回 ,findAllByAttributes 找全部 的 数据 , 用法一样的
⑥ php框架zend framework好还是yii好
国内用的比较多的是YII,ZEND FRAMEWORK有点过于大了。教程你也没有必要找视频的,看官方文档就可以了
⑦ php yii框架怎么设置字体编码格式
今天在开发的时候需要将excel文件中数据导入到相关的配置文件中,我按照过去经常使用的方法,先将excel导出成csv文件,然后使用fgetcsv函数读取文件的内容,通过Yii框架中的CConfigure类导出成配置文件,然后在检查的时候发现导出的数组中有些值中间有一些多余的反斜杠,这些反斜杠一般出现在繁体中文或者日文的文字中。
一开始我先检查了csv和excel文件中的字段,发现并没有什么问题,之后我查看了CConfigure类中的saveAsString函数,发现他使用了php中的var_export函数来实现导入配置文件的功能,然后,我又使用var_export输出会出现问题的某个字段,发现确实在字符串中添加了反斜杠,而我直接使用echo或者var_mp输出时,则没有这个情况发生,这个时候我明白问题是出在var_export这个函数上。
在查阅了相关的资料后我发现var_export这个函数会自动转义,也许是这个原因导致了字符串中自动添加了反斜杠,可是字符串本身并没有特殊字符,为什么var_export还是会添加反斜杠,这个让我百思不得其解,我查看了出现问题的字符串的2进制编码,发现出现反斜杠的地方本身的单个字符的ascii码也是反斜杠,也就是说可能是var_export在转义时针对单个反斜杠字符进行了转义?这个原因我最后也没有搞明白。
不过在我不知道如何解决这个问题的时候,我突然想到我的csv的文字编码是gbk的,因为是通过excel直接转的格式,然后我导出的文件编码是utf-8的格式,同时我的代码本身也是utf-8的格式,虽然我最后通过格式转换,成功把gbk的字符串转换成utf-8导出,但是在转换的过程中可能会出现问题(当时想的是这样,不过之后考虑了一下,因为之前在gbk格式下使用var_export已经出现了问题,因此应该不是转换过程中的问题,应该是var_export处理gbk格式的汉字字符串时产生的bug?),于是我将csv文件全部转换成utf-8格式,重新导入文件,成功解决。
其实在解决的过程中,很早就想到可能是编码的问题,但是一直没有发现excel转换的csv文件的格式问题,因为之前导出的配置文件没有汉字,因此没有出现过这一类的问题,于是就忽略了,不过最后虽然解决了问题,但是问题本身的原因还是不明,推测极有可能是因为gbk编码和var_export的兼容导致的问题,果然开发中应该还是尽量使用utf-8统一编码,应该会减少很多不明的错误。
2013.1.19更新:经过思考,觉得应该是对于gbk编码的字符串使用var_export时,函数对于单个字符表示为反斜杠的字符添加了反斜杠的转义,因此使得该处的字符变为两个反斜杠,同时因为在显示时使用了gbk编码,导致添加的反斜杠作为前一个汉字字符的一部分被显示,而原来的反斜杠字符则单独显示了出来。
⑧ php yii2 高级包和基础包的区别
额,基础包相对于高级包来讲,更适合刚学习yii框架的
感觉也没多大区别,有一定基础的话,推荐直接用高级包吧
高级包已经分好前台、后台,基础包只有前台
不过这些都可以自己弄,这个并没有什么,所以随便用一个都行
更多问题可以去php中文网问答社区提问http://www.php.cn/wenda.html,大神在线帮你解决,希望对你有帮助