
Вызов защищенных и приватных методов класса

Вызов защищенных и приватных методов класса
Продолжение предыдущей статьи, где мы меняли значения приватных свойств класса. Сегодня мы пойдем дальше и будем вызывать приватные методы класса. Как и в случае с приватными свойствами, рекомендации по использованию этого трюка прежние: никогда и ни при каких условиях так не делайте.
Для тестирования возьмем простой класс с приватным методом, который в нормальных условиях можно вызвать только через официальный публичный метод. Для большего эффекта в нем будет дополнительно использоваться приватное свойство класса.
Code (PHP) : Убрать нумерацию
- class MyClass {
- private $password='paSSw0Rd';
- public function login($login) {
- $this->fn_priv($login, $this->password);
- }
- private function fn_priv($login, $password) {
- echo 'Logged with '.$login.'@'.$password;
- }
- }
Code (PHP) : Убрать нумерацию
- // Создать экземпляр класса
- $my_class = new MyClass;
- $my_class->login('superuser');
- // -> Logged with superuser@paSSw0Rd
- $reflection = new ReflectionMethod($my_class, 'fn_priv');
- // Открыть доступ к приватному методу класса
- $reflection->setAccessible(true);
- // Вызвать приватный метод класса
- $reflection->invokeArgs($my_class,
- // Параметры вызова
- array(
- 'admin', 'SupaDupaPassa'
- )
- );
- // -> Logged with admin@SupaDupaPassa
- // Закрыть доступ
- $reflection->setAccessible(false);
Просмотров: 861 | Комментариев: 0
Метки: PHP

Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
Комментариeв нет

Добавить комментарий
Заполните форму для добавления комментария
