Я Тринг объявить интерфейсы для моих классов, как это:Объявление интерфейса в PHP - почему объявления смешиваются?
namespace Helpers\Interfaces {
interface Cache {
public static function getInstance($profile = null);
}
}
А потом применять их так:
namespace Helpers {
class Cache implements Interfaces\Cache {
public static function getInstance($profile = null) {
/* ... */
}
}
}
До сих пор, так хорошо (по-видимому, по крайней мере). Проблема, которую я имею, это NetBeans, дает мне сообщение о том, что мой класс не является абстрактным и не реализует определенный метод.
Метод принадлежит к объекту, который я создал для сбора параметров конфигурации, необходимых для работы определенных методов, без предоставления определенных параметров конфигурации в зависимости от объекта (например, хоста, порта, ключа API и т. Д.).
Этот метод, в данном примере, называется \Configuration\Helpers\Cache::getConfiguration($profile);
Конфликтная декларация приходит от этого интерфейса:
namespace Configuration\Helpers\Interfaces {
interface Cache {
public static function getConfiguration($profile = null);
}
}
, который применяется следующим образом:
namespace Configuration\Helpers {
class Cache implements Interfaces\Cache {
public static function getConfiguration($profile = null) {
/* ... */
}
}
}
Это эффективно смешивание интерфейсы, хотя они именовались! Я хотел бы отметить, что и интерфейс, и объявление класса, реализующие такой интерфейс, всегда находятся в одном файле, по одному файлу на объект.
PHP версия 7.0.13 на NetBeans 8.2.
Что я делаю неправильно?
Я дам ему попробовать. Спасибо за подсказку :) –
Нет, это не приводит к исчезновению ошибки. Я, однако, подозреваю, что это связано с NetBeans, а не с моим стилем кодирования, так как у меня нет никаких предупреждений или ошибок при выполнении моего кода, это просто NetBeans, жалующийся на объявление ... –