PHP阻止标准类

时间:2016-05-15 11:28:39

标签: php class instantiation

这只是理论上的问题,而不是服务器作为一个好例子

我想写一些orm并且所有开发人员都应该使用这个类,是否可以禁止在php中实例化某些std类,以确保不会建立其他连接到这个db?

E.g mysqli不应该被构建。

这技术可行吗?

由于

1 个答案:

答案 0 :(得分:1)

有几种方式

......但没有一个是完美的。

简单方法

如果您不希望任何人设置mysql/imongodb或类似设备,您只需卸载扩展程序即可。那么你的ORM需要使用另一个连接类。

hackish方式

这个名为runkit的好扩展包含了你不应该使用的所有功能。可以从类中删除方法,这样您就可以覆盖要阻止的类的构造函数。我是否需要提一下这是真的坏主意?

好方法

...是代码审查。您可能认为那些并非真正阻止某人使用mysqli,但是:

  • 你不需要通过规避ORM来做比同行更坏的事情。
  • 你知道是谁尝试过,并且能够向他们解释为什么他们不应该这样做。
  • 您实际上可以使用该课程。你可能认为现在你从来不需要它,但也许你的紧急记录器不应该依赖你的ORM。哦,顺便说一句,你的ORM也需要使用它。

TL; DR

正确审核您的代码。无论如何,它是良好编码风格的一部分,可以防止不良解决方案强制使用好的解决方案,并在需要时允许例外。