DANH MỤC: PHP Standards

Bài 2: Các kiểu code cơ bản


Ở bài trước mình đã giới thiệu đến mọi người các quy tắc cơ bản trong PHP, bài này mình sẽ giới thiệu đến mọi người các chuẩn tiếp theo trong series PHP Standards.

1, Tổng quan về style.

Files

-Đối với files thì phải dùng Unix LF ( linefeed ) line endcoding.

-Mọi files PHP đều phải kết thúc bằng 1 dòng trống (hơn cũng không đúng, mà không có cũng không đúng).

-Nếu một file chỉ bao gồm code PHP thì không được viết tag đóng.

VD: Mình sẽ làm đúng theo 3 chuẩn đới với files như sau:

<?php
class ClassName extends AnotherClass
{
	
	function __construct(argument)
	{
		# code...
	}
}

Dòng (Line)

- Không có hard limit về độ dài của một dòng.

- Soft limit của độ dài một dòng phải là 120 chữ. Chương trình check style tự động phải báo warning nhưng không được báo error khi vượt quá soft limit.

- Một dòng nên có không quá 80 chữ. Dòng mà dài quá 80 chữ thì nên chia nhỏ ra thành nhiều dòng với độ dài mỗi dòng không quá 80 chữ.

- Một dòng không trống không được phép có trailing whitespace (dấu cách ở cuối dòng)

- Dòng trống có thể được thêm vào để code, có thể được dễ đọc hơn và để phân cách những đoạn code.

- Không được phép có quá một statement trên một dòng.

Canh lề - Indenting

- Đối với chuẩn này thì bạn không được dùng tab để lùi dòng, thay vào đó bạn phải dùng 4 dấu cách (Các IDE thông dụng như sublime text,Net beants,.. đều setup mặc định 1 tab là 4 đấu cách rồi).

KeyWords và hằng

- Những keywords của PHP phải được viết thường (xem danh sách các keywords của PHP tại đây).

- Những constants của PHP là truefalse, và null cũng cần phải viết thường.

VD:

$a = true;
$b = false;

2, Namspace và Use.

-Khi khai báo namspace thì cần phải có 1 dòng trắng ngay dưới namespace.

<?php

namespace Toidicode\Package;

class ClassName extends AnotherClass
{

    function __construct(argument)
	{
        # code...
    }
}

- Phải dùng một từ use cho mỗi khao báo và phải có một dòng trắng phía sau đoạn code use.

<?php

namespace Toidicode\Package;

use Toidicode\package\Home;

class ClassName extends AnotherClass
{

    function __construct(argument)
	{
        # code...
    }
}

//Sai nếu khai báo như sau
use Toidicode\Package\ClassName, Toidicode\Package\Home;

3, Class, thuộc tính, phương thức.

-Class ở đây mình sẽ nói chung, bao gồm cả interface, abstrack và traits.

Extends và Implements

-Đối với 2 từ khóa này phải được viết cùng dòng với class và dấu đóng mở ngoặc {} của class phải được viết ở mỗi dòng riêng.

VD:

<?php

class ClassName extends ParentClass implements ArrayAccess, Countable
{
    // your code
}

- Nếu như bạn implements nhiều hơn 1 interface thì bạn có thể chuyển mỗi interface xuống một dòng riêng và đồng thời indent 1 lần.

VD:

<?php

class ClassName extends ParentClass implements
    ArrayAccess,
    Countable
{
    // your code
}

Thuộc tính - properties

-Đối với thuộc tính trong class thì bạn chỉ được khao báo mỗi dòng một thuộc tính, không được khai báo gộp và tên của thuộc tính không được bắt đầu bằng tiền tố _ ở trước.

VD:

<?php

class ClassName
{
    public $website = 'Toidicode.com';
}

Phương thức - methods

-Đối với tên của phương thức trong class cũng không được bắt đầu bằng tiền tố _ ở trước, đồng thời không được chứa khoảng trắng phía sau tên class, dấu mở và đóng ngoặc tròn phải đặt trên cùng 1 dòng với tên methods và cuối cùng là dấu đóng, mở ngược nhọn phải được nằm trên một dòng riêng.

VD:

<?php

class ClassName
{
    public function foo($arg1, &$arg2, $arg3 = [])
    {
        // your code
    }
}

-Và nếu như phương thức chứa nhiều arguments thì bạn có thể cho mỗi param đó xuống một dòng và đồng thời indent 1 lần cho mỗi param đó, Tiếp đó dấu mở ngoặc nhọn và dấu đóng ngoặc tròn phải được nằm trên cùng 1 dòng và cách nhau 1 dấu cách.

VD:

<?php

class ClassName
{
    public function foo(
        $arg1,
        &$arg2,
        $arg3 = []
    )
    {
        // your code
    }
}

Abstract, final, static

-Đối với khai báo stactic thì từ khóa static phải được đặt sau visibility (Public, protected, private). Ngược lại với satatic thì final, abstact phải khai báo sau visibility.

VD:

<?php

namespace Vendor\Package;

abstract class ClassName
{
    protected static $foo;

    abstract protected function zim();

    final public static function bar()
    {
        // your code
    }
}

Gọi phương thức và hàm.

- Khi gọi một method hay một function, thì không được phép có khoảng trắng giữa tên của method hay function với dấu mở ngoặc tròn, không được phép có khoảng trắng sau dấu mở ngoặc tròn. Và không được phép có khoảng trắng trước dấu đóng ngoặc tròn.

- Trong danh sách argument(tham số), không được phép có khoảng trắng trước mỗi dấu phẩy, và phải có một khoảng trắng sau mỗi dấu phẩy.

VD:

<?php
bar();
$foo->bar($arg1);
Foo::bar($arg2, $arg3);

-Tuy nhiên nếu như có nhiều hơn một param truyền vào hàm thì bạn cũng có thể để danh sách argument tách ra thành nhiều dòng, trong đó mỗi dòng theo sau được indent một lần, khi làm như vậy thì argument đầu tiên phải được đặt trên một dòng mới và mỗi dòng chỉ được phép chứa một argument.

VD:

<?php
$foo->bar(
    $longArgument,
    $longerArgument,
    $muchLongerArgument
);

4, Lời kết.

-Bài này chúng ta dừng ở đây thôi nhé, bài tiếp theo chúng ta sẽ tìm hiểu nốt về các kiểu code cơ bản trong PHP.

Nguồn: Toidicode.com

Thông tin tác giả

Vũ Thanh Tài

Vũ Thanh Tài

The best way to learn is to share

Hãy tham gia group facebook để cùng giao lưu chia sẻ kiến thức! Tham Gia