Từ khóa cuối cùng trong php
Từ bản PHP 5 trở đi có giới thiệu về từ khóa cuối cùng, từ khóa này sẽ ngăn không cho lớp con ghi đè phương thức bằng cách đặt trước định nghĩa phương thức mà từ khóa cuối cùng. Nếu lớp thân được định nghĩa là cuối cùng thì nó không cho phép kế thừa
Bộ quy tắc này được tạo ra để giảm thiểu những khó khăn trong việc đọc mã của người khác. Nó thực hiện điều đó bằng cách đặt ra những quy định hay gợi ý về công việc định dạng mã PHP Show
1. 1. Ví dụVí dụ dưới đây bao gồm một số quy tắc đã được cập nhật ở phần trên, tổng quan
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 4
2. 1 Tiêu chuẩn mã hóa cơ bảnMã phải tuân theo "hướng dẫn kiểu viết mã" PSR [PSR-1] 2. 2 tệpTất cả các tệp PHP phải sử dụng kết thúc dòng Unix LF (linefeed) Mọi tệp PHP phải kết thúc bằng một dòng trống Trong một file chỉ bao gồm code PHP thì không được viết tag close
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements
\ArrayAccess,
\Countable,
\Serializable
{
// constants, properties, methods
} 52. 3. dòngKhông có giới hạn cứng về độ dài của một dòng Giới hạn mềm của độ dài một dòng phải là 120 chữ. Check style chương trình tự động phải báo cảnh báo nhưng không được báo lỗi khi vượt quá giới hạn mềm One line should have not too 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ó khoảng trắng ở cuối (dấu cách ở cuối dòng) Dòng trống có thể được thêm vào để mã có thể dễ đọc hơn và để phân chia các đoạn mã There is not allow too a statement on a line 2. 4. Canh lề - IndentingMã không sử dụng tab, mà phải sử dụng 4 dấu cách thụt lề 2. 5. Keywords và True/False/NullNhững từ khóa của PHP phải được viết bình thường. (không viết hoa) Những hằng số của PHP là
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements
\ArrayAccess,
\Countable,
\Serializable
{
// constants, properties, methods
} 6,
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements
\ArrayAccess,
\Countable,
\Serializable
{
// constants, properties, methods
} 7, và
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements
\ArrayAccess,
\Countable,
\Serializable
{
// constants, properties, methods
} 8 cũng cần phải viết thường
Cần phải có một dòng phía trước sau báo cáo
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 1Những phần báo cáo
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 2 phải được đặt phía sau phần báo cáo
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 1You must use a from
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 2 for each khao khátPhải có một dòng phía trước mã sau đoạn mã
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 2Ví dụ
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 4
Từ lớp dưới đây được hiểu là cả những lớp bình thường, hay cả giao diện và đặc điểm 4. 1. Mở rộng và Triển khaiTừ khóa
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 54 và
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 55 phải được viết cùng dòng với tên lớpBack off the class must be on a private line. Dấu đóng dấu phải được viết ở dòng sau của phần nội dung
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} Danh sách những giao diện được
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 55 có thể được viết trên nhiều dòng, trong đó mỗi dòng theo sau được thụt lề 1 lần. Khi thực hiện công việc đó thì tên giao diện đầu tiên phải được đặt trên 1 dòng mới và mỗi dòng chỉ được phép chứa 1 tên giao diện
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements
\ArrayAccess,
\Countable,
\Serializable
{
// constants, properties, methods
} 4. 2. Của cảiTính năng Hiển thị phải được khai báo ở mọi thuộc tính Không được sử dụng từ khóa
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 57 để khai báo một thuộc tínhTrong một câu thì không được khai báo quá một thuộc tính Tên thuộc tính không nên được thêm tiền tố bởi dấu gạch dưới
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 58 để biểu thị tính chất được bảo vệ hoặc riêng tưKhai báo thuộc tính giống như sau
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 54. 3. phương phápTính năng hiển thị phải được khai báo ở mọi nơi Tên Phương thức không nên được thêm tiền tố bởi dấu gạch dưới
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 58 để biểu thị tính chất được bảo vệ hoặc riêng tưKhi khai báo tên phương thức thì không được để khoảng trống phía sau tên phương thức. Dấu mở nút phải được đặt trên một dòng riêng, và dấu đóng dấu phải được đặt trên dòng ngay sau phần thân của phương thức. Cannot have khoảng trắng sau dấu mở vòng, và không có khoảng trắng phía trước dấu đóng mở vòng Khai báo một hàm giống như sau. Chú ý đến vị trí của dấu ngoặc đơn, dấu phẩy, khoảng trống và dấu ngoặc kép
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 44. 4. Đối số phương phápTrong danh sách đối số (đối số) thì không có khoảng trống trước mỗi dấu phẩy, và phải có khoảng trắng sau mỗi dấu phẩy Những đối số của Phương thức mà giá trị mặc định phải được đặt ở cuối danh sách đối số
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 5Đối số danh sách có thể được tách thành nhiều dòng, trong đó mỗi dòng theo sau được thụt lề một lần. Khi làm như vậy, đối số đầu tiên trong danh sách phải được đặt trên một dòng mới và mỗi dòng chỉ được phép có một đối số Khi mà đối số danh sách được chia làm nhiều dòng, thì dấu đóng ngoặc tròn và dấu mở ngoặc phải được đặt giống nhau trên một dòng, với một khoảng trắng ở giữa
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 64. 5.Khi được sử dụng,
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 6 và
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 7 phải được đặt trước phần khai báo khả năng hiển thịKhi được sử dụng,
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 8 phải được đặt sau phần khai báo khả năng hiển thị
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 34. 6. Gọi Phương thức và Chức năngKhi gọi một phương thức hay một hàm, không được phép có khoảng trắng giữa tên của phương thức hay hàm và dấu mở vòng. Cannot allowable Whitespace after the open key. And not allow have khoảng trắng trước dấu đóng vòng. Trong đối số danh sách, không được phép có khoảng trống trước mỗi dấu phẩy, và phải có khoảng trắng sau mỗi dấu phẩy
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 4Đối số danh sách có thể được tách ra thành nhiều dòng, trong đó mỗi dòng theo sau được thụt lề một lần. Khi làm như vậy, đối số đầ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 đối số
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 40
Những quy tắc chung khi viết Control Structures bao gồm
Phần thân của mỗi cấu trúc phải được đặt trong dấu ngoặc kép đóng mở. Điều này sẽ làm tiêu chuẩn hóa cách viết cấu trúc và giảm thiểu việc phát sinh lỗi khi có những dòng mới được thêm vào phần thân 5. 1.Một cấu trúc
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 9 được viết như sau. Please note to the position of the khoanh tròn, khoảng trắng, dấu ngoặc.
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements
\ArrayAccess,
\Countable,
\Serializable
{
// constants, properties, methods
} 0 và
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 47 được đặt trên cùng một dòng với dấu đóng ngoặc nhọn của phần thân phía trước
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 41Từ khóa
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 47 nên được sử dụng thay cho
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 53, để mọi từ khóa điều khiển chỉ là một từ đơn5. 2.Một cấu trúc
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 54 được viết như sau. Please note to the position of the khoanh tròn, khoảng trắng và dấu ngoặc nhọn. Phần
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 55 phải được thụt lề một lần so với
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 54, và từ khóa
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 59 (hay các từ khóa ngắt khác) phải được thụt lề giống với phần thân của
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 55. Phải có một nhận xét kiểu như
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 61 nếu phần thân của
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 55 không trống, và được cố tình cho qua (không có ngắt)
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 425. 3.Một câu lệnh
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 63 được viết như sau. Please note on the position of the khoanh tròn, khoảng trắng và dấu ngoặc kép
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 43Tương tự như vậy, một câu lệnh
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 64 được viết như sau. Please note on the position of the khoanh tròn, khoảng trắng và dấu ngoặc kép
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 445. 4.Một câu lệnh
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements
\ArrayAccess,
\Countable,
\Serializable
{
// constants, properties, methods
} 1 được viết như sau. Vui lòng chú ý vào vị trí của dấu chấm than, dấu ngoặc tròn, khoảng trắng và dấu ngoặc nhọn
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 455. 5.Một câu lệnh
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 69 được viết như sau. Please note into the position of
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 31, acircle mark, void gap and
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 465. 6.Một khối
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 34 được viết như sau. Please note on the position of the khoanh tròn, khoảng trắng và dấu ngoặc kép
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 47
Các lần đóng cửa phải được định nghĩa mới là một khoảng trắng phía trước sau keywork
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 35, và một khoảng trắng phía trước cũng như phía sau của keywork
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 2Dấu mở đầu phải được đặt ở cùng một dòng, và dấu ngoặc nhọn phải được đặt ở một dòng dẫn phía sau phần thân Không được phép có một khoảng trắng ở phía sau dấu mở giải nén của phần khai báo danh sách đối số hay biến, và không được phép có một khoảng trắng ở phía trước dấu đóng giải nén của phần khai báo danh sách đối số hay biến Trong danh sách đối số hay biến, không được phép có khoảng trống trước mỗi dấu phẩy, và phải có khoảng trống phía sau mỗi dấu phẩy Arguments of Closure which has default value, must be set at the end of the argument list Cách định nghĩa một sự đóng cửa trông giống như sau Một tuyên bố đóng cửa trông giống như sau. Please note into the position of the quote command
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 48Đối số danh sách và biến danh sách có thể được tách ra thành nhiều dòng, trong đó mỗi dòng theo sau được thụt lề một lần. Khi làm như vậy, đối số hay biến đầ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 đối số hay một biến Khi các kết thúc của danh sách (cả đối số hoặc biến) được chia thành nhiều dòng, thì dấu đóng ngoặc tròn và dấu trích dẫn phải được đặt giống nhau trên một dòng, với khoảng trống ở giữa Dưới đây là những ví dụ về các bao đóng có và không có danh sách đối số hay biến được chia thành nhiều dòng
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 49Chú ý rằng các quy tắc trên còn được áp dụng khi một bao đóng được sử dụng các bộ phận tiếp theo như một đối số trong một lời gọi hàm hay phương pháp
namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
// constants, properties, methods
} 0
Có rất nhiều yếu tố về phong cách hay thực hành khác bị cố tình loại bỏ trong hướng dẫn này. There are could not be like
Những đề xuất sau đây có thể xem xét lại và mở rộng hướng dẫn này để đề cập đến những yếu tố thành phần về phong cách hay thực hành ở trên hay hoàn toàn khác |