调用其名称中带参数的函数

时间:2014-10-01 10:09:44

标签: php laravel-4

您好我使用laravel 4.我想知道如何调用函数:

$model->trans('name'), $model->trans('title')

作为

$model->transName(), $model->transTitle()

所以这意味着我想用参数name,or title调用函数trans,但附加了函数名和参数。

当我们做这样的事情时,它就像Eloquent一样:whereEmail(), whereId()

我希望这是有道理的。

谢谢

1 个答案:

答案 0 :(得分:0)

好的,如果您确定需要它,这里是使用魔术方法的工作示例

<?php

class Model 
{
    public function __call($func, $args)
    {           
        if(strstr($func, 'trans'))
        {
            return $this->trans(strtolower(str_replace('trans', '', $func)));
        }

       return parent::__call($func, $args);
    }

    public function trans($field)
    {
        return $field;
    }
}

$m = new Model();

$m->transSomething();

当调用未定义的方法时,它将检查方法名称是否以“trans”开头,如果是,则在开头时将其传递给$this->trans()而不使用“trans”。

但在我看来,$model->trans('somefield')的方式更好。