• 学习Yii(3)


    组件

    Component的或其子类的实例。属性和事件

    组件的属性。(名称大小写不敏感)

    可读可写,就像对象的公共成员变量。

    通过$component->属性名。获取属性值。$component->属性名 = 值 。设置属性值。

    组件事件(名称大小写不敏感)

    特殊的属性。使用事件句柄 event handlers的方法作为值。

    组件事件以on开头的命名方式定义。

    组件行为

    组件可以绑定多个行为。行为是一个对象,其方法可以通过收集功能的方式来实现集成,多重继承。

    行为类必须实现IBehavior接口。行为必须要绑定到一个组件,通过attach()绑定。然后通过组件可以调用此方法。

    模块

    模块是一个独立的软件单元。包含模型,视图,控制器和其他组件,相当于一个小型的应用,位于一个应用里。

    大型应用里,我们把它分为几个模块。每个模块单独维护和部署。开发模块,可以在以后的项目里复用。

    模块目录

    模块名xxx文件夹 即ID/

    模块类文件xxxModule.php

    可复用的用户组件components/

      小物件的视图view/

    控制器文件contrllers/

    第三方扩展extension/

    模块类文件models/

    视图和布局文件views/

      index.php首页视图

    具体开发过程中目录是按实际需求设置的。不一定是这样。

    模块类文件继承自CWebModule,必须要有这个继承。

    模块目录放在基础目录的modules下。配置时也可以带初始属性值...

    访问路由我们在之前都已写过了,就是模块ID/控制器ID/动作ID,如果控制器在子目录中也可以多写一个文件夹路径。

    模块的嵌套

    理应上来说模块可以无限嵌套。 父模块、子模块,子模块必须定义在父模块的modules属性里,就像在应用配置中设定模块一样。路由:parentModuleID/childModuleID/controllerID/actionID。

    上次看到模块这,一晃就过去半个月时间,一头扎进项目中,期间感觉少些东西不了解,继续把手册干完。

    路径别名与名字空间

     恩。听起来就觉得是命名空间

    手册说类似于namespace

    用点号语法,RootAlias.path.to.target 。RootAlias是某个目录的别名,通过YiiBase::getPathOfAlias()翻译别名为相应的带杠杠的文件夹路径。

    通过YiiBase::setPathOfAlias()可以定义新的根路径别名

    预定义:

    system:表示Yii框架目录  yii/framework

    zii:表示Zii库目录

    application:表示应用的基础目录  

    webroot:表示入口脚本文件所在的目录 (入口脚本:一般是指写有defined DEBUG,require_once框架引导文件那些的index.php)

    ext:表示包含第三方扩展的目录

    这么说它跟命名空间还是不一样的,可以很方便的导入类Yii::import('system.web.CController');

    import方法比include和require更加高效,import导入不会被真正包含,到第一次被引用才会加载。

    我也不懂优化,这些能带来多少性能方面的改善

    原生php好像没有import这个函数 有的只见了include和require、include_once和require_once,php有好多我们可能并不知道能用的函数可以使用的哦。

    Class Map 预先导入,预先导入的类可以在应用的任何地方使用,无需导入或者包含文件。系统内置的类就是使用这样的方法。在CWebApplication::run()执行之前写入Yii::$classMap = array(){ 类名 => 文件路径 }定义。

    还可以导入目录,用Yii::import('目录名’); 这样目录下的所有类文件在使用时都会被包含。

    YII在命名空间引用上可以说是很灵活了。以后再搞明白点。

    开发规范

    不知道为什么Yii手册开发规范要放到这么后面说

    遵循规范可以避免写太多配置。

    url规范

    默认情况:index.php?r=ControllerID/ActionID

    r 为路由,被Yii解析为控制器和动作。

    通过CUrlManager创建更加SEO友好的地址。

    代码规范

    变量、函数、类使用驼峰,首字母大写,变量和函数名第一个单词小写以区分于类

    私有类成员以下划线作为名字的开头

    在php不支持命名空间时(5.3.0以前版本),避免类名冲突,所有的Yii框架类名以C为前缀

    控制器必须以Controller结尾

    配置规范

    配置使用键值对数组

    键代表属性名。值对应初始值

    文件

    类文件应以它们包含的公有类命名。视图文件应以视图的名字命名。配置文件可以任意命名。

    这在开发过程中好像并没有很好的遵守

    目录

    WebRoot/protected: 这是应用基础目录,是放置所有安全敏感的PHP脚本和数据文件的地方。

    WebRoot/protected/runtime:临时文件

    WebRoot/protected/extensions:第三方扩展

    WebRoot/protected/modules:应用模块,每个模块一个子目录

    WebRoot/protected/controllers:所有控制器文件

    WebRoot/protected/views:所有控制器文件

    WebRoot/protected/views/layouts:布局文件

    WebRoot/protected/views/system:系统视图,用于显示异常和错误的模板

    WebRoot/assets:公共资源文件

    WebRoot/themes:应用主题

    数据库

    数据库表名和列名都用小写字母,用下划线分隔单词,表名推荐使用单数。

    可以使用前缀。

    上层世界往往是美好的,也不要停止在底层的锻炼
  • 相关阅读:
    CodeForces Gym 100935G Board Game DFS
    CodeForces 493D Vasya and Chess 简单博弈
    CodeForces Gym 100935D Enormous Carpet 快速幂取模
    CodeForces Gym 100935E Pairs
    CodeForces Gym 100935C OCR (水
    CodeForces Gym 100935B Weird Cryptography
    HDU-敌兵布阵
    HDU-Minimum Inversion Number(最小逆序数)
    七月馒头
    非常可乐
  • 原文地址:https://www.cnblogs.com/knightzero/p/9924566.html
Copyright © 2020-2023  润新知