2013-09-20 1 views
0

Представьте себе У меня есть класс, как этотPHP, функция замены класса расширения

class MyClass { 
    private function func1() { 
     // Much code 
     func2(); 
     // Much code 
    } 
    private function func2() { 
     echo 'old class'; 
    } 
} 

было бы расширить этот класс и заменить функцию func2() там, так что в новом классе, func1 () будет использовать новый func2(). Как это:

class MyNewClass extends MyClass { 
    private function func2() { 
     echo 'new class'; 
    } 
} 

Но метод, который я описал все еще эхо «старый класс» для MyNewClass, но как можно было бы заменить родительскую функцию?

+0

Сделать 'protected' вместо' private', затем переопределить в классе нисходящим. – BlitZ

+0

Сделать защищенным в новом классе, в расширенном классе? – user902100

+1

Посмотрите документацию для видимости свойств в классах PHP: http://www.php.net/manual/en/language.oop5.visibility.php – piddl0r

ответ

0

Похоже, вы хотите запустить func2 из старого класса, но запустить новый код в func2 в новом классе. Для этого просто вызовите родителя в новой функции класса. Например:

private function func2() { 
    echo 'new class'; 
    parent::func2(); 
} 
0

Как отмечалось, используйте public или protected. Разница между этими двумя модификаторами можно найти here

class MyClass { 
    public function func1() { 
     // Much code 
     func2(); 
     // Much code 
    } 
    public function func2() { 
     echo 'old class'; 
    } 
} 

class MyNewClass extends MyClass { 
    private function func2() { 
     echo 'new class'; 
    } 
}