php - 如何以任意顺序使用 PHP 函数或方法参数?

标签 php symfony method-parameters

假设我用这样的方法定义类:

class Test {
    public function doStuff($a, $b, $c) {
    // -- Do stuff --
    }
}

是否可以使用此方法但参数顺序不同,如下所示:

$test = new Test();
$test->doStuff($b, $c, $a);

他们会有相同的名字,只是顺序不同。

我看到 Symfony2 可以用它的调度器来做,你可以按照你想要的任何顺序使用参数。 链接:Symfony2 controller can do it

问题是,如何让它发挥作用? Symfony2 如何调用适当的 Action Controller ,然后它可以按照您喜欢的任何顺序接受参数?

编辑: 我不能使用数组,而且我知道 php 不使用命名参数。但 Symfony2 以某种方式设法做到了。

最佳答案

我认为您误解了 Symfony 的意思。您不能以任何顺序将参数传递给 Controller ​​操作,它必须按特定顺序。然而,他们正在做的是动态的,是弄清楚您的路由参数在函数定义中的顺序。

比如我们定义一个路由:

pattern:      /hello/{first_name}/{last_name}
defaults:     { _controller: AcmeHelloBundle:Hello:index, color: green }

在路由中,参数被命名为first_namelast_namecolor

他们的意思是,您对操作中的参数使用什么顺序并不重要。

以下每一个都是等价的:

public function indexAction($first_name, $last_name, $color) {...}
public function indexAction($color, $last_name, $first_name) {...}
public function indexAction($last_name, $color, $first_name) {...}

由于您的参数与路由中的参数同名,Symfony 根据您的定义确定参数的正确顺序

如果您要手动调用以下操作:

public function indexAction($first_name, $last_name, $color)

那么参数仍然必须$first_name, $last_name, $color 的形式传递,而不是以任何其他顺序传递。使用不同的顺序只会将错误的值与参数相关联。 Symfony 不关心你定义函数的顺序,因为它决定了顺序,因为你的路由参数必须与你的方法参数命名相同。

希望这能消除困惑。

关于php - 如何以任意顺序使用 PHP 函数或方法参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12981679/

相关文章:

c# - 如何在 C# 中将对 STATIC 方法的引用作为函数参数传递?

java - 服务层: What to return if query argument is null?

java - 在方法定义中使用 @deprecated 并更改参数类型

php - 打字错误3 : Add LINK tags to CSS Files in the HEAD tag from within a Typo 3 extension

php - 如何在 pdf 文件中包含 s3 url

Symfony2 使用 NotFoundException 消息

php - 按 Doctrine QueryBuilder 中的计算字段排序

symfony - Simfony2 实体字段类型中从 Doctrine Query 到 QueryBuilder

php - 数据库全选

php - 提交表单并使用 PHP 通过电子邮件发送