沉思录之二牛
2021-08-24 合山装修公司
PME模型
在大规模的程序设计中,组件(component)已经成为一种非常流行的技术。常见的组件技术都基于PME模型,即属性(Property)、方法(Method)和事件(Event)。
基于PME的组件技术可以方便地实现IoC(Inversion of Control,控制反转),是从IDE的plugin到应用服务器的“热发布”等许多技术的基础。
PHP从版本5开始,大大完善了对OO的支持,以前不能被应用的许多pattern现在都可以在PHP5中实现。因此,是否能够实现基于PHP的组件技术,也就成了一个值得讨论的问题。
下面对PHP对于PME模型的支持,逐一进行讨论:
#61548; 属性(Property)
PHP并不支持类似Delphi或者C#的property语法,但这并不是问题。Java也不支持property语法,但是通过getXXX()和setXXX()的命名约定,同样可以支持属性。
PHP也可以通过这一方式来支持属性。但是,PHP提供了另一种也许更好的方法,那就是__set()和__get()方法。
在PHP中,每一个class都会自动继承__set()和__get()方法。它们的定义如下:
void __set ( string name, mixed value )
mixed __get ( string name )
但这已是境外参加奥运会的最好成绩。更可贵的其中23金 这两个方法将在下列情况下被触发:当程序访问一个当前类没有显式定义的属性时。在这个时候,被访问的属性名称作为参数被传入相应的方法。任何类都可以重载__set()和__get()方法,以实现自己的功能。
如下例:
class PropertyTester {
public function __get($PropName) {
echo \"Getting Property $PropName\\n\";
}
public function __set($PropName, $Value) {
echo \"Setting Property $PropName to \'$Value\'\\n\";
}
}
$Prop = new PropertyTester();
$Prop-Name;
$Prop-Name = \"some string\";
类PropertyTester重载了__set()和__get()方法,为了测试,仅仅将参数打印输出,没有做更多的工作。测试代码创建了PropertyTester类的实例,并试图读写它并不存在的一个属性Name。此时,__set()和__get()相继被调用,并打印出相关参数。它的输出结果如下:
Getting Property Name
Setting Property Name to \'some string\'
江中黄芪生脉饮和好好黄芪颗粒哪个有优势银川男性功能障碍治疗费用多少钱
来宾白癜风治疗费用

-
-
连两场被错位打出阴影饼皇竟成火箭最大漏洞搭配
连两场被错位打出阴影!饼皇竟成火箭最大漏洞卡培拉北京时间12月12日这种从...
- 建材选购 2020-06-06
-
连两场被错位打出阴影饼皇竟成火箭最大漏洞搭配
-
-
这烂队又一新星爆发复兴从今天开始搭配
+!这烂队又一新星爆发 复兴从今天开始?勒夫特 北京时间12月8日,布...
- 建材选购 2020-05-31
-
这烂队又一新星爆发复兴从今天开始搭配
-
-
脑残操作惹怒球迷欲众筹炒掉公牛管理层搭配
脑残操作惹怒球迷!欲众筹炒掉公牛管理层公牛管理层 在选秀大会前...
- 建材选购 2020-05-28
-
脑残操作惹怒球迷欲众筹炒掉公牛管理层搭配
-
-
还记得14年前猝死的他吗亨利因他而眼含热搭配
还记得14年前猝死的他吗?亨利因他而眼含热泪纪念维维安·福时隔14年,喀麦...
- 建材选购 2020-05-27
-
还记得14年前猝死的他吗亨利因他而眼含热搭配
-
-
为美好而来这里的温泉给您不一样的体验1搭配
为美好而来,这里的温泉,给您不一样的体验为美好而来,这里的温泉,给您不...
- 建材选购 2020-05-27
-
为美好而来这里的温泉给您不一样的体验1搭配
-
-
儋州市正式升格为海南第四个地级市搭配
儋州市正式升格为海南第四个地级市在国务院批复近5个月后,今日,儋州市...
- 建材选购 2020-05-26
-
儋州市正式升格为海南第四个地级市搭配