标签:orm 上传 tmp input Enctype span 收集 数据 font
与 laravel 相较,Yii2 将配置(依赖关系定义)外化,用行为(更类似于 python 中的织入)类,弥补
Trait
的一些不足,好处是可以动态扩展动作。至于事件处理则大同小异,有趣的是在命名上,yii2 借用了jquery
事件系统的那一套,on,off,trigger
。当然也相同之处,比如应用都是建立在容器之上。相比其它的面向领域,面向接口编程,Yii2 使用模块,来分层,分中心小应用,细化大架构。而getter/setter
,及过滤器,java 痕迹太明显。
yii\base\Component
类或其子类的实例
yii\base\Object
, 支持属性(Property)功能\Yii::createObject
静态方法,创建组件实例
Yii::createObject()
基于依赖注入容器实现
yii\base\BaseObject
类执行时的生命周期
Yii
引入yii\base\Object
的基类, 支持基于类内的getter
和 setter
(读取器和设定器)方法来定义属性(getter 或 setter
的属性正常调用 property_exists()
将不会生效
canGetProperty()
或canSetProperty()
事件可以将自定义代码 “注入” 到现有代码中的特定执行点
事件处理器Event Handlers
‘trim‘
[$object, $method]
[$class, $method]
function ($event) { ... }
事件对象 $event
event name
:事件名event sender
:调用 trigger () 方法的对象custom data
附加事件处理器时传入的数据,默认为空附加事件处理器
public void on ( $name, $handler, $data = null, $append = true )
事件处理器顺序(Event Handler Order)
yii\base\Event::event参数的‘yii\base\Event::handled
属性为真触发事件(Triggering Events)
yii\base\Component::trigger()
方法触发
public void trigger ( $name, yii\base\Event $event = null )
yii\base\Event
类或其子类的实例移除事件处理器(Detaching Event Handlers)
public boolean off ( $name, $handler = null )
类级别的事件处理器
yii\base\Event::on()
在类级别附加处理器
public static boolean off ( $class, $name, $handler = null )
接口事件
Event::on()
并将接口类名作为第一个参数全局事件
通配符事件 Wildcard Events
行为是yii\base\Behavior
或其子类的实例,也称为 mixins, 类似于原生的 Trait
处理事件
yii\base\Behavior::events()
方法
附加行为
yii\base\Component::attachBehavior()
方法yii\base\Component::attachBehaviors()
方法一次附加多个行为
public void attachBehaviors (array $behaviors )
使用行为
$component->getBehavior(‘myBehavior‘);
getBehaviors()
移除行为
yii\base\Component::detachBehavior()
方法用行为相关联的名字实现Yii2 内置行为类
yii\behaviors\TimestampBehavior
在 Active Record 存储时自动更新它的时间戳属性yii\behaviors\BlameableBehavior
使用当前用户 ID 自动填充指定的属性yii\behaviors\SluggableBehavior
自动填充指定的属性,其值可以在 URL 中用作 slugyii\behaviors\AttributeBehavior
在发生特定事件时自动为 ActiveRecord 对象的一个或多个属性 指定一个指定的值yii2tech\ar\softdelete\SoftDeleteBehavior
提供软删除和软恢复 ActiveRecord 的 方法yii2tech\ar\position\PositionBehavior
允许通过提供重新排序方法来 管理整数字段中的记录顺序行为 VS Traits
概述
使用
Yii::configure()
方法根据配置去初始化其属性
Yii::configure($object, $config)
配置的格式
class
元素指定了将要创建的对象的完全限定类名propertyName
元素指定了对象属性的初始值,键名是属性名,值是该属性对应的初始值
on eventName
元素指定了附加到对象事件上的句柄,数组的键名由 on 前缀加事件名组成as behaviorName
元素指定了附加到对象的行为,值表示创建行为的配置信息应用的配置
小部件的配置
yii\base\Widget::widget()
和yii\base\Widget::begin()
方法都可以用来创建小部件默认配置
Yii::createObject()
方法基于依赖注入容器实现Yii::creatObject()
创建对象时,可以附加一系列默认配置到指定类的任何实例Yii::$container->set()
来定义Yii::setAlias()
来给文件路径或 URL 定义别名Yii::getAlias()
命令来解析根别名到对应的文件路径或 URLYii::$classMap
方法向映射表中添加类yii\di\ServiceLocator
或其子类的一个实例yii\di\ServiceLocator::set()
方法进行相关组件注册。public void set ( $id, $definition )
$definition
可以是类名,配置数组,php 可调用对象,或者本身就是一个对象实例yii\di\ServiceLocator::has()
检查某组件 ID 是否被注册yii\di\ServiceLocator::get()
Yii 通过 yii\di\Container
类提供 DI 容器特性
yii\di\Container::get()
方法将其第三个参数作为配置数组应用于正在创建的对象 如果该类实现yii\base\Configurable
接口(例如 yii\base\BaseObject),则配置数组将作为最后一个参数传递给类构造函数
yii\di\Container::set()
注册依赖关系set()
注册的依赖关系,在每次使用时都会产生一个新实例yii\di\Container::setSingleton()
注册一个单例的依赖关系set()
或 setSingleton()
注册的,也可以是一个类构造器参数列表和一个configuration
用于配置新创建的对象Yii.php
文件时,Yii
就创建了一个 DI 容器Yii::$container
访问Yii::createObject()
时,此方法实际上会调用这个容器的 get () 方法创建新对象setDefinitions()
或 setSingletons()
方法key
:类名称,接口名称或别名value
:与 class 关联的定义,class关联的定义,‘identifies
参数值将传递给 set () 方法Instance::of(‘tempFileStorage‘)
符号,Container
将隐含地提供一个用tempFileStorage
名称注册的依赖项
更多学习内容可以访问【对标大厂】精品PHP架构师教程目录大全,只要你能看完保证薪资上升一个台阶(持续更新)
还有更多进阶学习资料领取噢进阶PHP月薪30k>>>架构师成长路线【视频、面试文档免费获取】
标签:orm 上传 tmp input Enctype span 收集 数据 font
原文地址:https://www.cnblogs.com/wh20xy/p/13469524.html