2015-10-27 3 views
1

Я хочу знать, как получить доступ к методу ıA подкласс класса, когда я нахожусь в другом подклассе того же класса ... Например:PHP: Метод доступа в подклассе

class foo { 

} 

class bar extends foo { 
    public function something() { 
     //do something here 
    } 
} 

class soap extends foo { 
    $this->something(); //This is the method I wanna call... 
} 

Как видите, я хочу получить доступ к подклассу из другого подкласса. Как это сделать в PHP?

+0

@Federico это может быть любой метод ... Я просто хочу знать, как получить доступ к методу в баре из любого другого подкласса – odannyc

+1

, ваш класс мыла должен расширить класс foo. –

+1

Если 'bar :: something()' статично, вам нужно будет иметь * экземпляр * 'bar', чтобы иметь возможность вызвать' something() '. 'soap' и' bar' не имеют * ничего * друг с другом. Тот факт, что они имеют один и тот же родительский класс, не имеет никакого значения. –

ответ

3

Вы можете сделать это непосредственно, но только еслиsoap также подкласс bar:

class soap extends bar { 
    public function someFunction() 
    { 
     $this->something(); // This will work 
    } 
} 

Если это не, у вас еще есть возможность: получить экземпляр bar и затем вызвать метод на нем:

class soap extends foo { 
    public function someFunction(bar $bar) 
    { 
     $bar->something(); // This will also work 
    } 
} 

Запрет на то, что вы ничего не можете сделать. Поскольку bar не находится в цепочке наследования soap, нет способа ссылаться на something, используя только $this из любых методов soap.

+0

Этот второй способ работал, бросая экземпляр в метод. Благодаря! – odannyc