zoukankan      html  css  js  c++  java
  • 学习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:应用主题

    数据库

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

    可以使用前缀。

    上层世界往往是美好的,也不要停止在底层的锻炼
  • 相关阅读:
    C++程序设计入门--前言
    C++ string_view 的坑
    从OGRE,GAMEPLAY3D,COCOS2D-X看开源
    抽烟解闷的程序员
    一个团队应该是什么样
    准备开始接手公司的项目
    两位印象深刻的同事
    一段故事结束,一段生活开始
    starling性能优化总结(毫无疑问还是转载)
    知道端口号如何查看应用位置
  • 原文地址:https://www.cnblogs.com/knightzero/p/9924566.html
Copyright © 2011-2022 走看看