深入理解 Yii2.0 - 属性,事件,行为。

前言

本博客基于 深入理解Yii2.0.并且参考Yii2.0 官方文档,加上自己使用Yii2.0的一些总结和理解。

Yii 2.0

Yii 是一个高性能,基于组件的 PHP 框架。

为什么要用Yii 2.0

  1. Yii 实现了 MVC(Model-View-Controller) 设计模式并基于该模式组织代码。
  2. Yii 的代码简洁优雅,这是它的编程哲学。它永远不会为了刻板地 遵照某种设计模式而对代码进行过度的设计。Yii2.0 的开源,背后有特别强大的团队在进行开发维护。
  3. Yii 是一个全栈框架,提供了大量久经考验,开箱即用的特性: 对关系型和 NoSQL 数据库都提供了查询生成器和 ActiveRecord;RESTful API 的开发支持;多层缓存支持,等等。
  4. Yii 非常易于扩展。你可以自定义或替换几乎任何一处核心代码。你还会受益于 Yii 坚实可靠的扩展架构,使用、再开发或再发布扩展。
  5. 高性能始终是 Yii 的首要目标之一。

以上是官方给出的说法,MVC是Yii贯穿始终的思想,一旦了解这个思想,就能够简单的使用开发了。(当然只是简单的应用),但我理解中Yii真正的强大之处在于他的可扩展又集成很多解决方案,比如,伪静态化、国际化、RESTful,它都帮你考虑到了。

Yii 基础概念

组件是 Yii 应用的主要基石。是 yii\base\Component 类或其子类的实例。 三个用以区分它和其它类的主要功能有:

· 属性(Property)
· 事件(Event)
· 行为(Behavior)

深入理解 Yii2.0 - 属性,事件,行为。_第1张图片

这个是网友自己做的一张继承关系图,不全但这里已经够用。
官方的定义: 组件是 yii\base\Component 类或其子类的实例,从图中的子类我们可以看到,小部件,甚至MVC的每一个部分的实例都是一个组件。

属性

class Post extends yii\base\Object    // 第一步:继承自 yii\base\Object
{
    private $_title;                 // 第二步:声明一个私有成员变量

    public function getTitle()       // 第三步:提供gettersetter
    {
        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=truetruepublic title 。
4. canGetProperty() 测试一个属性是否可读,参数 checkVarsgetter checkVars 为 true 。那么只要类定义了成员变量,不管是public, private 还是 protected, 都认为是可读。
5. canSetProperty() 测试一个属性是否可写,参数 checkVarssetter checkVars 为 ture 。那么只要类定义了成员变量,不管是public, private 还是 protected, 都认为是可写。

你可能感兴趣的:(yii,php)