php coding standards thumbnails

Dưới đây là những tiêu chuẩn(PHP Coding Standards) mà các anh em nên ghi nhớ khi viết code PHP cho WordPress, cho dù là viết theme hoặc plugin.

Việc viết code PHP theo PHP Coding Standards sẽ giúp các đoạn code dễ đọc và dễ bảo trì trong tương lai. Hiện rất có rất nhiều tiêu chuẩn để viết code PHP khác nhau và dưới đây là tiêu chuẩn PHP Coding Standards hiện đang được các WordPress Developer đề nghị.

Single and Double Quotes #

Sử dụng dấu nháy đơn(single quotes) và dấu nháy kép(double quotes) một cách thích hợp. Nếu bạn không có bất kì biểu thức hoặc biến nào trong chuỗi hãy sử dụng dấu nháy đơn. Ngược lại hãy sử dấu nháy kép.

echo '<a href="/static/link" title="Yeah yeah!">Link name</a>';
echo "<a href='$link' title='$linktitle'>$linkname</a>";

Indentation #

Việc thụt lề luôn thể hiện cấu trúc logic code của bạn. Hãy sử dụng các tab và không nên dùng khoảng trắng.

Ngoại lệ: nếu bạn muốn có một đoạn code dễ đọc hơn nếu mọi thứ được căn chỉnh ngay ngắn, hãy sử dụng khoảng trắng như ví dụ bên dưới:

[tab]$foo   = 'somevalue'; 
[tab]$foo2  = 'somevalue2'; 
[tab]$foo34 = 'somevalue3'; 
[tab]$foo5  = 'somevalue4';

Đối với mảng đa chiều, mỗi item nên bắt đầu trên một dòng mới khi mảng chứa nhiều hơn một item:

$query = new WP_Query( array( 'ID' => 123 ) );
$args = array( 
[tab]'post_type'   => 'page', 
[tab]'post_author' => 123, 
[tab]'post_status' => 'publish', 
); 

$query = new WP_Query( $args );

Lưu ý dấu phẩy sau item cuối cùng của mảng: các anh em nên thêm vào vì nó sẽ giúp thay đổi thứ tự item của mảng dễ dàng hơn và làm các dòng code sạch sẽ và nhất quán.

$my_array = array( 
[tab]'foo'   => 'somevalue', 
[tab]'foo2'  => 'somevalue2', 
[tab]'foo3'  => 'somevalue3', 
[tab]'foo34' => 'somevalue3', 
);

Về việc sử dụng cấu trúc switch thì câu lệnh case nên thụt vào một dòng (một tab) từ câu lệnh switch và câu lệnh break thụt vào một dòng từ câu lệnh case như thế này:

switch ( $type ) { 
[tab]case 'foo': 
[tab][tab]some_function(); 
[tab][tab]break; 
[tab]case 'bar': 
[tab][tab]some_function(); 
[tab][tab]break; 
}

Nguyên tắc chung: Các tab nên được sử dụng để thụt lề ở đầu dòng, trong khi khoảng trắng có thể được sử dụng để căn chỉnh giữa các dòng code .

Brace Style #

Dấu ngoặc nhọn luôn được sử dụng cho các khối code (những đoạn code dài) ví dụ:

if ( condition ) { 
    action1(); 
    action2(); 
} elseif ( condition2 && condition3 ) { 
    action3(); 
    action4(); 
} else { 
    defaultaction(); 
}

Nếu bạn có một khối thực sự dài, hãy xem xét liệu nó có thể được chia thành hai hoặc nhiều khối, hàm hoặc phương thức ngắn hơn, để giảm độ phức tạp, cải thiện trong việc viết Unit Test và tăng khả năng đọc.

Dấu ngoặc nhọn phải luôn luôn được sử dụng, ngay cả khi không bắt buộc:

if ( condition ) { 
    action0(); 
} 

if ( condition ) { 
    action1(); 
} elseif ( condition2 ) {
    action2a(); 
    action2b(); 
} 

foreach ( $items as $item ) { 
    process_item( $item ); 
}

Use elseif, not else if #

else if không tương thích với cú pháp dấu hai chấm cho những biểu thức điều kiện if|elseif. Vì lý do này, sử dụng elseif cho những biểu thức điều kiện.

Declaring Arrays #

Sử dụng cú pháp đầy đủ khi khai báo mảng array( 1, 2, 3 )nó sẽ khiến các đoạn code dễ đọc hơn là dùng cú pháp rút ngọn [ 1, 2, 3 ]

Closures (Anonymous Functions) #

Trong một số tình huống, các Closures có thể được sử dụng như là một phương thức thay thế cho việc tạo các hàm mới để truyền vào như một callback function. Ví dụ:

$caption = preg_replace_callback(
   '/<[a-zA-Z0-9]+(?: [^<>]+>)*/', 
   function ( $matches ) { 
       return preg_replace( '/[\r\n\t]+/', ' ', $matches[0]); 
   }, 
   $caption 
);

Closures không được truyền như một filter hoặc action callbacks, bởi vì chúng không thể được remove bởi remove_action() / remove_filter()

Multiline Function Calls #

Khi tách một lời gọi hàm có nhiều dòng, mỗi tham số phải nằm trên một dòng riêng biệt. Comment nên đứng một dòng riêng biệt thay vì phải nằm cùng hàng với tham số.

Mỗi tham số phải chiếm không quá một dòng. Các giá trị tham số nhiều dòng phải được gán cho một biến và biến đó sẽ được truyền cho lệnh gọi hàm.

$bar = array( 
    'use_this' => true,
    'meta_key' => 'field_name', 
); 

$baz = sprintf( 
    /* translators: %s: Friend's name */ 
    esc_html__( 'Hello, %s!', 'yourtextdomain' ),
    $friend_name
); 

$a = foo( 
    $bar, 
    $baz, 
    /* translators: %s: cat */ 
    sprintf( __( 'The best pet is a %s.' ), 'cat' ) 
);

Regular Expressions #

Update later

Opening and Closing PHP Tags #

Khi nhúng các đoạn mã PHP nhiều dòng trong một khối HTML, các thẻ mở và đóng của PHP phải nằm trên một dòng.

Correct (Multiline):

function foo() { 
    ?> 
      <div> 
      <?php 
      echo bar( 
           $baz, 
           $bat 
      ); 
      ?> 
      </div> 
    <?php 
}

Correct (Single Line):

<input name="<?php echo esc_attr( $name ); ?>" />

Incorrect:

if ( $a === $b ) { ?> 
<some html> 
<?php }

No Shorthand PHP Tags #

 Lưu ý: Không bao giờ sử dụng cách viết rút gọn các thẻ PHP. Luôn sử dụng các thẻ PHP đầy đủ.

Correct:

<?php ... ?> 
<?php echo $var; ?>

Incorrect:

<? ... ?> 
<?= $var ?>

Remove Trailing Spaces #

Xóa khoảng trắng ở cuối mỗi dòng code. Bỏ qua thẻ PHP đóng ở cuối mỗi file code. Nếu bạn sử dụng thẻ, hãy đảm bảo bạn xóa khoảng trắng ở cuối.

Space Usage #

Luôn đặt khoảng trắng sau dấu phẩy và trên cả hai mặt của toán tử logic, so sánh, chuỗi và gán

Site Footer