是否可以将PHP中的代码片段括在方括号中(而不将代码片段用作函数)?
下面的代码是否与没有大括号时的行为方式相同?或者,根据括号内或括号外使用的代码类型,是否会出现任何问题?
例如,这是否会:
<?php
// First Code-Block
{# several lines of code
}
// Second Code-Block
{# another several lines of code
}
?>
始终以相同的方式执行以下操作:
<?php
// First Code-Block
# several lines of code
// Second Code-Block
# another several lines of code
?>
更新:的目标之一,也是在“My1”的评论中所说的,是构造大的代码段,特别是因为大多数IDE都允许你选择折叠括号之间的行。
特别是考虑到“dragondreamer”的"Luke Mills“的答案,我对它进行了一些尝试,到目前为止,我还没有遇到任何副作用。当然,这可能会在未来的新PHP版本中发生变化,但"Luke Mills”的答案给出了值得关注的很好的指针。
发布于 2016-03-24 21:57:46
如果将PHP代码放在大括号中,它的行为不会改变。但是,您不能在花括号中使用某些PHP语句:
用于为任何名称添加别名或导入任何名称的
namespace
declarations;use
声明;const
any这意味着,以下脚本将起作用:
<?php
const x = 5;
echo x;
但以下代码将无法编译:
<?php
{
const x = 5;
echo x;
}
发布于 2013-02-20 10:08:32
是的,但它不会创建新的本地作用域。这不是通常会做的事情。通常人们会用注释来标记这样的块。
更新:
我花了一点功夫才在手册中找到了它的参考,但这里是:
http://www.php.net/manual/en/control-structures.intro.php
任何
脚本都是由一系列语句构建而成的。语句可以是赋值、函数调用、循环、条件语句,甚至是什么也不做的语句(空语句)。语句通常以分号结尾。此外,通过用大括号封装一组语句,可以将语句分组到语句组中。语句组本身也是一个语句。本章将介绍各种语句类型。
这里的关键是可以通过用大括号封装一组语句来将语句分组到一个语句组中。
我还查找了与这种情况相关的variable scope的参考资料,但手册中并没有特别提到它,但是您可以这样认为:
在PHP中,函数和类创建一个变量作用域。您可以阅读有关该here的内容。但是语句组(如上所述)不需要。不要把语句组的花括号看作是函数(或类)的括号,而是把它们看作是用来包装语句的花括号(一组控制结构(if
、for
、while
、switch
等)),因为它们就是它们。很明显,如果您使用的是if
语句(或任何其他控制结构),那么大括号不会引入新的作用域,它们只是语句块的包装器。
发布于 2015-07-22 16:29:57
在我正在做的一个项目中,我使用语句组来表示结构-在我的例子中,节点之间的父/子关系在路由器中创建:
$router = new Router();
$admin = $router->route('admin');
{
$upload = $admin->route('upload')->post('upload');
$menu = $admin->route('menu');
{
$menu->route('load')->get('load');
$menu->route('save')->get('save');
}
}
Internally, this builds a hierarchical structure like:
```javascript
/admin
/upload
/menu
/load
/save
Calling `route()` in this example creates a child - so the code creates a model (inside the router) which has a tree structure, but the structure of the code does not reflect that.
I'm using curly braces here to make the code more legible, since reading the code without curly braces and indentation would be quite difficult:
```javascript
$router =新路由器();
$admin = $router->route('admin');
$upload = $admin->route('upload')->post('upload');
$menu =$admin->路由(‘menu’);
$menu->route('load')->get('load');
$menu->route(‘保存’)->get(‘保存’);
我认为,这种情况下的缩进确实清楚地说明了发生了什么。
https://stackoverflow.com/questions/14971123
复制相似问题