algolia search

Tìm thấy x bài viết trong xms.

PSR-1: Chuẩn viết code PHP cơ bản

PSR-1: Chuẩn viết code PHP cơ bản


PRS-1 là các nguyên tắc mỗi lập trình viên PHP nên học để đảm bảo code dễ đọc, bảo trì về sau này, và dễ sử dụng lại cũng như chia sẻ. Nhiều bạn mới học code PHP thường sẽ bỏ qua phần này hoặc chưa từng nghĩ rằng có sự tồn tại của tiêu chuẩn này, nếu bạn đọc bài này thì xin chúc mừng bạn 😁😁 

Chúng ta hãy bắt đầu xem chuẩn này có những nguyên tắc nào nhé 🙈🙈

1. Đối với file .php

1.1 Các file code PHẢI sử dụng thẻ <?php hoặc <?

Nguyên tắc này khá đơn giản phải không nào, đầu file php phải bắt đầu bằng <?php nếu dùng short tag thì sẽ là <?

1.2 File code PHP sử dụng encode: UTF-8 without BOM

Mặc định các Editor/IDE sẽ lưu file php dưới dạng utf-8 nên sẽ ít có trường hợp vi phạm nguyên tắc này. Để hiểu vì sao lại là UTF-8 không đi kèm mã hóa BOM Chung mời các bạn đọc bài viết này Có gì khác nhau giữa UTF-8 và UTF-8 without BOM

1.3 Hiệu ứng phụ

Các Files NÊN dùng để khai báo các thành phần PHP (các lớp, hàm, hằng …) hoặc dùng với mục đích làm hiệu ứng phụ (như include, thiết lập ini cho PHP …), nhưng KHÔNG NÊN dùng cả 2 cùng lúc trong 1 file.

Hiệu ứng phụ là có nghĩa là thực hiện logic không liên quan trực tiếp đến khai báo lớp, hàm, hằng số, v.v. Xem ví dụ nhé các bạn:

<?php
// hiệu ứng phụ: đổi thiết lập ini
ini_set('error_reporting', E_ALL);
 
// hiệu ứng phụ: nạp file vào
include "file.php";
 
// hiệu ứng phụ: xuất dữ liệu
echo 'https://chungnguyen.xyz';
 
// khai báo hàm
function foo()
{
    // function body
}

Như vậy trong file php trên vừa kèm hiệu ứng phụ lại vừa có khai báo hàm trong file như vậy là không nên thôi các bạn nhé, còn đúng thì code chạy được là đúng rồi. Như vậy ở ví dụ trên mình sẽ tách phần khai báo hàm ra một file riêng có tên common.php

<?php
// khai báo hàm
function foo()
{
    // function body
}

// điều kiện không phải là hiệu ứng phụ nhé
if (! function_exists('bar')) {
    // khai báo hàm
    function bar()
    {
        // function body
    }
}

Như vậy file php bị vi phạm nguyên tắc trên được sửa thành:

<?php
// hiệu ứng phụ: đổi thiết lập ini
ini_set('error_reporting', E_ALL);
 
// hiệu ứng phụ: nạp file vào
include "file.php";
 
// hiệu ứng phụ: xuất dữ liệu
echo 'https://chungnguyen.xyz';
 
// hiệu ứng phụ: nạp file vào
include "common.php";

Trong file toàn bộ là hiệu ứng phụ vậy là ok rồi phải không nào các bạn

2. Các Namespace và tên Class

  • Namespace và Lớp PHẢI theo chuẩn “autoloading” PSR: [PSR-0, PSR-4].
  • Có nghĩa là mỗi lớp được khai báo trên mỗi file PHP riêng và namespace tối thiểu có một cấp, cấp đầu là tên vendor.
  • Tên lớp lại PHẢI đúng dạng StudlyCaps nha.
  • Code được viết cho PHP 5.3 trở về sau PHẢI sử dụng các namespace.

Chuẩn mẫu như sao

<?php
// PHP 5.3 trở về sau:
namespace Vendor\Model;

class Foo
{
}

Phiên bản PHP 5.2 trở về trước lúc đó chưa có namespace nên viết

<?php
// PHP 5.2.x trở về trước:
class Vendor_Model_Foo
{
}

3 Hằng, Thuộc tính và Phương thức của lớp

Thuật ngữ lớp (class) ở đây là chỉ chung cho toàn bộ lớp, interfaces, và traits nha các bạn.

3.1 Constants - Hằng

Hằng phải viết HOA toàn bộ và dùng dấu gạch ngang để ngăn cách nhé

Ví dụ bạn định đặt một hằng có ý nghĩa là: em có người yêu chưa thì đặt như vầy nè

<?php
namespace Vendor\Model;

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

3.2 Properties - Thuộc tính

Về cách thức đặt tên thuộc tính chuẩn PSR-1 không quy định cụ thể là nên đặt loại nào, nhưng khuyên bạn chọn loại nào thì dùng nhất quán luôn, cụ thể có một số chuẩn đặt tên thuộc tính như sau:

  1. $DayLaThuocTinh: kiểu này viết hoa mấy chữ cái đầu
  2. $dayLaThuocTinh: kiểu này là kiểu lạc đà, chữ đầu tiên viết thường, mấy chữ sau viết hoa chữ cái đầu.
  3. $day_la_thuoc_tinh: kiểu này là underscore, viết thường hết và ngăn cách bằng dấu gạch dưới.

Thông tin thêm: Laravel Framework chọn cách số 2 để đặt tên cho thuộc tính

3.3 Methods - Phương thức (hàm)

Toàn bộ các hàm (chú ý: hàm này là hàm trong lớp nha các bạn) phải đặt tên theo kiểu lạc đà giống với ví dụ cho thuộc tính ở trên nha.

Chung Nguyễn Blog dịch và diễn giải từ PSR-1: Basic Coding Standard

Đánh giá bài viết

Thích thì like
PSR-1: Chuẩn viết code PHP cơ bản
5/5 1 votes

Bình luận

Hiển thị bình luận Facebook