在 php 中读取函数参数的最佳方法是什么?
What's the best way to read parameters of a function in php?
在过去的几年里,我在 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
是的,您可以使用 extract()
将数组转换为变量,如下所示:
extract($params[0]);
您可以使用 PHP 内置函数 extract()
。
这样使用:
$var_array = array("color" => "blue",
"size" => "medium",
"shape" => "sphere");
extract($var_array);
当你 运行 echo $color, $size, $shape;
它输出:
blue, medium, sphere
PHP 5.6 中有一项新功能,称为 可变参数函数
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'));
在过去的几年里,我在 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
是的,您可以使用 extract()
将数组转换为变量,如下所示:
extract($params[0]);
您可以使用 PHP 内置函数 extract()
。
这样使用:
$var_array = array("color" => "blue",
"size" => "medium",
"shape" => "sphere");
extract($var_array);
当你 运行 echo $color, $size, $shape;
它输出:
blue, medium, sphere
PHP 5.6 中有一项新功能,称为 可变参数函数 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'));