深入理解 Yii2.0 - 属性,事件,行为。
2017-03-22 00:25
232 查看
前言
本博客基于 深入理解Yii2.0.并且参考Yii2.0 官方文档,加上自己使用Yii2.0的一些总结和理解。Yii 2.0
Yii 是一个高性能,基于组件的 PHP 框架。为什么要用Yii 2.0
Yii 实现了 MVC(Model-View-Controller) 设计模式并基于该模式组织代码。Yii 的代码简洁优雅,这是它的编程哲学。它永远不会为了刻板地 遵照某种设计模式而对代码进行过度的设计。Yii2.0 的开源,背后有特别强大的团队在进行开发维护。
Yii 是一个全栈框架,提供了大量久经考验,开箱即用的特性: 对关系型和 NoSQL 数据库都提供了查询生成器和 ActiveRecord;RESTful API 的开发支持;多层缓存支持,等等。
Yii 非常易于扩展。你可以自定义或替换几乎任何一处核心代码。你还会受益于 Yii 坚实可靠的扩展架构,使用、再开发或再发布扩展。
高性能始终是 Yii 的首要目标之一。
以上是官方给出的说法,MVC是Yii贯穿始终的思想,一旦了解这个思想,就能够简单的使用开发了。(当然只是简单的应用),但我理解中Yii真正的强大之处在于他的可扩展又集成很多解决方案,比如,伪静态化、国际化、RESTful,它都帮你考虑到了。
Yii 基础概念
组件是 Yii 应用的主要基石。是 yii\base\Component 类或其子类的实例。 三个用以区分它和其它类的主要功能有:· 属性(Property)
· 事件(Event)
· 行为(Behavior)
这个是网友自己做的一张继承关系图,不全但这里已经够用。
官方的定义: 组件是 yii\base\Component 类或其子类的实例,从图中的子类我们可以看到,小部件,甚至MVC的每一个部分的实例都是一个组件。
属性
class Post extends yii\base\Object // 第一步:继承自 yii\base\Object { private $_title; // 第二步:声明一个私有成员变量 public function getTitle() // 第三步:提供getter和setter { return $this->_title; } public function setTitle($value) { $this->_title = trim($value); } }
以上的代码非常清晰的显示出属性的特征。
属性是在object类中定义的,我们可以查看源码中yii\base\Object,除了__get() __set() 方法还有:
1. __isset() 用于测试属性值是否不为 null ,在 `isset(object->property) 时被自动调用。 注意该属性要有相应的getter。
2. __unset() 用于将属性值设为 null ,在 unset(object->property) 时被自动调用。 注意该属性要有相应的setter。
3. hasProperty() 用于测试是否有某个属性。即,定义了getter或setter。 如果 hasProperty() 的参数 checkVars=true(默认为true),那么只要具有同名的成员变量也认为具有该属性,如前面提到的publictitle 。
4. canGetProperty() 测试一个属性是否可读,参数 checkVars的意义同上。只要定义了getter,属性即可读。同时,如果checkVars 为 true 。那么只要类定义了成员变量,不管是public, private 还是 protected, 都认为是可读。
5. canSetProperty() 测试一个属性是否可写,参数 checkVars的意义同上。只要定义了setter,属性即可写。同时,在checkVars 为 ture 。那么只要类定义了成员变量,不管是public, private 还是 protected, 都认为是可写。
相关文章推荐
- 深入理解YII2.0的行为
- 深入理解Yii2.0 (2)事件Event
- 深入理解Yii2.0(1) 属性
- 深入理解Yii2.0 (3)行为(Behavior)
- 清晰理解Yii的事件和行为
- 深入理解Vue父子组件通讯的属性和事件
- 深入理解Yii2.0 » Yii与数据库(TBD) » 事务(Transaction)
- 深入理解Yii2.0 » Yii 模式 » 依赖注入和依赖注入容器
- 深入理解Yii2.0 » Yii 模式 » 依赖注入和依赖注入容器
- 深入理解Yii2.0(yii学习的经典博客)
- 深入理解javascript描述元素内容的5个属性
- Android 深入理解Android中的自定义属性
- 深入理解jquery中的事件与动画
- 深入理解C#中的委托和事件
- Effective Objective-C 2.0 — 第二章 对象、消息、运行期 - 第六条:理解“属性”这一概念
- 理解Vue 2.0 的ref属性及简单用法
- 深入理解JS的事件绑定、事件流模型
- 深入理解.net的事件与委托机制
- 自定义View笔记(二) ---深入理解自定义属性
- python属性查找 深入理解(attribute lookup)