Quy ước đặt tên chi phối cho các biến trong PHP: camelcase hoặc gạch dưới là gì? [đóng cửa]


51

Sự đồng thuận dường như là một người nên tuân theo quy ước của nền tảng mà họ đang phát triển. Xem:

Gạch dưới hoặc lạc đà?

Quy ước đặt tên: camelCase so với underscore_case?

Tuy nhiên, PHP dường như không tuân thủ nghiêm ngặt mọi ước nội bộ (không ngạc nhiên ở đó), ngay cả đối với các phương pháp và chức năng (ví dụ mysqli::set_local_infile_default, PDOStatement::debugDumpParams); tuy nhiên, dấu gạch dưới dường như chiếm ưu thế trong tên hàm.

Tuy nhiên, điều tôi không thể tìm thấy là đây: quy ước đặt tên chi phối cho các biến trong PHP là gì?


Chọn một và gắn bó với nó. Không quan trọng bạn sẽ chọn cái nào, miễn là bạn gắn bó với nó. Tương tự với các tab so với khoảng trắng.
yannis

2
Tôi hoàn toàn đồng ý với ý kiến ​​phổ biến trong các cuộc thảo luận được liên kết: người ta nên tuân theo quy ước. Đó là lý do tại sao tôi giới hạn phạm vi câu hỏi đối với PHP. Tuy nhiên, tôi bắt đầu tự hỏi liệu có một quy ước đặt tên thống trị trong PHP.
sbichenko

5
Không, các quy ước đặt tên là một trong những điều không nhất quán nhỏ đó làm cho PHP trở nên tuyệt vời để làm việc. PSR là một nỗ lực mà tôi nghĩ là đáng để theo dõi, nhưng ... nó hoàn toàn phụ thuộc vào bạn. Câu hỏi liên quan: Có hướng dẫn phong cách chuẩn cho PHP không? & Tại sao Bootstrap 3 thay đổi camelCase thành dấu gạch ngang - nó có dễ đọc hơn không? .
yannis


Liên kết đầu tiên đã chết nhưng đây là kho lưu trữ: web.archive.org/web/20130417105957/http://stackoverflow.com/ Kẻ
Dmitri Zaitsev

Câu trả lời:


50

Không có quy ước đặt tên dứt khoát trong PHP và chúng khác nhau theo khung:

Vì vậy: Sử dụng bất cứ điều gì khung của bạn sử dụng hoặc tạo quy ước đặt tên của riêng bạn.

Ít nhất là đối với các tên hàm và các phương thức lớp, có một điều cần xem xét, nhưng một số khung công tác loại bỏ nó: PHP không phân biệt chữ hoa chữ thường trong trường hợp đó , vì vậy aTonalFunction()atonalFunction()cả hai đều gọi đến cùng một hàm.


1
Không có gì chống lại lập luận đặt tên methond của bạn, nhưng đó hoàn toàn không phải là quy ước. Tất cả các khung và thư viện hiện đại như Zend Framework 2 , Doctrine 2Symfony 2 đều sử dụng camelCase cho tên phương thức.
Rudolph Gottesheim

@RudolphGottesheim Điểm tốt. Tôi đã chỉnh sửa câu trả lời cho phù hợp.
Cư dân

1
Hấp dẫn. Tôi đến đây vì tôi thấy quy ước mã hóa của wordpress là vô duyên. Bây giờ tôi thấy ít nhất họ có nghĩa là nó vô duyên
Kirby

14

Là mã hóa trong hơn mười năm với PHP, tôi có thể thấy một sự thay đổi từ gạch dưới sang camelCase. Đặc biệt là các khung lớn hơn như Zend và Symfony tích hợp trên camelCase khi chúng không cấm gạch dưới, nhưng tất cả các chức năng cốt lõi là camelCase.

Bạn có thể thấy rất nhiều giải pháp gạch dưới trong các hệ thống cũ, như nhánh Typo3 cũ (Typo3 Neo cũng đổi thành camelCase).

Nhưng chắc chắn không có quy tắc nghiêm ngặt nào được mọi người sử dụng, đó chỉ là những gì tôi có thể thấy trong vài năm qua.


1

Điều này phụ thuộc vào các lập trình viên / nhà phát triển cũng như khung hoặc nguồn mở mà họ đang làm việc. Ví dụ, trong khung Yii, nên sử dụng vỏ lạc đà trong khi trong khung Codeigniter, hầu hết mọi người đều theo tên biến với dấu gạch dưới. Một điều chắc chắn là bất kể bạn sử dụng khung nào, tên biến phải dễ hiểu và có thể nhận dạng được.


0

Cá nhân, điều này có thể đi một trong hai cách. Một số lập trình viên thích cách viết của CamelCase, những người khác thích gạch dưới ... Vì vậy, việc hỏi một câu hỏi như thế này có liên quan vì mỗi lập trình viên sẽ có ý kiến ​​khác nhau ... Cá nhân tôi có thói quen làm cả hai tùy thuộc vào tình huống. ..

Tình huống một:

Bạn đã tham gia một nhóm lập trình và đã tham gia một dự án đang thực hiện, bạn nhận thấy rằng một biến ví dụ được đặt ra:

$theString = "This is a camelcase example";

Nhưng bạn có một phong cách ưa thích:

$the_string = "This is not a camelcase example"; 

trong một tình huống như thế này, tốt nhất nên giữ cho lạc đà.

Tình huống hai:

Bạn muốn bắt đầu một dự án solo.

Trong trường hợp này ... Nó chỉ đi vào những gì bạn cảm thấy thoải mái, hãy ghi nhớ những thực hành xấu về:

$theString = "This is a sample String"; 
$the_string = "This is another sample string within the same project"; 

Điều này có thể dễ dàng gây ra đầu ra bất ngờ .. Chỉ cần ghi nhớ điều đó.


9
FYI, những gì bạn đang đề cập đến là PascalCase - camelCase bắt đầu bằng một chữ cái viết thường.
John Weisz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.