Автор оригинала: David Wong.
В примере этой статьи описано, как метод PHP call () реализует делегирование. Чтобы поделиться с вами для вашей справки, следующим образом:
Делегирование означает, что объект пересылает или делегирует запрос другому объекту, а доверенная сторона обрабатывает запрос для исходного объекта. Это похоже на наследование и похоже на способ вызова родительского класса в подклассе.
Однако при наследовании связь между родительским классом и дочерним классом фиксирована, и использование делегатов может изменять объекты, используемые при выполнении кода, что означает, что делегаты обладают большей гибкостью, чем наследование.
1. Создайте класс для форматирования и вывода информации класса person:
class PersonWriter{
public function writeName(Persion $p){
print $p->getName()."\n";
}
public function writeAge(Persion $p){
print $p->getAge()."\n";
}
}
2. Следующий набор кода использует метод \\u call() и объект класса personwriter для реализации класса person:
class Person {
private $writer;
function __construct(PersonWriter $writer;){
$this->writer = $writer;
}
function __call($methodname,$args){
if(method_exists($this->writer,$methodname)){
return $this->writer->$methodname($this);
}
}
//...
}
В коде класс person принимает объект person writer в качестве параметра конструктора и сохраняет его в переменной свойства writer.
останься __позвони()
Поэтому, если класс person называется так:
$person = new Person(new PersonWriter()); $person->writeName();
__call() Будет вызван метод. Затем он смотрит в объект person writer Метод writeName() и вызовите его.
Для получения дополнительной информации о PHP читатели, интересующиеся PHP, могут обратиться к темам нашего веб-сайта: Учебник по структуре данных и алгоритмам PHP, краткое описание алгоритма программирования PHP, краткое описание использования строк PHP, навыки работы с массивами PHP, общий алгоритм обхода PHP и краткое описание навыков и краткое описание навыков математических операций PHP.
Я надеюсь, что эта статья будет полезна для программирования на PHP.
Оригинал: “https://developpaper.com/php-call-method-implementation-delegation-example/”