美文网首页
PHP代码规范

PHP代码规范

作者: 木云先森 | 来源:发表于2020-04-23 19:12 被阅读0次

概论

1.主要依据的是①PSR-1、②PSR-12、③SonarQube的php规则部分、④PEAR规则、⑤Symfony编码规则,下面是链接(SonarQube好像只能在服务里面下插件看规则)

PSR-1
PSR-12
PEAR规范
Symfony规范

2.规范的意义?

①代码规范和设计规范还不是一件事情。设计规范讲的是如何拆分类,设计类,更好的做业务实现,更好的做扩展,更好的应对经常变化的需求。而代码规范是更细的讲如何写代码,如何定义类,如何写控制语句等等。

②遵守规范,可以增加代码可读性,也能让大家写的代码能够更加的整齐划一,旁人也能更好的支持或修改

③根据工作经验来看,减少一些应该怎么写的时间消耗。比如大括号到底是和类的关键词放一行,还是另起一行呢,心里有疑问,就会降低专注度。

注意事项

1.PSR是啥?

PHP Standards Recommendation,就是php-fig组织定的一套规范。

2.为啥要用PSR作为主要的参考依据和规范标准?

  1. 嗯...因为现在流行的新型框架的作者,都是参与者。php不像java那样,有那么多的大厂在使用,他们会自己定义规范,比如阿里的JAVA规范
  2. Symfony编码规则也是基于PSR。补充了一些自己的标准
  3. PEAR的话,讲实话还是有点太过老旧,有些规范和PSR还有冲突。

3.PSR就这2个规范吗?

肯定不是,现在总共有20个规范(包括草案),其中3个放弃的,2个不推荐的,2个草案

①草案都是PHPDoc相关的,估计也是受到java的很大影响

②里面有相当一部分,是在讲HTTP消息的方式的,新型的php应用,比如PSR-11(容器接口),PSR-14(事件调度)。还有讲了缓存相关的

③其实相当一部分都是框架帮忙给封装好了,缓存的规则和算法很多,也不一定要PSR的规范就很合适

④所以我们主要看的还是代码规范的PSR-1,PSR-12,还有就是自动加载的PSR-4(也是框架已经应用,不过可以知道自己框架上加自己的组件)

4.为啥代码规范会有2个定义,而不是一个定义标准就结束?

因为php再进步,再不断的变化,所以写法和规则也要多一些扩展(前面的前置只是PHP新特性有说明)。所以PSR-1是基础编码规范,PSR-12是扩展编码规范。

规范开始(激动人心的时刻)

1.文件整体规范

①Files MUST use only <?php and <?= tags.(现在我们特别强调使用<?php的方式)

②Files Must use only UTF-8 without BOM for PHP code.

③文件结尾必须使用空换行符结尾

④?>结尾不需要

2.书写相关

①代码必须使用4个空格缩进

②行的长度不应该超过80个字符

③关键字和类型必须小写(比如:if for class bool等等)

④类型关键字采用缩写形式(bool代替boolean,int代替integer)

3.类相关(包含interface trait abstruct)

①类名的定义必须采用StudlyCaps方式(就是大驼峰)(每个单词的首字母都要大写)

②Method names MUST be declared in camelCase.(方法中采用小驼峰定义)

<?php

class Foo
{
    public function getName()
    {
        //TODO
    }
}

③类常量定义需要使用全部大写以及underscoreI(下划线)

<?php

namespace Vendor\Model;

class Foo
{
    const VERSION = '1.0';
    const DATE_APPROVED = '2012-06-01';
}

④关于namespace use的写法

tip: 1.namespace前后各有一行空行

2.use每个类都要独占一行,而非在一行引入多个

3.use引用类,函数,常量,彼此间要有空行

<?php

namespace Vendor\Package;

use Vendor\Package\{ClassA as A, ClassB, ClassC as C};
use Vendor\Package\SomeNamespace\ClassD as D;

use function Vendor\Package\{functionA, functionB, functionC};

use const Vendor\Package\{ConstantA, ConstantB, ConstantC};

class Foo extends Bar implements FooInterface
{
    public function sampleFunction(int $a, int $b = null): array
    {
        if ($a === $b) {
            bar();
        } elseif ($a > $b) {
            $foo->bar($arg1);
        } else {
            BazClass::bar($arg2, $arg3);
        }
    }

    final public static function bar()
    {
        // method body
    }
}

class****关键字的左大括号****需要换行

<?php

namespace Vendor\Model;

class Foo
{
    //TODO
}

⑤成员方法定义的左大括号需要换行

<?php

namespace Vendor\Model;

class Foo
{
    public function getName()
    {
        //TODO
    }
}

4.控制语句相关

①语句关键词后要有一个空行,参数间要有空行,左小括号后,右小括号前不需要空行。看实例!文字解释还是太苍白

<?php

if ($a === $b) {
    bar();
} elseif ($a > $b) {
    $foo->bar($arg1);
} else {
    BazClass::bar($arg2, $arg3);
}

for ($i = 0; $i < 10; $i++) {
    // for body
}

foreach ($iterable as $key => $value) {
    // foreach body
}

②try catch相关,看实例,和上面的差不多(关注那些空格)(注意下面分支的catch前都有空格)

<?php

try {
    // try body
} catch (FirstThrowableType $e) {
    // catch body
} catch (OtherThrowableType | AnotherThrowableType $e) {
    // catch body
} finally {
    // finally body
}

5.运算符相关

①一元运算符

递增/递减运算符不得在运算符和操作数之间有任何空格:

<?php

$i++;
++$j;

类型转换运算符的括号内不得有任何空格

<?php

$intValue = (int) $input;

②二元运算符

所有的算术、比较、赋值、逻辑、字符串和类型元素符都必须位于前缀和之后至少一个空格

<?php

if ($a === $b) {
    $foo = $bar ?? $a ?? $b;
} elseif ($a > $b) {
    $foo = $a + $b * $c;
}

③三元运算符

条件运算符(也简称为三元运算符)必须位于? 和:字符之前和之后至少一个空格:

<?php

$variable = $foo ? 'foo' : 'bar';

6.闭包相关

闭包必须在funciton后加一个空格,在关键字use之前和之后加一个空格。大家看实例

<?php

$closureWithArgs = function ($arg1, $arg2) {
    // body
};
$closureWithArgsAndVars = function ($arg1, $arg2) use ($var1, $var2) {
    // body
};
$closureWithArgsVarsAndReturn = function ($arg1, $arg2) use ($var1, $var2): bool {
    // body
};

相关文章

  • PHP代码规范

    PHP代码规范 本规范希望通过制定一系列规范化PHP代码的规则,以减少在浏览不同作者的代码时,因代码风格的不同而造...

  • PHP基于PSR代码规范 --- 2019-08-30

    PHP 代码规范 FIG 制定的 PHP 规范,简称 PSR,是 PHP 开发的事实标准。FIG 是 Framew...

  • (转载)如何写出优雅耐看的PHP代码?

    如何写出优雅耐看的PHP代码?本篇文章带大家了解一下PHP代码的基本书写规范和框架规范,了解它们让你的PHP代码优...

  • 代码风格

    代码风格 代码风格 必须 严格遵循 PSR-2 规范。 PHP编码规范(中文版)

  • PHP代码规范

    我们写代码的时候,一个好的编码规范,对我们来说能够起到很多意向不到的效果: 1、提高我们的编码效率。 2、提高代码...

  • PHP 代码规范

    FIG 制定的 PHP 规范,简称 PSR,是 PHP 开发的事实标准。FIG 是 Framework Inter...

  • PHP代码规范

    一、基本约定 1、源文件 (1)纯PHP代码源文件只使用 ; (2)源文件中...

  • PHP代码规范

    概论 1.主要依据的是①PSR-1、②PSR-12、③SonarQube的php规则部分、④PEAR规则、⑤Sym...

  • PHP代码规范

    php代码规范参考:[https://learnku.com/docs/psr] PSR-0 自动加载 X已废弃 ...

  • PSR-2- Coding Style Guide 编码风格规范

    代码风格规范 本篇规范是 PSR-1 基本代码规范的继承与扩展。 本规范希望通过制定一系列规范化PHP代码的规则,...

网友评论

      本文标题:PHP代码规范

      本文链接:https://www.haomeiwen.com/subject/tmqzihtx.html