Рубрики
Uncategorized

Пример делегирования реализации метода PHP call()

Автор оригинала: 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/”