Задать вопрос

PHP chaining

Здравствуйте!
Наверняка многие из вас знакомы с Zend Framework и знают об использовании метода цепочек в классах у него. Мне бы хотелось знать, можно ли каким-то волшебным образом реализовать класс на php таким образом, чтобы… Чтобы я наследовался от этого класса, писал свои методы и мой волшебный класс реализовывал цепочку, то есть вызывал мой метод, обрабатывал и сам возвращал $this. Это не лень писать лишнюю строку — пока это просто интерес. Важно, чтобы мне не приходилось давать методам класса каких-либо префиксов или чего-то похожего.
  • Вопрос задан
  • 2841 просмотр
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Skillbox
    PHP-разработчик. Базовый уровень
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 3
gaelpa
@gaelpa
public function __call($method,$args){
   if (!in_array($method,$this->publicChainingMethods)) return null;
   call_user_func_array ( array($this,$method.'_real') , $args );
   return $this;
}

типа того?
Ответ написан
xmdy
@xmdy Автор вопроса
Все просто, для работы __call на существующих функциях их достаточно сделать private или protected, и они будут доступны для вызова, но! Тогда появляется дырка в безопасности — вы можете вызывать любые методы. Как решить проблему?
Ответ написан
xmdy
@xmdy Автор вопроса
Лучше успокоиться и просто делать какой-нибудь префикс?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы