您的位置:首页 > 编程语言 > PHP开发

深入理解 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, 都认为是可写。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  yii php mvc