zoukankan      html  css  js  c++  java
  • 学习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的错误提示和日志信息。

    上层世界往往是美好的,也不要停止在底层的锻炼
  • 相关阅读:
    兼容IE678浏览器的html5标签的几个方案
    CommonJS和AMD/CMD
    axios的使用
    自己写表单校验插件
    表单校验
    JS打开新窗口的2种方式
    mac 上使用移动硬盘
    Boostrap
    Web.config详解
    DataTable
  • 原文地址:https://www.cnblogs.com/knightzero/p/9896046.html
Copyright © 2011-2022 走看看