Yii 基本概念

组件和对象

Yii 框架的类中通常从两个类继承:yiibaseObject 和 yiibaseComponent。这些类提供了诸多有用的特性,并自动添加到继承的类中。

Object 类提供了配置(Configuration)和属性(Property)特性。Component类继承自 Object 类,添加了事件处理(event handling)和行为(behavior)。

Object 类通常用于表示基本数据结构,Component 类用于应用程序组件,其它类则实现更高级别逻辑。

对象(Object)配置

Object 类展示了配置类的通用方法。任何继承自 Object 的类都应当声明构造函数(如有必要)以便其能够正确配置,如下所示:

class MyClass extends yiibaseObject{
    public function __construct($param1, $param2, $config = [])
    {
        // ... initialization before configuration is applied

        parent::__construct($config);
    }

    public function init()
    {
        parent::init();

        // ... initialization after configuration is applied
    }
}

上面这段代码中构造函数的最后一个参数 $config 必须为数组,且包含了用于初始化属性的“键-值”对,在构造函数末尾传递。
你也可以覆写 init() 方法,以便在配置应用后执行相应的初始化工作。
根据该约定,你能够使用类似如下的配置数组创建和配置新的对象:

$object = Yii::createObject([
    'class' => 'MyClass',
    'property1' => 'abc',
    'property2' => 'cde',
], [$param1, $param2]);

路径别名

Yii 2.0 扩展了路径别名的使用方式为同时包括“文件/目录”和“URL”两种。别名必须以“@”符号开头,以便能够将“文件/目录”路径和“URL”区分开,别名 @yii 指的是当 @web 包含了 Web 程序运行时基础 URL在内的 Yii 安装目录。目录别名支持在大多数 Yii 核心代码中使用。例如,FileCache::cachePath 接受两种路径别名和常规目录路径。

路径别名也与类的命名空间紧密相关。推荐为每一个跟命名空间定义路径别名,以便 Yii 的类自动加载器能够直接使用而无需进一步的配置。例如,由于 @yii 指的是 Yii 安装目录,诸如 yiiwebRequest 这样的类会被 Yii 自动加载。若使用第三方库,如 Zend Framework,可能需要定义路径别名 @Zend 用于指代其安装目录,Yii 能够自动加载库中的所有类。

以下别名由核心框架预定义:

  • @yii �C 框架目录

  • @app �C 当前正在运行程序的基础路径

  • @runtime �C 运行时目录

  • @vendor �C Composer 供应商目录

  • @webroot �C 当前正在运行的 Web 应用程序的根目录

  • @web �C 当前正在运行的 Web 应用程序的基础 URL

自动加载

所有的类、接口和特性都在使用时自动加载,无需使用 include 和 require 命令。对由 Composer 加载的包也像 Yii 扩展一样对待。

Yii 的自动加载工作根据 PSR-4 。这意味着命名空间、类、接口和特性须与文件系统路径和文件名一一对应,除非根命名空间已被某个别名定义。

例如,若标准别名 @app 指的是 /var/www/example.com/,则 appmodelsUser 将从 /var/www/example.com/models/User.php 加载。

可以使用如下代码加载自定义别名:

Yii::setAlias('@shared', realpath('~/src/shared'));

附加自动加载器可以使用 PHP 的标准函数 spl_autoload_register 函数注册。

助手类

助手类通常只包含静态方法,使用方法如下:

use yii\helpers\Html;
echo Html::encode('Test > test');

以下若干助手类由框架提供:

  • ArrayHelper

  • Console

  • FileHelper

  • Html

  • HtmlPurifier

  • Image

  • Inflector

  • Json

  • Markdown

  • Security

  • StringHelper

  • Url

  • VarDumper


  • 原文:http://vistart.name/blog/yii-2-basic-concepts/

你可能感兴趣的:(function,object,BEFORE,public,应用程序)