Как я могу дать большое количество методов класса "почти" один и тот же код - PullRequest
2 голосов
/ 10 февраля 2009

У меня есть этот класс PHP

   class myclass{
       function name($val){
           echo "this is name method and the value is".$val;
       }

       function password($val){
           echo "this is password method and the value is".$val;
       }
   }

и вот как это использовать:

  $myclass= new myclass();
  $myclass->name("aaa")//output: this is name method and the value is aaa

работает нормально, потому что у меня просто есть 2 метода "имя" и "пароль" Что если бы у меня было огромное количество методов, было бы нелегко добавить эти методы в мой класс и написать один и тот же код для каждого метода, я хочу изменить свой класс, чтобы каждый метод давал одинаковый вывод помимо имени метода ? и я не хочу писать все детали для всех методов, потому что они почти одинаковы, возможно ли это в PHP? Я хотел бы, чтобы я был ясен:)

Ответы [ 2 ]

14 голосов
/ 10 февраля 2009

Вы можете переопределить метод __call() для класса, который является «магическим методом», который будет использоваться при вызове несуществующего метода.

3 голосов
/ 10 февраля 2009

Используйте магический метод __call, например:

class myclass
{
    function __call($func, $args)
    {
        echo 'this is ', $func,  'method and the value is', join(', ', $args);
    }
}

Эта функция будет вызываться для любой функции, у которой нет явного определения функции.

Обратите внимание, что $ args - это массив, содержащий все параметры, с которыми вызывается функция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...