【发布时间】:2020-04-23 14:43:18
【问题描述】:
我正在尝试编写一个小的 PHP 类 updater,它可以在多个 Wordpress 插件中使用。目录结构如下:
Plugins
--pluginA
---main.php
---updater.php
--pluginB
---main.php
---updater.php
--pluginC
---main.php
---updater.php
updater.php
class updater {
}
main.php
require_once 'updater.php';
new updater();
但我总是遇到致命错误,因为存在多个相同类名的定义。
我的方法#1
if ( ! class_exists( 'start' ) ):
class updater {
}
endif;
但我觉得上述解决方案行不通,因为插件开发人员可能已经有一个类名updater 用于其他特殊工作。
我的方法 #2
我尝试使用名称空间。它说未定义的类,因为它试图从当前命名空间pluginA 导入该类。这里的问题是,根据开发人员的便利性或其目录结构,插件可能已经具有命名空间。而且我不希望开发人员修改他们自己的命名空间或 lib 命名空间。
updater.php
namespace myLib;
class updater {
}
main.php
namespace pluginA;
require_once 'updater.php';
use myLib\updater;
new updater();
那么我如何将我的库分发给所有可以在他们的 main.php 文件中添加几行并开始使用我的库的开发人员?使类名完全唯一的唯一解决方案是什么?
【问题讨论】:
标签: php wordpress namespaces