为了账号安全,请及时绑定邮箱和手机立即绑定

Yii框架不得不说的故事—高效篇(2)

withy PHP开发工程师
难度中级
时长 2小时27分
学习人数
综合评分9.80
77人评价 查看评价
9.9 内容实用
9.9 简洁易懂
9.6 逻辑清晰
  • 在调用 spl_autoload_register() 进行autoloader注册之后,Yii将 calsses.php 这个文件作为一个映射表保存到 Yii::$classMap 当中。这个映射表,保存了一系列的类名与其所在PHP文件的映射关系
    查看全部
  • Yii的类自动加载,依赖于PHP的 spl_autoload_register() , 注册一个自己的自动加载函数(autoloader),并插入到自动加载函数栈的最前面,确保Yii的autoloader会被最先调用。类自动加载的这个机制的引入要从入口文件 index.php 开始说起 <?php defined('YII_DEBUG') or define('YII_DEBUG', false); defined('YII_ENV') or define('YII_ENV', 'prod'); // 这个是第三方的autoloader require(__DIR__ . '/../../vendor/autoload.php'); // 这个是Yii的Autoloader,放在最后面,确保其插入的autoloader会放在最前面 require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php'); require(__DIR__ . '/../../common/config/aliases.php'); $config = yii\helpers\ArrayHelper::merge( require(__DIR__ . '/../../common/config/main.php'), require(__DIR__ . '/../../common/config/main-local.php'), require(__DIR__ . '/../config/main.php'), require(__DIR__ . '/../config/main-local.php') ); $application = new yii\web\Application($config); $application->run(); 这个文件主要看点在于第三方autoloader与Yii 实现的autoloader的顺序。不管第三方的代码是如何使用 spl_autoload_register() 来注册自己的autoloader的,只要Yii 的代码在最后面,就可以确保其可以将自己的autoloader插入到整个autoloder 栈的最前面,从而在需要时最先被调用
    查看全部
    0 采集 收起 来源:类的延迟加载

    2018-03-22

  • sql_autoload_register
    查看全部
    0 采集 收起 来源:类的延迟加载

    2015-11-05

  • 缓存中的依赖关系: 1、文件依赖(FileDependency):一旦文件改变,缓存将失效 2、表达式依赖(ExpressionDependency):一旦表达式改变,缓存将失效 3、DB依赖(DbDependency):一旦数据改变,缓存将失效
    查看全部
  • 设置缓存时间
    查看全部
  • Table Prefix
    查看全部
  • 2.attributeLabels详解: //返回数据库字段,以字段名为(key),注释为:(values) //1.为Ruels()提供数据返回错误的信息 //2.表单(用户操作),提示输入框中要输入什么。以及输入多少位 public function attributeLabels() { return [ 'id' => 'ID号', 'title' => '这是一个标题', ]; }
    查看全部
  • Gii: 1.r=gii会判断是模块还是控制器,如果是模块的话会交给模块处理(GII模块),否则的话交给控制器处理(应用主体(也是个模块)) 2.所有的模块都是挂在应用主体之上的
    查看全部
    0 采集 收起 来源:gii工具简介

    2015-10-11

  • Controller Generator(控制器生成器) Controller Class(填写上控制器类的名字,要写上命名空间):app\controllers\TestController 这个控制器里会有一些操作,一般情况下会自动生成一个index操作,当然也可以添加我们想要的一些操作。在index后面加上一个空格,这时就可以写另外一个操作test。这时控制器就会帮我们生成2个操作。以此类推。想生成3个操作,可以再加一个空格,写上操作名test2。 Action IDs:index test test2 一般情况下控制器里的操作都是需要去显示一个视图的,第3个参数View Path是控制器里的操作想显示的那个视图文件要存放在哪个路径里面,这个可以不用填。当不填时,视图路径就会放在views文件夹里面,views文件夹里会自动帮我们生成一个以控制器的名字Test为目录名的文件夹。 Base Class:表示TestController的父类是什么,默认是yii\web\Controller Code Template(代码模板):作用是:在上面这些配置信息最后需要生成具体的控制器和具体的各种视图文件时,中间会需要Template模板,Template模板里有一个程序,这个程序会去读取这些配置的信息,读完这些配置项这个程序就会用这些配置项去生成具体的控制器和视图文件。
    查看全部
  • basic/models/TbPrefix.php <?php //gii工具之数据模型配置介绍 //1.在Model Generator页面勾选上Use Table Prefix配置项后生成的活动记录发生哪些变化。点击Generate之前先检查有没有配置'tablePrefix' =>'tb_'(位于basic/config/db.php)。 //在Model Generator页面的Table Name表框里输入t,会弹出tb_prefix表,这张表是在yii数据库里的。系统怎么知道要到yii里去找tb_prefix表?而不是到其它数据库里找呢? //原因是在basic/config/db.php里有一个dbname=yii的配置项,所以系统才会知道到哪一个数据库里去找这个表的相关信息。 namespace app\models; use Yii; class TbPrefix extends \yii\db\ActiveRecord { public static function tableName() { //2.tableName返回的内容不再是单纯的表名了,而是返回{{%没有了表前缀的表名}},这里表前缀不见了,但是没有关系,因为生成活动记录前勾选了Use Table Prefix。 //当我们使用TbPrefix活动记录来操控表的时候,框架会把{{%prefix}}转换成tb_prefix。系统是怎么知道在prefix前面加上tb_这么一个表前缀的呢?系统实际上也是根据配置信息去找这个表前缀tb_然后加在prefix前面的。 //在basic/config/db.php里有'tablePrefix'这么一个配置项,框架会把'tablePrefix'的值'tb_'拿出来加在prefix前面,这样系统就知道能去操控的表的名字是tb_prefix。 return '{{%prefix}}'; } public function rules() { return [ [['id', 'fid'], 'required'], [['id', 'fid'], 'integer'] ]; } public function attributeLabels() { return [ 'id' => 'ID', 'fid' => 'Fid', ]; } }
    查看全部
  • 什么是表前缀(Table Prefix)? 在设计数据库表的时候,有时候会在表名前面加一个表前缀,像tb_就是表tb_prefix的表前缀。 为什么要加上表前缀呢? 一张表要么是在一个模块当中,要么是在一个系统当中,这时候就可以把这张表所在的模块或系统当作表前缀,好处1是可以立马看出这张表属于哪个模块或系统中,好处2是如果其他模块或系统也有prefix表,那么加上表前缀就可以防止表名一样的冲突。 像WordPress是一款比较优秀的PHP博客系统,这个博客系统里的表就加了表前缀。 那么勾选上Use Table Prefix配置项, 就要创建一个有表前缀的这么一张表的活动记录。 Table Name:tb_prefix
    查看全部
  • Model Generator里的配置项 Use Table Prefix:在生成活动记录的时候要不要去使用表前缀。 Generate Relations:要不要根据数据库表的外键信息去生成相应的代码。 Generate Labels from DB Comments:要不要根据数据库表里的字段的注释去生成相应的信息。勾选上就会在活动记录里产生attributeLabels()里的数组。不勾选上这个配置项会怎样呢?重新生成并覆盖Test.php,需要把overwrite勾选上。 Generate ActiveQuery:activequery表示一个与活动记录类关联的数据库查询。 Enable I18N:是不是使用I18N,这个I18N是一个多元的处理方案。
    查看全部
  • HelloController.php namespace app\controllers; use app\models\Test; public function actionIndex(){ //Yii高效篇————gii工具之模型生成器代码实现 $test = new Test();//根据活动记录类生成一个实例,用$test变量来引用。 $test->id = 5; //$test->title = 'wangdachui';//2.验证rules()有没有效,2.1先注释给title字段赋值的这段代码,title没有赋值就通不过校验,通过save保存数据就会失败。 $test->title = 5;//2.2给title字段赋上一个整型int($test->title =5;),而不是字符串string。同样也会保存失败。 $test->save(); print_r($test->getErrors());//打印捕获的错误信息
    查看全部
  • basic/models/Test.php <?php //Yii高效篇————gii工具之模型生成器代码实现 namespace app\models;//由Namespace配置项生成 use Yii;//声明Yii是全局类,在方法里引用时就不用再加\了。 //根据Model Class和Base Class两个配置项生成 class Test extends \yii\db\ActiveRecord { //1.Test活动记录可以对这张表进行操控(插入数据,可以被Test校验是否合法,适合写入test表中) public static function tableName() { return 'test'; } //2.通过rules()函数校验插入的数据的合法性。rules返回了一个数组,实际上只对title这个字段进行了校验。 public function rules() { return [ [['title'], 'required'],//首先校验:如果想把数据写入到test表中,这个title字段是必须求的,就是title字段必须给写上值,如果没有写上值,rules是不会让你把数据写进去的。 [['title'], 'string', 'max' => 200]//另外,title字段里的值必须是字符串,最大长度为200。 ]; } //3.这个attributeLabels()函数返回了一个数组(返回了以数据表的字段的名字为key,以字段的注释为value的数组。字段没有注释则根据字段名转换成大写或驼峰式的方式作为注释),数组里的id和title就是test表里的两个字段,后面都对应了一个内容。 //attributeLabels()函数的作用:3.1为rules()提供了一些报错信息[注释],3.2设计系统时,注册的表单数据需要保存到数据库的title字段,就可以用title字段对应的注释信息提示用户表单里应该填写什么内容[写string,多长的string...] public function attributeLabels() { return [ 'id' => 'ID', 'title' => 'Title', ]; } }
    查看全部
  • Model Generator(模型生成器)--帮助我们生成数据模型的。点击Start来到模型生成器的页面。 数据模型生成器可以帮助我们生成一个活动记录,这个活动记录是专门的去操控数据库里的某一张表的。 为yii数据库里的test表创建一个活动记录。 Table Name:test 填写完数据库表名鼠标在外面一点,Model Class会自动生成数据模型类的名字Test。 Namespace、Base Class、Database Connection ID(Yii框架的数据库组件,通过这个组件来获取test数据表的各种信息,从而帮助我们生成test表对应的活动记录)。 点击Preview,页面信息无多大变化,但多了一个Generate。(点击Generate之前先确认basic/models下没有Test.php文件) 点击Generate就会根据这个页面的信息去真正的生成活动记录了。这个活动记录的名字为Test,位于basic/models/Test.php。
    查看全部

举报

0/150
提交
取消
课程须知
学习本门课程之前,建议先了解一下知识,会更有助于理解和掌握本门课程 1、掌握PHP基本的语言语法 2、对MVC开发方式有一定的了解
老师告诉你能学到什么?
1、YII的延迟加载 2、YII的多级缓存 3、GII工具的使用

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!