在php中读取函数参数的最佳方法是什么?

时间:2015-02-21 17:08:43

标签: php variables

在过去的几年里,我使用这个公式来读取我的php类中的方法中的参数:

$params = func_get_args();
if(is_array($params[0])){
    foreach($params[0] as $key => $value){
        ${$key} = $value;
    }
}

它工作正常,好像我传递了这样的东西:

$class->foo(array('bar' => 'hello', 'planet' => 'world'));

我将在我的foo方法中将变量 bar planet 及其相对值。 但我要问的是:有没有更好的方法呢?例如,我可以将其封装在另一种方法中吗?

更新

所以,考虑到 rizier123 评论,并在与我的一位朋友聊天后,我确定了我认为传递参数的更好方法。据我所知,我总是只将一个参数传递给函数,它总是一个数组,不需要调用func_get_args()函数,但我最好总是期待一个数组,默认情况下,我设置一个空数组,如下例所示:

class MyClass{
    public function MyMethod(array $options = array()){            
        extract($options);             
    }
}

$my = new MyClass();
$my->MyMethod(array('name' => 'john', 'surname' => 'doe'));
// Now MyMethod has two internal vars called $name and $surname

3 个答案:

答案 0 :(得分:1)

是的,您可以使用extract()将数组转换为变量,如下所示:

extract($params[0]);

答案 1 :(得分:1)

PHP 5.6有一项新功能,它被称为 Variadic功能 http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list

function foo(...$arguments) {
    foreach ($arguments as $arg) {
        var_dump($arg);
    }
}

foo('1', 2, true, new DateTime('now'));

答案 2 :(得分:0)

您可以使用PHP内置函数extract()执行此操作。

以这种方式使用:

$var_array = array("color" => "blue",
                   "size"  => "medium",
                   "shape" => "sphere");
extract($var_array);

当您运行echo $color, $size, $shape;时,它会输出:

blue, medium, sphere
相关问题