使用大括号中的PHP代码组织使用大括号中的PHP代码组织(Use curly brackets to

2019-05-12 02:20发布

是否有可能以包围括号内的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

?>

Answer 1:

如果你花括号内括起来的PHP代码的行为不会改变。 但是,您不能使用大括号里面的一些PHP语句:

  • namespace的声明;
  • 命名空间use声明,以别名或进口任何名称;
  • 全球const声明;
  • __halt_compiler()

这意味着,下面的脚本将工作:

<?php
const x = 5;
echo x;

但下面不会编译:

<?php
{
  const x = 5;
  echo x;
}


Answer 2:

是的,但它不会创建一个新的局部范围。 这不是通常会被完成。 通常人们纪念与评论这样的块。

更新:

它采取了一些挖掘,找到说明书中对它的引用,但在这里它是:

http://www.php.net/manual/en/control-structures.intro.php

任何PHP脚本都是由一系列语句的。 语句可以是一个赋值语句,一个函数调用,一个循环,一个条件语句或者甚至是什么都不做的语句(空语句)。 语句通常以分号结束。 此外,声明可以通过封装一组大括号的语句被组合成一个语句组。 语句组本身就是一个声明为好。 各种语句类型本章描述。

这里的关键是语句可以通过封装一组大括号的语句被组合成一个语句组

我也有找的参考变量范围 ,因为它涉及到这种情况,但该手册中并没有具体提到它,但是你可以认为它是这样的:

在PHP中,函数和类创建变量范围。 你可以阅读有关在这里 。 但是(如上所述)的声明组没有。 不要以为一个语句组的功能等(或类)包裹支架的花括号,但认为他们喜欢的花括号是包裹语句组控制结构( ifforwhileswitch等) - 因为这是他们的确切位置。 很明显,如果您使用的是if语句(或任何其他控制结构)括号不会引入新的范围,它们仅仅是包装器的语句块。



Answer 3:

在一个项目中,我的工作,我使用语句组来表示结构 - 在我的情况下,节点之间的父/子关系建立在路由器:

$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');
    }
}

```

在内部,这将构建一个层次结构,如:

/admin
  /upload
  /menu
    /load
    /save

呼叫route()在这个例子中创建了一个孩子-这样的代码创建了一个具有树形结构的模型(路由器内),但是代码的结构并没有反映这一点。

我用花括号这里为了使代码更易读,因为读书不花括号和缩进代码将是非常困难的:

$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');

缩进在这种情况下,真正的澄清所发生的事情,我想。



Answer 4:

我也这样做,只是我的文本编辑器(科莫多编辑8.5)的感觉。 这不是一个“坏的理由”或“坏编码”,如果它可以帮助你,不会引起任何问题,如果没有其他简单的方法来做到这一点。

我解决一个工作解决该问题:

if(1 == 1){ //always executing if function
//whatever you want to add
}
#

在结尾添加#,防止倒塌的大括号下面的所有空行我的编辑。 这有助于进一步构建代码。



文章来源: Use curly brackets to structure code in PHP