2015-06-15 27 views
9

Tôi đang cố gắng tìm ra kiểu mã nào để thực thi bằng mã sniffer phpcs.Sự khác biệt chính giữa tiêu chuẩn mã hóa PSR-2 và tiêu chuẩn mã Symfony2 cho phpcs là gì?

Vì sự phổ biến của Symfony2, có vẻ như là một cách hay để sử dụng tiêu chuẩn mã của nó. Mặt khác, kiểu mã của nó dựa trên PSR2, vì vậy đây có vẻ là kiểu mã cơ bản nhất nên sử dụng.

Hơn nữa, trong cài đặt cơ bản của squizlabs/php_codesniffer, tiêu chuẩn Symfony2 không được bao gồm và phải được cài đặt thủ công trong khi PSR2 có thể dễ dàng có sẵn.

Vì vậy, tôi muốn biết sự khác biệt chính của phương châm Symfony2 so với PSR2 để quyết định để sử dụng.

Ví dụ, tôi nhận ra rằng Symfony2 phong cách thi hành mà Concat operator must not be surrounded by spaces trong khi PSR2 bỏ qua trường hợp này. Tuy nhiên, tôi đã không tìm thấy một cách dễ dàng để liệt kê sự khác biệt. Tôi nhìn vào rulseset.xml nhưng nó không phải là rõ ràng với tôi như thế nào nó được thiết lập.

Tôi quan tâm làm thế nào để có được một danh sách đầy đủ về sự khác nhau giữa các tiêu chuẩn mã PSR2 và Symfony2.

+0

Không thực sự là một câu trả lời (bởi vì tôi không biết sự khác biệt), nhưng tiêu chuẩn PSR-2 được tạo bởi Nhóm Tương thích Khung, trong đó Symfony là một thành viên. Tôi xin nói PSR-2 có liên quan hơn cho các dự án lớn, kể cả những dự án sử dụng Symfony, vì lý do đó. Tham khảo: http://www.php-fig.org/ – DanielM

Trả lời

13

Các Symfony coding standards cơ bản mở rộng các tiêu chuẩn PSR. PSR-2 không chỉ định quy tắc cho tất cả các tình huống, vì vậy các tiêu chuẩn của Symfony thêm một số quy tắc trên đầu trang của PSR-2.

Như bạn nói kho PHP CodeSniffer không bao gồm một ruleset cho Symfony. Có nhiều triển khai bên thứ ba của một bộ quy tắc Symfony2, vì vậy danh sách chính xác các khác biệt giữa chúng và các ruleset PSR-2 phụ thuộc vào việc thực hiện bạn chọn.

Tuy nhiên, khi nhìn vào sự khác biệt giữa các tiêu chuẩn của Symfony và PSR (không phải là rulesets cho PHP CodeSniffer), một số bổ sung theo các tiêu chuẩn Symfony là:

gian
  • Không thêm xung quanh các nhà điều hành nối (.)
  • Thêm dấu phẩy sau mỗi mục mảng trong một mảng nhiều dòng, ngay cả sau một mảng nhiều nhất
  • Thêm dòng trống trước câu lệnh trả về (trừ khi trả về một mình trong nhóm sao kê (như câu lệnh if))
  • Tuyên bố thuộc tính của lớp trước khi phương pháp
  • Tuyên bố thành viên công khai đầu tiên, sau đó bảo vệ, sau đó tư nhân (trừ constructor của lớp cha và setUptearDown phương pháp cho các lớp PHPUnit)

Đây chỉ là một số ví dụ, hãy nhìn vào các Các tiêu chuẩn mã hóa của Symfony cho danh sách đầy đủ.

Theo tôi các tiêu chuẩn Symfony có ý nghĩa và tôi cố gắng sử dụng chúng bất cứ khi nào tôi có thể, ngay cả bên ngoài các dự án Symfony.

5

Từ PhpStorm 2017.1. Ở bên trái Symfony, bên phải PSR-2

  • Tham số phức tạp trong dòng mới.

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

Nhưng tại Symfony site đứng nguyên tắc ngược lại:

Khai báo tất cả các đối số trên cùng một dòng với phương thức/hàm tên, bất kể có bao nhiêu đối số;

  • Không thêm không gian xung quanh các nhà điều hành nối

enter image description here

  • Thêm một dấu phẩy sau mỗi mục mảng trong một mảng đa dòng, ngay cả sau khi người cuối cùng một

enter image description here

  • Thêm một dòng trống trước khi tuyên bố trở lại (trừ khi sự trở lại là người duy nhất bên trong một tuyên bố nhóm (như một câu lệnh if))

enter image description here

enter image description here

Các vấn đề liên quan