标签: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