**YII** 系列一理论知识

来源:互联网 发布:淘宝模特拍摄 下载 编辑:程序博客网 时间:2024/05/23 19:31

认识:部分功能差不多就像C++模板库,在使用过程中调用相应的类,进行实例化,自定义类继承yii基础类。使用类的属性和方法。

类,要素特性

属性、事件、行为


>属性


在类中,属性和成员变量不同。属性是这个类固有的性质,可以定义其访问权限。而类的成员变量是构成类的一部分,是一个量,可以更改。

实现类的属性的方法:

l  继承自 yii\base\Object 。

l  声明一个用于保存该属性的私有成员变量。

l  提供getter或setter函数,或两者都提供,用于访问、修改上面提到的私有成员变量。 如果只提供了getter,那么该属性为只读属性,只提供了setter,则为只写。

 

在Yii中,由 yii\base\Object 提供了对属性的设定,因此,如果要使你的类支持属性,必须继承自 yii\base\Object 。其中有一系列可以设置属性的方法函数

l  __isset() 用于测试属性值是否不为 null

l  __unset() 用于将属性值设为 null

l  hasProperty() 用于测试是否有某个属性

l  canGetProperty() 测试一个属性是否可读

l  canSetProperty() 测试一个属性是否可写

 

 

>事件


>>使用事件,可以在特定的时间地点,触发执行预先设定的一段代码。,事件无处不在,比如,你发了个微博,触发了一个事件,导致关注你的人,看到了你新发出来的内容。在JS中也有相关的事件,鼠标点击事件,这时候,事件会出发一系列行为。

 

>>使用时间是需要明白的几个要素

这是一个什么事件?

谁触发了事件?

谁处理事件

事件怎么处理

事件相关的数据有哪些

 

>>与事件相关的类

yii\base\Component或者yii\base\Event

其中定义了与事件相关的一些函数,直接定义对象的事件特性。

 publicstaticfunction on($class,$name,$handler,$data = null,        $append = true)    {        // ... ...        // 用于绑定事件handler    }     publicstaticfunction off($class,$name,$handler = null)    {        // ... ...        // 用于取消事件handler绑定    }     publicstaticfunction hasHandlers($class,$name)    {        // ... ...        // 用于判断是否有相应的handler与事件对应    }     publicstaticfunction trigger($class,$name,$event = null)    {        // ... ...        // 用于触发事件    }


>>事件的handler,事件处理程序,即对应的php函数

可以使用全局的PHP函数

可以使用类的成员函数

也可以使用匿名函数

 

>>使用on函数进行绑定

$person->on(Person::EVENT_GREET, 'person_say_hello

使用off函数解除绑定

publicfunction off($name,$handler = null)

trigger设置事件的发

publicfunction trigger($name, Event $event = null)

 

 

>行为


>作用:在类的外面对类的属性和方法进行补充。 通过将行为绑定到一个类,可以使类具有行为本身所定义的属性和方法,就好像类本来就有这些属性和方法一样。而且不需要写一个新的类去继承或包含现有类。

>与行为相关的类以及绑定行为的方法

yii\base\bahavior类,进行实例化,定义类的对象

// Step 1: 定义一个将绑定行为的类class MyClass extends yii\base\Component{    // 空的} // Step 2: 定义一个行为类,他将绑定到MyClass上class MyBehavior extends yii\base\Behavior{    // 行为的一个属性    public$property1 = 'This is property in MyBehavior.';     // 行为的一个方法    publicfunction method1()    {        return 'Method in MyBehavior is called.';    }} $myClass = new MyClass();$myBehavior = new MyBehavior(); // Step 3: 将行为绑定到类上$myClass->attachBehavior('myBehavior',$myBehavior); // Step 4: 访问行为中的属性和方法,就和访问类自身的属性和方法一样echo$myClass->property1;echo$myClass->method1();


l  从 yii\base\Component 派生自己的类,以便使用行为;

l  从 yii\base\Behavior 派生自己的行为类,里面定义行为涉及到的属性、方法;

l  将Component和Behavior绑定起来;

l  像使用Component自身的属性和方法一样,尽情使用行为中定义的属性和方法。

>>行为类的要素

$owner 成员变量,用于指向行为的依附对象;

events() 用于表示行为所有要响应的事件;

attach() 用于将行为与Component绑定起来;

deatch() 用于将行为从Component上解除。

 

>>定义行为

 

>Yii的约定


约定就像一种用的模式,最常见的默认值就是一种约定。Yii框架把最通用的内容做成约定,然后提高执行效率。

>>Yii的目录结构,每个文件中存放的内容和作用

├── backend后台的 资源包和相关配置文件

├── common公共目录,可供其它应用使用的应用

├── console

├── environments

├── frontend前台存放有前端资源包和相关配置

├── nbproject

├── tests

├── vendor第三方程序目录,比如composer.json的安装和yii框架本身

├── composer.json

├── composer.lock

├── init

├── init.bat

├── LICENSE.md

├── README.md

├── requirements.php

├── yii

└── yii.bat

index.php的入口文件,协调各个部分的应用。

 

>别名


@+预定义的别名

@yii 表示Yii框架所在的目录,也是 yii\BaseYii 类文件所在的位置;

@app 表示正在运行的应用的根目录,一般是 digpage.com/frontend;

@vendor 表示Composer第三方库所在目录,一般是 @app/vendor或 @app/../vendor ;

@bower 表示Bower第三方库所在目录,一般是 @vendor/bower ;

@npm 表示NPM第三方库所在目录,一般是 @vendor/npm ;

@runtime 表示正在运行的应用的运行时用于存放运行时文件的目录,一般是 @app/runtime ;

@webroot 表示正在运行的应用的入口文件 index.php 所在的目录,一般是 @app/web;

@web URL别名,表示当前应用的根URL,主要用于前端;

@common 表示通用文件夹;

@frontend 表示前台应用所在的文件夹;

@backend 表示后台应用所在的文件夹;

@console 表示命令行应用所在的文件夹;

其他使用Composer安装的Yii扩展注册的二级别名。

 

>自动加载机制的约定

>环境和相关配置文件的约定。

Yii环境就是一组配置文件,在不同IDE中不同人员的共同开发的过程中

提供了一种规范,是版本控制变得简单,减少了冲突和繁琐的步骤。

 

0 0