我有一个扩展普通类的单例类。 (1类)
普通类有两个非静态函数,叫做set()和get()。 (等级2)
获得单例(Class1)实例的第三个类(Class3)使用set()和get()通过单例。它使用Class3工作正常,但有没有办法在父类的单例内使用get()方法来查看“第三”类将它设置为什么?
我似乎无法调用get,因为它不是静态的。如果这令人困惑,请告诉我。
class Class1 {
public function doThings(){
$this->view->set("css","1234");
}
}
class Singleton extends Class3 {
static public function instance()
{
if (!self::$_instance instanceof self) {
self::$_instance = new self();
}
return self::$_instance;
}
//I want this singleton to call get("css") and have it return the value.
}
class Class3{
public function get(arg){//implementation }
public function set(arg){//implementation }
}
答案 0 :(得分:2)
我从来没有见过特定的类只是为了扩展它应该是单身的类的单例。相反,试试这个:
class Class3
{
private $_instance;
static public function instance()
{
if (!self::$_instance instanceof self) {
self::$_instance = new self();
}
return self::$_instance;
}
public function get(arg){//implementation }
public function set(arg){//implementation }
}
// Calling code
// I want this singleton to call get("css") and have it return the value.
Class3::getInstance()->set('css', 'border:0');
Class3::getInstance()->get('css');
答案 1 :(得分:0)
我刚刚解决了我自己的问题,对于迟到的回复感到抱歉。
我在单身人士中所做的只是以这种方式调用get():
self::instance()->get("css");