如何保护 PHP 中的类
我们正在开发一个带有插件的 PHP 项目。我们的插件包含一个开源类。
另一个插件使用同一个类。
如果两个插件都包含相同的类,PHP 将抛出“无法重新声明类”错误。
我们不能询问 class_exists 是否存在,因为我们想使用我们的类文件,因为其他插件可能使用旧版本或新版本。
我们也不想重命名该类,因为我们希望使类文件以后可以轻松升级到较新的版本。
我们无法更改其他插件,那么在包含此文件时我们可以做些什么来避免错误?
We work on a PHP project which has plugins. Our plugin includes one open source class.
Another plugin uses this same class.
PHP will throw "Can not re-declare class" error if both plugins include a same class.
We can not to ask if class_exists because we want to use our class file as the other plugin might use an older or newer version.
We also do not want to rename the class as we want to keep the class file easily upgradeable to a newer version later.
We can't change the other plugin so is there anything we can do when including this file to avoid the error?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
最好的解决方案是将这两个类放在不同的 命名空间 中,但这仅从 PHP 5.3 开始支持。
The best solution would be to put the two classes in different namespaces, but this is only supported from PHP 5.3.
使用自动加载
http://php.net/manual/de/function.spl -autoload-register.php
Use autoloading
http://php.net/manual/de/function.spl-autoload-register.php
检查这个问题的第二个答案。我认为这将是问题PHP致命错误:无法重新声明类。
希望它会有所帮助。
祝你今天过得愉快...
check the second answer of this question . i think that will be the issue PHP Fatal error: Cannot redeclare class.
hope it will help.
have a nice day...
使用 require_once() 而不是 include() (或使用自动加载器)
Use require_once() rather than include() (or use the autoloader)