位置: 编程技术 - 正文

PHP的Yii框架中行为的定义与绑定方法讲解(php框架运行机制)

编辑:rootadmin

推荐整理分享PHP的Yii框架中行为的定义与绑定方法讲解(php框架运行机制),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php框架选择2021,php框架ci,php yii框架,php yii框架,php框架ci,php框架ci,php yii框架,php框架ci,内容如对您有帮助,希望把文章链接给更多的朋友!

定义行为

要定义行为,通过继承 yiibaseBehavior 或其子类来建立一个类。如:

以上代码定义了行为类 appcomponentsMyBehavior 并为要附加行为的组件提供了两个属性 prop1 、 prop2 和一个方法 foo()。注意属性 prop2 是通过 getter getProp2() 和 setter setProp2() 定义的。能这样用是因为 yiibaseObject 是 yiibaseBehavior 的祖先类,此祖先类支持用 getter 和 setter 方法定义属性

提示:在行为内部可以通过 yiibaseBehavior::owner 属性访问行为已附加的组件。

静态方法绑定行为

静态绑定行为,只需要重载 yiibaseComponent::behaviors() 就可以了。 这个方法用于描述类所具有的行为。如何描述呢? 使用配置来描述,可以是Behavior类名,也可以是Behavior类的配置数组:

还有一个静态的绑定办法,就是通过配置文件来绑定:

动态方法绑定行为

动态绑定行为,需要调用 yiibaseCompoent::attachBehaviors():

这个方法接受一个数组参数,参数的含义与上面静态绑定行为是一样一样的。

在上面的这些例子中,以数组的键作为行为的命名,而对于没有提供键名的行为,就是匿名行为。

对于命名的行为,可以调用 yiibaseComponent::getBehavior() 来取得这个绑定好的行为:

PHP的Yii框架中行为的定义与绑定方法讲解(php框架运行机制)

对于匿名的行为,则没有办法直接引用了。但是,可以获取所有的绑定好的行为:

绑定的内部原理

只是重载一个 yiibaseComponent::behaviors() 就可以这么神奇地使用行为了? 这只是冰山的一角,实际上关系到绑定的过程,有关的方面有:

4个方法中,Behavior只占其一,更多的代码,是在Component中完成的。

yiibaseComponent::behaviors() 上面讲静态方法绑定行为时已经提到了,就是返回一个数组用于描述行为。 那么 yiibaseComponent::ensuerBehaviors() 呢?

这个方法会在Component的诸多地方调用 __get() __set() __isset() __unset() __call() canGetProperty() hasMethod() hasEventHandlers() on() off() 等用到,看到这么多是不是头疼?一点都不复杂,一句话,只要涉及到类的属性、方法、事件这个函数都会被调用到。

这么众星拱月,被诸多凡人所需要的 ensureBehaviors() 究竟是何许人也? 就像名字所表明的,他的作用在于“ensure” 。其实只是确保 behaviors() 中所描述的行为已经进行了绑定而已:

这个方法主要是对子类用的, yiibaseCompoent 没有任何预先注入的行为,所以,这个调用没有用。 但是对于子类,你可能重载了 yiibaseCompoent::behaviros() 来预先注入一些行为。 那么,这个函数会将这些行为先注入进来。

从上面的代码中,自然就看到了接下来要说的第三个东东, yiibaseComponentattachBehaviorInternal():

首先要注意到,这是一个private成员。其实在Yii中,所有后缀为 *Internal 的方法,都是私有的。 这个方法干了这么几件事:

如果 $behavior 参数并非是一个 Behavior 实例,就以之为参数,用 Yii::createObject() 创建出来。如果以匿名行为的形式绑定行为,那么直接将行为附加在这个类上。如果是命名行为,先看看是否有同名的行为已经绑定在这个类上,如果有,用后来的行为取代之前的行为。在 yiibaseComponent::attachBehaviorInternal() 中, 以 $this 为参数调用了 yiibaseBehavior::attach() 。 从而,引出了跟绑定相关的最后一个家伙 yiibaseBehavior::attach() , 这也是前面我们讲行为的要素时没讲完的。先看看代码:

上面的代码干了两件事:

设置好行为的 $owner ,使得行为可以访问、操作所依附的对象 遍历行为中的 events() 返回的数组,将准备响应的事件,通过所依附类的 on() 绑定到类上

总结

说了这么多,关于绑定,做个小结:

绑定的动作从Component发起; 静态绑定通过重载 yiibaseComponet::behaviors() 实现; 动态绑定通过调用 yiibaseComponent::attachBehaviors() 实现; 行为还可以通过为 Component 配置 as 配置项进行绑定; 行为有匿名行为和命名行为之分,区别在于绑定时是否给出命名。 命名行为可以通过其命名进行标识,从而有针对性地进行解除等操作; 绑定过程中,后绑定的行为会取代已经绑定的同名行为; 绑定的意义有两点,一是为行为设置 $owner 。二是将行为中拟响应的事件的handler绑定到类中去。

PHP的Yii框架中移除组件所绑定的行为的方法 要移除行为,可以调用yiibaseComponent::detachBehavior()方法用行为相关联的名字实现:$component-detachBehavior('myBehavior1');也可以移除全部行为:$component-detachBeha

详解PHP的Yii框架中组件行为的属性注入和方法注入 行为的属性和方法注入原理上面我们了解到了行为的用意在于将自身的属性和方法注入给所依附的类。那么Yii中是如何将一个行为yiibaseBehavior的属性和

PHP常见数组函数用法小结 本文实例讲述了PHP常见数组函数用法。分享给大家供大家参考,具体如下:1.arrayarray_merge(array$array1[,array$array2[,$array]])函数功能:将一个或多个数组的单

标签: php框架运行机制

本文链接地址:https://www.jiuchutong.com/biancheng/292470.html 转载请保留说明!

上一篇:详解在PHP的Yii框架中使用行为Behaviors的方法(php提示框)

下一篇:PHP的Yii框架中移除组件所绑定的行为的方法(php框架ci)

  • 变更税务流程登记流程和资料
  • 计提环境保护税怎么做分录
  • 预缴企业所得税计税依据
  • 出票后定期付款的汇票是什么意思
  • 工程结算成本和合同成本区别
  • 个人生产经营所得税计算器
  • 以不动产投资入股增值税
  • 买二手房为什么要交个人所得税
  • 月末结转各项费用支出479000
  • 固定资产公允价值减去处置费用后的净额
  • 增值税不允许抵扣的27种情况
  • 房租怎么抵扣个税计算方法
  • 卖二手车
  • 产权转移数据印花税按次申报?
  • 未分配利润调整会计分录
  • 公司银行社保代缴怎么交
  • 租房的装修费怎么入账
  • 消防增值服务
  • 教育费附加计算公式
  • 企业注册资金需要拿钱出来吗
  • 享受固定资产一次性扣除政策
  • 企业出售旧设备的收入要纳税吗
  • 已经销售但是没货怎么办
  • 供应商开免税的发票,为何还要收3个点税金?
  • 没有证书可以报特长生吗
  • 对赌协议的账务处理流程
  • 借用下属单位人员违反什么政策
  • 上个月暂估这个月成本怎么调整
  • 应收账款贷方余额怎么在资产负债表中填列
  • 小规模防伪税控服务费280元
  • 详解php语言最牛的语言
  • windows闹钟
  • 公司修建污水池申请书
  • hipsdaemon.exe是什么
  • html 调用扫码
  • yolov5s和yolov5m
  • PHP:iconv_strpos()的用法_iconv函数
  • 资产负债表上应付账款是负数
  • 一般纳税人购进小规模纳税人的货物
  • 个税申报密码重置多久能用
  • 公司账户收款退回怎么查
  • 织梦cms要钱吗
  • 税务局清卡需要公章吗?
  • 完税证明可以去税务局补打吗
  • sql server 2008有什么用
  • Mysql存储过程中的如何遍历一个查询结果集
  • 售后服务维修收费制度
  • 会计学营业利润
  • 在建工程里面的费用最后怎样结转
  • 工程设备租赁有哪些
  • 自产农产品加工成产品销售怎么抵扣
  • 公司跟员工的往来协议
  • 没开发票能确认没开发票能确认收入申报纳税吗?
  • 债券分期付息到期还本的意思
  • 劳动关系与劳务关系的联系与区别
  • 收据能开发票吗
  • 增值税进项税转出额可以税前扣除吗
  • 金蝶美金账户怎么删除
  • 新办企业必须经过什么核准登记
  • 借用别的公司资质的协议范本
  • sql语句编译执行过程
  • w10预览版21343下载
  • win10安装完成后需要做哪些设置
  • 更新profile
  • auepuc.exe是什么软件
  • 硬盘安装xp系统安装教程
  • linux版的oracle
  • win10的outlook在哪
  • windows10电脑屏保怎么取消
  • linux的命令行怎么打开
  • CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放
  • fedora开机启动版本太多
  • 人机交互编程
  • android edittext被系统键盘遮挡
  • nodejs增删改查
  • jquery设置文本字体样式
  • python utils模块
  • 深圳电子税务局税种启用在哪里
  • 江苏省电子税务局社保缴费查询
  • 财税相关书籍
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设