我应该在 CakePHP HtmlHelper 的链接参数中使用数组还是字符串?
CakePHP HtmlHelper link()
方法接受 2 种类型的变量作为第二个参数(链接 URL 参数)。
现在我想知道是否使用数组作为参数,例如
array('controller'=>'users','action'=>'login')
比使用字符串慢,例如 '/users/login'
。因为 Helper 不必解析数组,只需显示链接即可。
如果是这样,那么 link()
方法的目的是什么?目前,我使用 HtmlHelper::url()
方法和常规 来显示我的所有链接,以保持我的模板干净!
请纠正我:)
CakePHP HtmlHelper link()
method accepts 2 types of variable as second parameter (the link URL param).
Now I wonder if using array for the param, like
array('controller'=>'users','action'=>'login')
is slower than using string, like '/users/login'
. Because Helper won't have to parse the array, just display the link.
If it is so, then what is the purpose of link()
method? For now, I am using HtmlHelper::url()
method with a regular <a>
to display all of my links, to keep my template clean!
Please correct me :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
原因之一是反向路由:例如,如果将 '/blah' 路由到 array('controller'=>'articles','action'=>'index')。当你用 array('controller'=>'articles','action'=>'index') 创建链接时,cake 会自动输出 '/blah'。听起来可能不太有趣;但如果稍后将路由更改为“/foo”,则 link() 方法可以自动将输出更改为“/foo”。
另一个原因是:使用数组,您可以以编程方式构建 url。它不仅仅是控制器和操作,您还拥有前缀、命名参数、您自己的自定义参数(如果您在路由中创建)等。
现在,我使用 HtmlHelper::url() 方法和常规 显示我的所有链接,保持我的模板干净!
好吧,那么你就让自己变得更难了:)One reason is reverse routing: For examples, if you route '/blah' to array('controller'=>'articles','action'=>'index'). When you create the link with array('controller'=>'articles','action'=>'index'), cake can automatically output '/blah'. It may not sound very interesting; but if later on you change the route to '/foo', then the link() method can automatically change the output to '/foo'.
Another reason is: using array you can build the url in a programmatic fashion. It's not just controller and action, you also have prefix, named parameters, your own custom parameters if you create in routes, etc.
For now, I am using HtmlHelper::url() method with a regular <a> to display all of my links, to keep my template clean!
Well, you are making it harder on yourself then :)这提供了一种一致且灵活的方法来创建超链接、引用控制器/操作以及通过关联数组指定动态
选项
。除非您迭代地创建链接,否则性能不应该成为问题。即使如此,数组管理和内爆通常也比字符串连接更有效。This provides a consistent and flexible method for creating hyperlinks, referencing controllers / actions and specifying dynamic
options
via associative arrays. Performance shouldn't be an issue unless you are iteratively creating links. Even then, array management and implosion is usually much more efficient than string concatenation.