Я пытаюсь написать небольшой 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();
Итак, как я могу распространить мою библиотеку среди всех разработчиков, которые могут просто добавить несколько строк в свой основной файл. php и начать использовать мою библиотеку? Является ли единственным решением сделать имя класса полностью уникальным?