首页 / PHP / 在函数PHP中实例化类是一种不好的做法
在函数PHP中实例化类是一种不好的做法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在函数PHP中实例化类是一种不好的做法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1237字,纯文字阅读大概需要2分钟。
内容图文
我正在重构大量代码以使其更具可测试性,并且我有一堆依赖于实例化数据库对象的有用函数.
像这样的事情:
function id_from_name($table, $name)
{
$db = get_database();
//code that returns an id
}
function username_from_user_id($id)
{
$db = get_database();
//code that returns a username
}
还有更多类似id_exists,id_active等的信息.
现在,我认为这不是正确的选择,因为对象可能应该作为参数传递?但这意味着每次我要使用一个函数时,都要在每个函数中创建并发送一个新对象.
所以,我的问题确实是:我是否应该将这些函数移入可以访问数据库对象的类/库中?我上面显示的示例通常是一种不好的处理方式吗?
解决方法:
确实,更好的方法是上课.您将把数据库对象传递给构造函数,并使其成为实例变量.这样,每个函数都可以访问数据库对象.
现在,实例化实例的原因被认为很糟糕.您在每个函数中使用的数据库对象是因为,例如,如果您决定一天更改数据源,则可能需要进行大量重构.如果将数据库对象传递给构造函数,则只需将正确的对象传递/注入到类中,而无需任何重构.
…有关DI的更多信息…
通过将对象传递给构造函数,您还可以创建更清晰的API =>您知道哪个对象依赖于另一个对象,您确切知道哪个类使用您的DB对象.如果您像在函数中那样开始实例化或以静态方式访问它,我将不得不浏览所有类以查看在何处使用DB对象.再有一点,依赖性注入迫使SRP(单责任原则)=> 1.如果开始注入太多对象(构造函数有很多参数),则应该怀疑您的类做得比应做的要多,然后开始重构.
内容总结
以上是互联网集市为您收集整理的在函数PHP中实例化类是一种不好的做法全部内容,希望文章能够帮你解决在函数PHP中实例化类是一种不好的做法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。