如何为“几乎”相同的代码提供大量类方法

时间:2009-02-10 10:21:37

标签: php oop

我有这个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 个答案:

答案 0 :(得分:14)

您可以覆盖类的__call()方法,这是在调用不存在的方法时将使用的“魔术方法”。

答案 1 :(得分:3)

使用__call魔术方法,如下所示:

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

对于没有显式函数定义的任何函数,将调用此函数。

请注意,$ args是一个数组,包含函数调用的所有参数。