学习Yii(2)
Yii拥有很好的手册,还是中文的,官方的手册很详细。还是应该好好看一下。今天就开始跟着项目代码调试。
上次看到入口脚本,学习一定要快,要用心,抓住时间。不然时间拖久了就忘了。延续不上,大打折扣。而且要搞清楚先后顺序,该掌握的掌握了再来学习该学的东西,不然也容易学不下去。
应用
在MVC基础上多了一个application,用来处理请求分发给相应的Controller,那就是这个应用。
应用由入口脚本创建为单例对象。可以在任何地方通过Yii:app()访问
配置一般保存在config/main.php中,将配置传给应用构造器$app = Yii:createWebApplication($configFile);
应用组件
应用可以通过配置components属性来自定义用到的任何组件及其类属性值。
应用是CWebApplication的实例,因为刚开始看,看到这还是不明白,我只知道这是个类。对于组件在哪也不清楚。
CWebApplication类预定义了核心组件,很多功能。
应用生命周期。
CApplication::preinit()初始化→设置自动加载和错误处理→注册核心类组件→加载应用配置→CApplication::inti()初始化→触发onBeginRequest事件→处理用户请求→触发onEndRequest事件
这些类的方法还都需要看,现在没时间去看啊。先走项目。
两天走走项目,发现架构挺简单的,结构比较清楚。框架部分有很多看不懂的地方,继续回来看框架。
控制器
一般继承自CController或者其子类(在framework/web/CController.php)当用户请求是,由应用创建,控制器运行执行请求的动作Action,动作Action引入模型Model并渲染对应视图。这些用过框架的人都很好理解,如果没用过框架就基本无法理解。
动作Action就是以action开头的控制器类方法。
控制器有一个默认的动作,在用户未指定动作时默认执行,默认动作为index,相当于没有指定动作 执行index方法。可以通过CController::defaultAction修改。
接下来是路由,定义路由规则。也就是浏览器里的url,默认大小写敏感,可以设置。
格式为:服务器地址/控制器ID(控制器名)/动作ID(去除action前缀的方法名)
开发过程中应用有很多的模块Module,路由为moduleID/controllerID/actionID
实例化控制器
CWebApplication处理请求时创建实例。$catchAllRequest 用户指定的控制器将被忽略,用于设置维护状态的静态提示页面。
$controllerMap数组用于写入控制器ID。
使用了模块后,应用将先检查是否是模块中的控制器,如果存在,模块实例首先被创建,然后创建该模块中的控制器实例。
动作
以action开头的一个方法,可以定义一个动作类,实例化动作类,动作可以被复用。
写一个方法重写CController下的actions方法。
过滤器
一个动作可以有多个过滤器,配置在控制器动作执行前或者执行后,在过滤器列表中按顺序执行,定义方法名以filter开头。
需要重写CController的filters()方法。过滤器,+号说明应用于这些动作、-号说明应用于除了这些之外的动作,没有符号将用于全部的动作。
模型
CModel的实例或其子类的实例。
是单独的数据对象。每个字段对应模型中的一个属性。每个属性都有一个标签label,可以通过一些规则验证。
表单模型和Active Record
表单模型是CFormModel的实例,用于保持从用户输入获取的数据。获取→使用→丢弃
Active Record AR是一种用于通过面向对象的风格抽象数据库访问的设计模式。时候CActiveRecord的实例化。代表数据表中的一行数据。字段对应AR对象的属性。
视图
rander渲染视图名字,视图名字和视图脚本名一致。一般在protected/views/ControllerID目录下。也就是在对应的Controlle名文件夹下。视图是php脚本文件。在视图内部可以用$this来访问控制器类实例。拉去控制器的任何属性。
$this->render()以数组的方式传递数据到视图里。提取参数到变量,直接在视图里访问。
布局
通用部分。header footer..等等。
protected/views/layouts/main.php是默认布局文件。
小物件
CWidget类或其子类的实例,通常内嵌于一个视图产生一些复杂而独立的用户界面,比如日历小物件。
主要用于表现数据的组件。增加可复用。小物件像控制器一样可以拥有自己的视图。通过调用CWidget::render()渲染。没有文件布局。
系统视图
系统视图渲染用于展示Yii的错误提示和日志信息。
学习Yii(2)的更多相关文章
- 如何学习YII
我是在Yii的官方wiki上看到这篇文章的.读的第一遍觉得很不错,还有一种想翻译出来的冲动.虽然,本人英文很烂,但是毕竟写了这样多年的代码,估计大概的意思是能有的吧.英文原文:http://www.y ...
- 开始学习Yii
YII是我一直想学的一个框架,之前看过TP3.2和5.0.Yii是Yes it is 的缩写. 我采用下载源码的方式安装,解压到web目录.以前用过Composer,Yii官网也推荐用Composer ...
- Yii框架的学习指南(策码秀才篇)1-2 一步步学习yii framework
我也是新手,不过之前学习了tp和ci框架,所以尝鲜想看看yii到底有多强大. 如何新建一个webapp(网站应用)呢,下面是2个步骤: 1. cmd 切换到htdocs下面的yii目录下的framew ...
- Yii2的深入学习--yii\base\Event 类
根据之前一篇文章,我们知道 Yii2 的事件分两类,一是类级别的事件,二是实例级别的事件.类级别的事件是基于 yii\base\Event 实现,实例级别的事件是基于 yii\base\Compone ...
- Yii2的深入学习--yii\base\Object 类
之前我们说过 Yii2 中大多数类都继承自 yii\base\Object,今天就让我们来看一下这个类. Object 是一个基础类,实现了属性的功能,其基本内容如下: <?php namesp ...
- 学习Yii框架,有哪些比较好的网站
1.http://www.yiiframework.com/ 2.http://www.kancloud.cn/curder/yii/247741 3.http://www.manks.top/yii ...
- <yii 框架学习> yii 框架改为中文提示
工作需要用到yii框架,但发现yii框架自带的提示都是英文的.上网找资料才发现其实可以自己陪置 . 将项目protected/config/main.php里的app配置加上language=> ...
- 学习Yii(3)
组件 Component的或其子类的实例.属性和事件 组件的属性.(名称大小写不敏感) 可读可写,就像对象的公共成员变量. 通过$component->属性名.获取属性值.$component- ...
- 回顾yii的学习进程 总结了一下的发展过程
如果看到这篇文章,我想说恭喜你 不用,你可以先放下学习yii了 我先学在把结论发给你们节省精力 yii2的学习教程:http://www.digpage.com/recent_update.html ...
随机推荐
- Jquery选择器小结
1.基本选择器 $("#id") //ID选择器 $("div") //元素选择器 $(".classname") //类选择器 $(&qu ...
- 一个奇怪的方法解决华为ENSP模拟器路由器启动后命令行一直“#”的问题
今天打开ensp准备练习一下,设备启动以后发现端口一直是红色.于是打开路由器命令行,发现一直输出“#”号.百度后几乎试了所有方法,什么删除网卡再新建.重启计时器.配置ip地址..都不行. 可是我昨天用 ...
- Verilog Tricks
1,可用generate产生512*FIFO 2,Vivado的warning也要全部排除 3,小module测完再往大module加 4,复位和IDLE处的置零操作一定要写全了 5,设计通信接收机时 ...
- UVA323 Jury Compromise
思路:背包类DP 提交:3次 错因:没有注意得分的上下界导致 RE 显示 WA 题解: 我们很容易的想到把两种分数做一个差,来尽量背到 \(0\) . 那最大化总分呢?这时我们可以用两种分数的和作为物 ...
- 009_STM32程序移植之_内部falsh
flash 模拟 EEPROM 实验 1. 测试环境:STM32C8T6 2. 测试接口: 3. 串口使用串口一,波特率9600 单片机引脚------------CH340引脚 VCC---- ...
- MyBatisPLus入门项目实战各教程目录汇总
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/37194 http://www.imooc.com/article/details/id/ ...
- JS 时间转换函数 字符串时间转换毫秒(互转)
字符串转化为日期 let util = function(){ Date.prototype.Format = function(fmt) { var o = { "M+" : t ...
- 5分钟记住列表的使用功能-Python基础前传(7)
学习任何一门技术,最重要的是逻辑而不是内容,仅会内容,我们仅仅是技术的使用者,但如果我们懂得了技术背后的逻辑,我们就是技术的创造者,所以同样领域的工作,有人月入5千,有人月入5万,就是这个差别: 学技 ...
- 微信小程序之简单记账本开发记录(四)
昨天搭建了大致界面 今天需要将用到的一系列样式表配置出来并检查错误
- 一台服务器配置多个mysql实例
在公司资源紧张的情况下,需要在一台服务器上部署多个数据库实例,现在就来实战一下该情况. 需要启动两个不同的端口,分别是3306和3307 [root@node1 ~]# mkdir /u01/mysq ...