最新消息:文章中包含代码时,请遵守代码高亮规范!

symfony2 编码标准

Symfony2 Charlie 1711浏览 0评论

Symfony2 遵循 PSR-0PSR-1PSR-2 规范。由于图片或代码可以胜过千言万语,这里是符合Symfony2编码标准的一个简单的例子:

<?php
 
/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
 
namespace Acme;
 
/**
 * Coding standards demonstration.
 */
class FooBar
{
    const SOME_CONST = 42;
 
    private $fooBar;
 
    /**
     * @param string $dummy Some argument description
     */
    public function __construct($dummy)
    {
        $this->fooBar = $this->transformText($dummy);
    }
 
    /**
     * @param string $dummy Some argument description
     * @param array  $options
     *
     * @return string|null Transformed input
     *
     * @throws \RuntimeException
     */
    private function transformText($dummy, array $options = array())
    {
        $mergedOptions = array_merge(
            array(
                'some_default' => 'values',
                'another_default' => 'more values',
            ),
            $options
        );
 
        if (true === $dummy) {
            return;
        }
 
        if ('string' === $dummy) {
            if ('values' === $mergedOptions['some_default']) {
                return substr($dummy, 0, 5);
            }
 
            return ucwords($dummy);
        }
 
        throw new \RuntimeException(sprintf('Unrecognized dummy option "%s"', $dummy));
    }
}

结构

  •  每个逗号分隔符后面添加一个空格;
  • 比较运算符(==&&, …)前后要添加一个空格;
  • 数组的每一项后添加一个逗号,即使在最后一个;
  • 添加return语句之前添加一个空行,除非返回是在一个单独的语句组中(如if语句) ;
  • 使用大括号来表示控制结构体,即使大括号可以省略;
  • 每个文件定义一个类,这并不适用于那些不打算从外部实例化的类,因而不必去关心PSR- 0标准;
  • 方法之前,声明类的属性;
  • 首先声明的公共方法,然后声明保护方法,最后声明私有方法。为了增加代码的可读性,构造函数 和 PHPUnit的setUp 、tearDown方法应该首先被声明;
  • 不管构造函数的参数有多少,实例化类时都需要使用圆括号;
  • 异常消息字符串应该使用sprintf被连接起来。

 

命名约定

  • 变量,函数和方法名,属性都采用小驼峰命名规则,没有下划线;
  • 选项名称和参数名称使用下划线;
  • 所有类都使用命名空间;
  • 抽象类使用 Abstract 前缀。请注意一些早期Symfony2的类不遵循这一惯例,且并没有被重命名为向后兼容。但是,所有新的抽象类都必须遵循这个命名约定;
  • 接口使用 Interface 前缀;
  • traits使用 Trait 前缀;
  • 异常使用 Exception 前缀;
  • 文件名使用字母、数字和下划线;
  • 在PHPDocs和casting中,使用bool(而不是boolean或Boolean),int(而不是integer),float(而不是double或real);
  • 不要忘了看更详细的约定文档(更主观的命名注意事项)。

 

服务命名约定

  •  一个服务名称包含组,以圆点分隔;
  • bundule的别名为第一个组(e.g. fos_user);
  • 服务和参数名称使用小写字母;
  • 组名称使用下划线符号;
  • 每个服务都有一个相应的参数名称包含类名,遵循 SERVICE NAME.class 约定。

 

文档

  • 所有的类,方法,和函数都需要添加一个PHPDoc注释块;
  • 如果方法没有返回任何东西,@return 标签可以忽略;
  • 不使用@package和@subpackage注释。

转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/7781.html


pay_weixin
pay_weixin
微信打赏
pay_weixin
支付宝打赏
感谢您对作者charlie的打赏,我们会更加努力!    如果您想成为作者,请点我

您必须 登录 才能发表评论!