当前位置:  开发笔记 > 编程语言 > 正文

if(){}和if()之间的区别:endif;

如何解决《if(){}和if()之间的区别:endif;》经验,为你挑选了11个好方法。

......之间有什么不同吗

if ($value) {

}

...和...

if ($value):

endif;



1> Thomaschaaf..:

它们是相同的,但如果你的代码中有MVC并且不想在你的代码中有很多回声,那么第二个是很好的.例如,在我的.phtml文件(Zend Framework)中,我将编写如下内容:

value): ?>
Hello
asd): ?>
Your name is: name ?>

You don't have a name.


@alex它也可以用大括号括起来,但至少我个人觉得这样的事情更加清晰.因为他们知道它是if的结束,而不是某种循环的结束或其他东西.认为你有结束和结束或类似的东西.
我不会使用<?=?>,因为并不是所有服务器都支持它,特别是那些不允许你更改php.ini的共享托管服务器.
不知道为什么这个答案是最高的,因为它不是一个很好的例子(你可以通过花括号实现完全相同).
为什么"如果你不想在你的代码中有很多回声,第二个是伟大的"?我认为传统的语法`{}`也是如此.不需要额外的回声`<?php if(...){?> ... <?php} else {?> ... <?php}?>`.与`<?php if(...):?> ... <?php else:?> ... <?php endif?>`有什么区别?
相关点是<?php endif; ?> - 即使在前面的if/else和this语句之间有许多HTML行,你也可以确切地知道结束了什么.
我在你的示例帮助中看到使用替代语法来减少回声的数量.

2> dprevite..:

我个人真的很讨厌替代语法.大括号的一个好处是大多数IDE,vim等都有支架突出显示.在我的文本编辑器中,我可以双击一个大括号,它将突出显示整个块,这样我就可以看到它的结束位置并且很容易开始.

我不知道哪个编辑器可以突出endif,endforeach等.


这应该在PHP模板中使用,其中块的开头和结尾由大块外语分隔.如果您的IDE能够很好地理解PHP以解析它,那么它也应该将`endif`突出显示为块尾.如果没有,你就不会通过使用`}来购买任何东西,因为它无论如何都不会匹配.
Netbeans 7.x愉快地突出了匹配endforeach,endif等
大多数ide(至少是我使用过的)只突出显示{}

3> 小智..:

我想这就说明了一切:

这种替代语法非常适合在混合使用它们的情况下提高易读性(适用于PHP和HTML!).

http://ca3.php.net/manual/en/control-structures.alternative-syntax.php

当混合HTML和PHP时,替代sytnax更容易阅读.在普通的PHP文档中,应该使用传统的语法.


+1,很好的回答它的目的是什么.我个人认为这对已经混乱的语言来说是毫无意义的补充.

4> gahooa..:

在我们公司,处理HTML的首选方法是:


   HTML content here

   Other HTML content here

最后,它确实是一个选择并坚持下去的问题.


@Oddthinking:他为我工作的公司假设?

5> cregox..:

它们在功能上确实是相同的.

但是,如果endif距离记者太远,if我认为给它做一个引用评论是更好的做法.这样你就可以轻松找到它的开放位置.无论用什么语言:

if (my_horn_is_red or her_umbrella_is_yellow)
{

    // ...

    // let's pretend this is a lot of code in the middle

    foreach (day in week) {
        sing(a_different_song[day]);
    }

    // ...

} //if my_horn_is_red

这实际上适用于任何类似的"关闭事物"!;)

此外,一般来说,编辑更好地处理大括号,从某种意义上说,它们可以指向它打开的位置.但即便如此,也不会使描述性评论变得不那么有效.



6> Jeremy Ruten..:

您可以在官方文档中找到它:PHP:控制结构的替代语法



7> Harry Mustoe..:

我认为当你在视图脚本中混合使用ifs,fors和foreaches 时,它会更加清晰:

hasIterable ): ?>
    

Iterable

    iterable as $key => $val ):?>
hasScalar ): ?>

Scalar

scalar; $i++ ): ?>

Foo = Bar

Other

otherVal === true ): ?>

Spam

Eggs

而不是:

hasIterable ){ ?>
    

Iterable

    iterable as $key => $val ){?>
hasScalar ){ ?>

Scalar

scalar; $i++ ){ ?>

Foo = Bar

Other

otherVal === true ){ ?>

Spam

Eggs

这对于长控制语句尤其有用,在这些语句中,您可能无法从底部括号中看到顶部声明.



8> livefree75..:

我认为这取决于你的个人编码风格.如果您习惯使用C++,Javascript等,使用{}语法可能会感觉更舒服.如果您习惯使用Visual Basic,则可能需要使用if:endif; 句法.

我不确定一个人可以明确地说一个人比另一个人更容易阅读 - 这是个人偏好.我通常做这样的事情:


   

Foo!

Bar!

这是否更容易阅读:


   

Foo!

Bar!

是一个意见问题.我可以看到为什么有些人会觉得第二种方式更容易 - 但前提是你一直没有使用Javascript和C++进行编程.:)



9> Paulo..:

如果可能的话,我会使用第一个选项,无论新选项如何.语法是标准的,每个人都知道.它也向后兼容.



10> Itay Moav -M..:

两者都是一样的.

但是:如果你想在视图文件(MVC的V)中使用PHP作为模板语言,你可以使用这种替代语法来区分为实现业务逻辑而编写的php代码(MVC的控制器和模型部分)和gui逻辑.当然它不是强制性的,你可以使用你喜欢的语法.

ZF使用这种方法.



11> Rob Kennedy..:

两种语法之间没有技术差异.替代语法不是新的; 它至少可以支持PHP 4,甚至可能更早.

您可能更喜欢替代形式,因为它明确说明哪个控制结构正在结束:endwhile例如,只能终止一个while块,而如果遇到一个大括号,它可能会关闭任何东西.

但是,您可能更喜欢传统的语法,如果您使用的编辑器对其他类C语法中的大括号有特殊支持.例如,Vim支持几个键击,用于导航到匹配的大括号以及大括号分隔的块的开头和结尾.替代语法会破坏该编辑器功能.

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有