我要为我的类声明接口,如下所示:
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) {
/* ... */
}
}
}
它有效地混合了接口,尽管它们是命名空间! 我想要注意的是接口和实现这种接口的类声明总是在同一个文件中,每个对象一个文件。
NetBeans 8.2上的PHP版本为7.0.13。
我做错了什么?
答案 0 :(得分:0)
您的接口和类位于不同的命名空间中。您可能需要在类中添加一个use语句。例如,您可以添加:使用Helpers \ Interfaces作为接口。这一行可以超出类定义:class Cache实现Interfaces \ Cache。
另请参阅:http://php.net/manual/en/language.namespaces.definitionmultiple.php