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ạngStudlyCaps
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:
- $DayLaThuocTinh: kiểu này viết hoa mấy chữ cái đầu
- $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.
- $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
Ủng hộ Chung Nguyễn Blog
Chung Nguyễn Blog sử dụng FlashVPS - Dịch vụ quản trị máy chủ chuyên nghiệp để quản lý VPS
#FlashVPS là dịch vụ cloud panel trên nền tảng web hỗ trợ khách hàng:
- * Quản lý máy chủ số lượng nhiều
- * Không có kinh nghiệm quản lý máy chủ
- * Thích sử dụng giao diện web đơn giản, trực quan hơn terminal
- * Quá nhàm chán với việc ghi nhớ và lặp lại việc gõ các câu lệnh
- * Muốn tự động hóa mọi thao tác
- * Muốn tiết kiệm thời gian quản trị máy chủ
- * Muốn tiết kiệm tiền bạc, nhân lực quản trị máy chủ 👉 https://flashvps.dev
Các bài viết trên website thường xuyên được đăng tải và cập nhật trên trang Facebook Chung Nguyễn Blog hãy tặng cho Chung một LIKE nhé! Mãi yêu các bạn!
813 👍
Bình luận