哪种更好的PHP风格/更传统?

时间:2012-05-30 02:36:35

标签: php coding-style styles

我正在学习PHP,我喜欢学习用常规/更好的风格写东西,我搜索过,但我无法找到任何关于这个主题的问题(或者更有可能我找不到正确的关键词来找到它们。)

我编写的第一种语言是Java,显然你使用instance.method();方法。我不确定在PHP中我是否应该坚持使用方法调用中没有间距的Java(例如PHP中的$this->displayTitle();)或者我应该将其分开,这对我来说很奇怪,但我想看起来更好($this -> displayTitle();)。

其次,我的印象是你可以使用串联或纯内联插入来显示字符串文字中的变量。但是哪种风格更好?我更喜欢它内联,因为它看起来更好而没有突然停止,但同样,我喜欢使用传统/最好的东西。 (为了更清楚起见,我说的是echo "<title>$var</title>";echo "<title>".$this->title."</title>";。)

非常感谢!

6 个答案:

答案 0 :(得分:2)

由于没有真正的答案,我已将此标记为促进讨论。然而,这就是我编码的方式,因为它对我来说最有意义:

$vars = array(
    1 => a,
    2 => b,
    3 => c
);

foreach ($vars as $var) {

    echo '<p>'.$var.'</p>';

}

为了说明您的类/对象示例,我使用$object->var

就我个人而言,我不喜欢新行上的{开头,{}if即使它是一行而且从不使用{{1} } model。

如果您来自java,您可能需要关闭允许if ($clause) : do something; endif;评估为$var = 3true,{{1}的“模糊变量”类型如果我没弄错的话,甚至是int。但是我很懒,所以我喜欢它可以做到这一切,但我已经被抓了几次。

基本上,它归结为你认为最好的东西。但是,如果您正在寻找基于特定风格的指南,则总是会有Wordpress Coding Standards

答案 1 :(得分:2)

这个问题没有一个答案。

有许多建议通常与特定项目相关联。在一个更大的项目中,重要的是你要保持与该项目的编码风格一致。 WordpressDrupalJoomlaSymfonyCodeIgniterZend Framework等都会提出建议,而且没有两个是相同的。

作为程序员,您有责任适应您所涉及的项目。从你看到的每个“标准”中获取你喜欢和赞同的东西,并建立你自己的个人编码风格,你可以促进和捍卫。这就是我们所做的一切。

我的偏好包括以下部分内容:

<强>物件:

$foo->barBaz();

<强>间距:

if (condition) {
  statement;
} else {
  statement;
}

输出(我从不使用echo。)

printf("Intro: %s (%.2f)\n", $somestring, $somefloat);

因人而异。

答案 2 :(得分:1)

取决于你。我肯定在大多数地方见过$this->displayTitle();。我个人喜欢Zend Framework编码风格,这是我第一次编程经验。

双字符串的目的是能够“评估”这些双引号内的内容。使用连接会稍微慢一些,因为字符串的所有前一个元素都将被复制到新字符串中。

http://framework.zend.com/manual/en/coding-standard.coding-style.html

答案 3 :(得分:1)

你也可以在回音时使用逗号,根据phpbench实际上更快 echo "<title>", $this->title, "</title>";

答案 4 :(得分:1)

我从未见过有人用空格编写方法调用。我坚持使用$this->method()

对于字符串,我认为没有公认的约定。我个人不喜欢变量扩展,所以我通常使用单引号字符串(其中变量不会被扩展)和:

  1. .
  2. 连接
  3. 使用sprintf()
  4. 将值插入格式化字符串
  5. 构建一个字符串数组,然后使用implode()
  6. 将它们全部连接起来

    这实际上取决于哪个更好。如果要从许多短字符串构建长字符串,最好使用implode而不是许多.操作。如果您正在构建类似于充满类似图案行的表格,sprintf非常方便。

    另一个有用的提示,特别是关于echo的提示,是:

    之间存在差异
    echo $string1 . $string2 . $string3;
    

    echo $string1, $string2, $string3;
    

    使用,时,每个字符串会一个接一个地回显。如果使用.,则必须首先连接所有字符串,然后回显结果。因此使用,更好,因为它避免了那些额外的连接操作。

答案 5 :(得分:0)

如果您的代码涉及回显大量的html

,我会做类似的事情
<hmlt>
....
<title><?php echo $var;?></title>
....
....
....
</html>

你可以通过终止你的php标签?>而不是在变量中放入大量文本来逃避到html中,由于使用单引号或双qoutes而导致混淆,(这只是我的偏好)

<?php
echo "<div html taggs here><div><div>".$variable_here."</div><div>".$another_variable_here."</div></div></div>";
?>

VS

<div>
    <div>
        <div>
        <?php echo $variable_here; ?>
        </div>
        <div>
        <?php echo $another_variable_here;?>
        </div>
    </div>
</div>

您认为哪个更容易阅读?