首页 / 知识
关于php:何时需要使用后期静态绑定?
2023-04-16 19:48:00

When would you need to use late static binding?阅读了有关后期静态绑定(LSB)的描述后,我可以很清楚地了解发生了什么。 现在,在哪种情况下可能最有用或最需要? 在以下情况下,我需要LSB:
如果您想了解更多有关该主题的信息:
我对后期静态绑定的一个主要需求是一组静态实例创建方法。 这个DateAndTime类是我从Smalltalk / Squeak移植到PHP的年代表库的一部分。使用静态实例创建方法可以创建具有各种参数类型的实例,同时将参数检查保留在静态方法中,从而使库的使用者无法获得不是完全有效的实例。 在这种情况下,后期静态绑定非常有用,因此这些静态实例创建方法的实现可以确定该调用最初针对的类。这是用法示例: 使用LSB:
在没有后期静态绑定的情况下,(例如在我当前的实现中)每个类都必须实现每个实例创建方法,如本示例所示: 没有LSB:
随着实例创建方法和类层次结构数量的增加,方法的重复变成了难题。 LSB减少了这种重复,并允许更简洁,更直接的实现。 在以下情况下很有用: 您所具有的功能随类的层次结构而变化, 该功能在层次结构上具有相同的签名,并且 (非常重要)您没有实例可以停止使用该功能。 如果仅获得#1和#2,则将使用普通实例方法。因此,Alex的问题(请参阅他对这个问题的回答)不需要LSB。 典型的情况是对象创建,其中子类以不同的方式创建自己,但是使用相同的参数。显然,您没有要调用的实例,因此创建方法(也称为工厂方法)必须是静态的。但是您希望它的行为根据子类而有所不同,因此普通的静态方法是不合适的。有关示例,请参见亚当·佛朗哥的答案。
假设您具有在简化的对象关系映射器中表示表(行实例)的类。 如果要存储有关验证和表定义的数据,则最好的位置是在每个派生类中的静态变量中-因为对于每个User实例,验证和表定义都是相同的。 没有LSB,即使您通过User实例调用它,BaseObject中提到的validate()方法也无法引用User和Company中定义的静态变量。它将在Ba??seObject类中查找相同的静态变量,并且将引发错误。 这是我对PHP 5.2.8的经验-LSB将在5.3中引入 如果您需要在子类中尚未重载的方法中访问重载的静态属性/方法,则需要后期静态绑定。一个简单的例子:paste2.org
经典示例是Rails的ActiveRecord类,如果您尝试在PHP中实现类似的内容,则如下所示: 我有一个带有处理某些格式的静态方法的类。我有另一个类,除了它处理格式的方式之外,它需要原始类的所有功能。 |
最新内容
相关内容
linux邮件导出命令?
linux邮件导出命令?,工作,系统,地址,信息,邮箱,管理,命令,对外,目录,文件,谁能帮我把LINUX的常用命令发一下1、linux常用命令: pwd命令 该命令linux命令行收发邮件?
linux命令行收发邮件?,邮箱,时间,情况,工作,地址,代码,网络,软件,服务,数字,linux怎么用命令发送邮件1、在上面的例子中,发件人是Linux当前的登用linux命令写邮件?
用linux命令写邮件?,系统,邮箱,服务,平台,工作,资料,代码,网上,地址,信息,Linux认证系统管理:linuxmail命令发送邮件失败根据你描述的情况,使用linux命令格式描述?
linux命令格式描述?,地址,图片,系统,工作,命令,信息,设备,百分比,名字,首次,linux命令的格式化命令是什么?1、Linux的磁盘格式化命令是“mkfslinux下发邮件命令?
linux下发邮件命令?,邮箱,地址,系统,情况,服务,代码,认证,电脑,发行,检测,Linux中通过SHELL发送邮件1、输入完这行命令后回车,会进入邮件正文的linux拒收新邮件命令?
linux拒收新邮件命令?,系统,信息,工作,拒收,邮箱,地址,不了,网络,标准,状态,Linux中关于mail的指令1、test: test,testbak 在testbak邮箱中备份tlinux发送邮件命令?
linux发送邮件命令?,服务,邮箱,系统,情况,信息,地方,密码,地址,资料,认证,linux下如何发送mail,难道一定要开smtp服务吗1、需要注意的是,需要进linux退出邮件命令?
linux退出邮件命令?,系统,工作,信息,地址,工具,档案,管理,数据,时间,命令,linux的shutdown命令和poweroff的区别Linux重启命令有五个,分别是:shulinux查看邮件命令?
linux查看邮件命令?,邮箱,服务,密码,系统,网络,发行,数据,设计,信息,地方,Linux下怎么给另外一个用户发送邮件.那位用户怎么看邮件?-u用户帐号linux查看邮件的命令?
linux查看邮件的命令?,系统,地址,信息,管理,命令,工作,平台,文件,邮件,路径,Linux中如何管理mail电子邮件日志/var/log/maillog:邮件日志。 红linux命令描述中文?
linux命令描述中文?,地址,系统,工作,信息,目录,命令,基础,工具,标准,文件,Linux命令1、linux系统常用操作命令如下:ls:全拼list,功能是列出目录的linux邮件备份命令?
linux邮件备份命令?,系统,地址,信息,邮箱,服务,网络,通信,名字,时间,下来,LINUX下如何搭建邮件服务器?test: test,testbak 在testbak邮箱中备份t