php-__get()和__set()的最佳做法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-__get()和__set()的最佳做法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1397字,纯文字阅读大概需要2分钟。
内容图文
![php-__get()和__set()的最佳做法](/upload/InfoBanner/zyjiaocheng/687/4da7c7e44ebb4a5b8da2be1d43566a9b.jpg)
从question开始,使用__get()和__set()访问私有变量,我想获得有关它们一般用法的输入.我想知道何时或何处是使用重载函数的最佳时间,以及在哪里使用了重载函数(如果有的话).
为了清楚起见,我们正在讨论以下功能:http://us2.php.net/manual/en/language.oop5.magic.php
解决方法:
惰性模型获取器(使用__get())
我不记得在我的应用程序中经常使用PHP的魔术方法,但是我记得__get()非常有用的一种情况.
过去,我在CakePHP框架中开发一个具有很多模型的应用程序,并且即使方法仅使用其中一个或两个方法,也初始化了用于特定控制器的所有模型(这就是Cake的工作方式).因此,我决定将其从惰性模型更改为惰性模型(首次使用时加载模型).
我所做的只是添加了一个非常简单的__get()函数,该函数查找具有特定名称的模型并将其加载.就像3-4行代码.我在AppController中定义了它(所有CakePHP类都派生自该控制器),突然我的应用程序获得了速度并使用了较低的内存.
稍后,我进行了进一步介绍,并以相同的方式加载了惰性组件.
动态模型方法(使用__call())
同样来自CakePHP的另一个好例子是Cake如何在模型上搜索.基本上,您有两个方法可用于每个模型:find()和findAll(),但是您也可以使用findBy< FieldName>()和findAllBy< FieldName>()方法进行搜索.
例如,如果您有数据库表
notes(id, date, title, body)
并为此创建蛋糕模型.您可以使用诸如findById(),findByTitle()之类的方法.您只需要CamelCase db字段,就可以更快地在任何字段上进行搜索.
Cake通过使用__call()魔术方法来做到这一点.如果您尝试执行一个不存在的方法,然后使用根据方法名称和参数动态创建的条件运行find()或findAll(),则调用此方法.这非常容易实现,可以为您带来很多好处.
内容总结
以上是互联网集市为您收集整理的php-__get()和__set()的最佳做法全部内容,希望文章能够帮你解决php-__get()和__set()的最佳做法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。