Hướng dẫn php website structure best practices - các phương pháp hay nhất về cấu trúc trang web php

Chào mừng

Có rất nhiều thông tin lỗi thời trên Web dẫn đầu người dùng PHP mới lạc lối, truyền bá các thông lệ xấu và mã không an toàn. PHP: đúng cách là một tài liệu tham khảo nhanh, dễ đọc cho các tiêu chuẩn mã hóa phổ biến PHP, liên kết đến các hướng dẫn có thẩm quyền trên web và những gì những người đóng góp coi là thực tiễn tốt nhất vào thời điểm hiện tại.

Không có cách thức kinh điển để sử dụng PHP. Trang web này nhằm giới thiệu các nhà phát triển PHP mới về một số chủ đề mà họ có thể không khám phá cho đến khi quá muộn và nhằm mục đích đưa ra một số ý tưởng mới mẻ về những chủ đề mà họ đã làm trong nhiều năm mà không bao giờ xem xét lại. Trang web này cũng sẽ không cho bạn biết công cụ nào sẽ sử dụng, mà thay vào đó cung cấp các đề xuất cho nhiều tùy chọn, khi có thể giải thích sự khác biệt trong cách tiếp cận và trường hợp sử dụng.

Đây là một tài liệu sống và sẽ tiếp tục được cập nhật với nhiều thông tin và ví dụ hữu ích hơn khi chúng có sẵn.

Bản dịch

PHP: Cách đúng được dịch sang nhiều ngôn ngữ khác nhau:

  • Tiếng Anh
  • Español
  • Français
  • Indonesia
  • Ý
  • Polski
  • Bồ Đào Nha làm brasil
  • Român
  • Slovenščina
  • Srpski
  • Türkçe
  • ъ
  • Р р
  • Bạn có thể
  • الع
  • فار
  • ภาษา
  • 한국어판
  • 日本語
  • 简体
  • 繁體

Sách

Phiên bản gần đây nhất của PHP: đúng cách cũng có sẵn ở các định dạng PDF, EPUB và MOBI. Đi đến Leanpub

Làm thế nào để đóng góp

Giúp làm cho trang web này trở thành tài nguyên tốt nhất cho các lập trình viên PHP mới! Đóng góp trên GitHub

Bắt đầu

Sử dụng phiên bản ổn định hiện tại [8.1]

Nếu bạn bắt đầu với PHP, hãy bắt đầu với bản phát hành ổn định hiện tại của PHP 8.1. Php 8.x thêm nhiều tính năng mới trên các phiên bản 7.x và 5.x cũ hơn. Động cơ đã được viết lại phần lớn và PHP hiện thậm chí còn nhanh hơn các phiên bản cũ hơn. Php 8 là bản cập nhật chính của ngôn ngữ và chứa nhiều tính năng và tối ưu hóa mới.

Bạn nên cố gắng nâng cấp lên phiên bản ổn định mới nhất một cách nhanh chóng - Php 7.4 đã kết thúc cuộc đời. Nâng cấp là dễ dàng, vì không có nhiều lần nghỉ tương thích ngược. Nếu bạn không chắc chắn phiên bản nào là một hàm hoặc tính năng, bạn có thể kiểm tra tài liệu PHP trên trang web PHP.NET.

Máy chủ web tích hợp

Với PHP 5.4 trở lên, bạn có thể bắt đầu học PHP mà không cần cài đặt và định cấu hình máy chủ web đầy đủ. Để khởi động máy chủ, hãy chạy lệnh sau từ thiết bị đầu cuối của bạn trong root web dự án của bạn:

> php -S localhost:8000
  • Tìm hiểu về máy chủ Web Line Line được tích hợp

Thiết lập Mac

MacOS được đóng gói sẵn với PHP nhưng thông thường là một chút phía sau bản phát hành ổn định mới nhất. Có nhiều cách để cài đặt phiên bản PHP mới nhất trên macOS.

Cài đặt PHP qua homebrew

Homebrew là một trình quản lý gói cho các macOS giúp bạn dễ dàng cài đặt PHP và các tiện ích mở rộng khác nhau. Kho lưu trữ lõi Homebrew cung cấp các công thức của người Viking cho Php 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0 và Php 8.1. Cài đặt phiên bản mới nhất với lệnh này:

Bạn có thể chuyển đổi giữa các phiên bản PHP Homebrew bằng cách sửa đổi biến

phpcbf -w --standard=PSR1 file.php
3 của bạn. Ngoài ra, bạn có thể sử dụng Brew-php-Switcher để tự động chuyển phiên phiên bản PHP.

Bạn cũng có thể chuyển đổi giữa các phiên bản PHP theo cách thủ công bằng cách hủy liên kết và liên kết phiên bản mong muốn:

brew unlink php
brew link --overwrite 

brew unlink php
brew link --overwrite 

Cài đặt PHP qua MacPorts

Dự án MacPorts là một sáng kiến ​​cộng đồng nguồn mở để thiết kế một hệ thống dễ sử dụng để biên dịch, cài đặt và nâng cấp một phần mềm lệnh mở, X11 hoặc Aqua trên hệ điều hành OS X.

MacPorts hỗ trợ các nhị phân được biên dịch sẵn, vì vậy bạn không cần phải biên dịch lại mọi phụ thuộc từ các tệp tarball nguồn, nó sẽ cứu cuộc sống của bạn nếu bạn không có gói nào được cài đặt trên hệ thống của bạn.

Tại thời điểm này, bạn có thể cài đặt

phpcbf -w --standard=PSR1 file.php
4,
phpcbf -w --standard=PSR1 file.php
5,
phpcbf -w --standard=PSR1 file.php
6,
phpcbf -w --standard=PSR1 file.php
7,
phpcbf -w --standard=PSR1 file.php
8,
phpcbf -w --standard=PSR1 file.php
9,
php-cs-fixer fix -v --rules=@PSR1 file.php
0,
php-cs-fixer fix -v --rules=@PSR1 file.php
1,
php-cs-fixer fix -v --rules=@PSR1 file.php
2 hoặc
php-cs-fixer fix -v --rules=@PSR1 file.php
3

sudo port install php74
sudo port install php81

Và bạn có thể chạy lệnh

php-cs-fixer fix -v --rules=@PSR1 file.php
5 để chuyển PHP hoạt động của mình:

sudo port select --set php php81

Cài đặt PHP qua PHPBrew

PHPBrew là một công cụ để cài đặt và quản lý nhiều phiên bản PHP. Điều này có thể thực sự hữu ích nếu hai ứng dụng/dự án khác nhau yêu cầu các phiên bản PHP khác nhau và bạn không sử dụng máy ảo.

Cài đặt PHP thông qua trình cài đặt nhị phân Liip

Một tùy chọn phổ biến khác là php-osx.liip.ch cung cấp một phương thức cài đặt lớp lót cho các phiên bản 5.3 đến 7.3. Nó không ghi đè lên các nhị phân PHP do Apple cài đặt, nhưng cài đặt mọi thứ ở một vị trí riêng biệt [/usr/local/PHP5].

Biên dịch từ nguồn

Một tùy chọn khác cho phép bạn kiểm soát phiên bản PHP bạn cài đặt, là tự biên dịch nó. Trong trường hợp đó, hãy chắc chắn đã cài đặt các công cụ dòng lệnh của Xcode hoặc Apple thay thế cho XCode có thể tải xuống từ Trung tâm phát triển Apple Apple Mac.

Trình cài đặt tất cả trong một

Các giải pháp được liệt kê ở trên chủ yếu tự xử lý PHP và không cung cấp những thứ như Apache, Nginx hoặc máy chủ SQL. Các giải pháp tất cả trong một trong một như MAMP và XAMPP sẽ cài đặt các phần mềm khác này cho bạn và gắn kết tất cả chúng lại với nhau, nhưng dễ dàng thiết lập đi kèm với sự đánh đổi tính linh hoạt.

cài đặt Windows

Bạn có thể tải xuống các nhị phân từ windows.php.net/doad. Sau khi trích xuất PHP, nên đặt đường dẫn vào gốc của thư mục PHP của bạn [nơi đặt PHP.exe] để bạn có thể thực thi PHP từ bất cứ đâu.

Để học tập và phát triển cục bộ, bạn có thể sử dụng máy chủ web tích hợp với PHP 5.4+, vì vậy bạn không cần phải lo lắng về việc định cấu hình nó. Nếu bạn muốn có một mạng lưới tất cả trong một, bao gồm một máy chủ web toàn diện và MySQL cũng vậy, các công cụ như XAMPP, EasyPhp, OpenServer và Wamp sẽ giúp đưa môi trường phát triển Windows tăng nhanh và chạy nhanh. Điều đó nói rằng, các công cụ này sẽ khác một chút so với sản xuất, vì vậy hãy cẩn thận với sự khác biệt về môi trường nếu bạn đang làm việc trên Windows và triển khai đến Linux.

Nếu bạn cần chạy hệ thống sản xuất của mình trên Windows, thì IIS7 sẽ cung cấp cho bạn hiệu suất ổn định và tốt nhất. Bạn có thể sử dụng PHPManager [một plugin GUI cho IIS7] để tạo cấu hình và quản lý PHP đơn giản. IIS7 đi kèm với fastcgi được tích hợp và sẵn sàng để đi, bạn chỉ cần định cấu hình PHP như một người xử lý. Để hỗ trợ và tài nguyên bổ sung, có một khu vực chuyên dụng trên IIS.NET cho PHP.

Nói chung, việc chạy ứng dụng của bạn trên các môi trường khác nhau trong phát triển và sản xuất có thể dẫn đến các lỗi kỳ lạ xuất hiện khi bạn phát hành. Nếu bạn đang phát triển trên Windows và triển khai đến Linux [hoặc bất cứ thứ gì không phải là cửa sổ] thì bạn nên xem xét sử dụng máy ảo.

Chris Tankersley có một bài đăng trên blog rất hữu ích về những công cụ anh ấy sử dụng để thực hiện phát triển PHP bằng Windows.

Cấu trúc thư mục chung

Một câu hỏi phổ biến trong số những người bắt đầu với các chương trình viết cho web là, tôi đặt đồ của mình ở đâu? Trong những năm qua, câu trả lời này đã liên tục là nơi mà

php-cs-fixer fix -v --rules=@PSR1 file.php
6 là. Mặc dù câu trả lời này chưa hoàn thành, nhưng nó là một nơi tuyệt vời để bắt đầu.

Vì lý do bảo mật, các tệp cấu hình không thể truy cập được bởi khách truy cập trang web; Do đó, các tập lệnh công khai được lưu trong một thư mục công cộng và cấu hình riêng và dữ liệu được lưu bên ngoài thư mục đó.

Đối với mỗi nhóm, CMS hoặc Framework One hoạt động, một cấu trúc thư mục tiêu chuẩn được sử dụng bởi mỗi thực thể đó. Tuy nhiên, nếu một người đang bắt đầu một dự án một mình, việc biết cấu trúc hệ thống tập tin nào sẽ sử dụng có thể gây khó khăn.

Paul M. Jones đã thực hiện một số nghiên cứu tuyệt vời về các thực tiễn phổ biến của hàng chục ngàn dự án GitHub trong lĩnh vực PHP. Ông đã biên soạn một cấu trúc tệp và thư mục tiêu chuẩn, bộ xương gói PHP tiêu chuẩn, dựa trên nghiên cứu này. Trong cấu trúc thư mục này,

php-cs-fixer fix -v --rules=@PSR1 file.php
6 nên trỏ đến
php-cs-fixer fix -v --rules=@PSR1 file.php
8, các bài kiểm tra đơn vị phải nằm trong thư mục
php-cs-fixer fix -v --rules=@PSR1 file.php
9 và các thư viện của bên thứ ba, được cài đặt bởi nhà soạn nhạc, thuộc thư mục
> php -i
0. Đối với các tệp và thư mục khác, tuân thủ bộ xương gói PHP tiêu chuẩn sẽ có ý nghĩa nhất đối với những người đóng góp của một dự án.

Hướng dẫn kiểu mã

Cộng đồng PHP rất lớn và đa dạng, bao gồm vô số thư viện, khung và các thành phần. Thông thường các nhà phát triển PHP chọn một số trong số này và kết hợp chúng thành một dự án duy nhất. Điều quan trọng là mã PHP tuân thủ [càng gần càng tốt] với kiểu mã chung để giúp các nhà phát triển dễ dàng trộn và kết hợp các thư viện khác nhau cho các dự án của họ.

Nhóm Interop Framework đã đề xuất và phê duyệt một loạt các đề xuất phong cách. Không phải tất cả chúng đều liên quan đến kiểu mã, mà là những người là PSR-1, PSR-12 và PSR-4. Những khuyến nghị này chỉ là một bộ quy tắc mà nhiều dự án như Drupal, Zend, Symfony, Laravel, CakePHP, PHPBB, AWS SDK, Fuelphp, Lithium, v.v. đang áp dụng. Bạn có thể sử dụng chúng cho các dự án của riêng bạn hoặc tiếp tục sử dụng phong cách cá nhân của riêng bạn.

Lý tưởng nhất, bạn nên viết mã PHP tuân thủ một tiêu chuẩn đã biết. Đây có thể là bất kỳ sự kết hợp nào của PSR, hoặc một trong các tiêu chuẩn mã hóa được thực hiện bởi Pear hoặc Zend. Điều này có nghĩa là các nhà phát triển khác có thể dễ dàng đọc và làm việc với mã của bạn và các ứng dụng triển khai các thành phần có thể có tính nhất quán ngay cả khi làm việc với nhiều mã của bên thứ ba.

  • Đọc về PSR-1
  • Đọc về PSR-12
  • Đọc về PSR-4
  • Đọc về tiêu chuẩn mã hóa quả lê
  • Đọc về các tiêu chuẩn mã hóa Symfony

Bạn có thể sử dụng PHP_CodesNiffer để kiểm tra mã chống lại bất kỳ một trong các đề xuất này và các plugin cho các trình chỉnh sửa văn bản như văn bản siêu phàm để được cung cấp phản hồi thời gian thực.

Bạn có thể tự động sửa bố cục mã bằng cách sử dụng một trong các công cụ sau:

  • Một là trình sửa lỗi tiêu chuẩn mã hóa PHP có cơ sở mã được thử nghiệm rất tốt.
  • Ngoài ra, công cụ làm đẹp và sửa lỗi mã PHP được bao gồm trong PHP_CodesNiffer có thể được sử dụng để điều chỉnh mã của bạn cho phù hợp.

Và bạn có thể chạy phpcs theo cách thủ công từ shell:

phpcs -sw --standard=PSR1 file.php

Nó sẽ hiển thị lỗi và mô tả cách khắc phục chúng. Nó cũng có thể hữu ích để đưa lệnh này vào một cái móc git. Bằng cách đó, các nhánh có chứa vi phạm đối với tiêu chuẩn đã chọn không thể vào kho lưu trữ cho đến khi các vi phạm đó đã được khắc phục.

Nếu bạn có PHP_CodesNiffer, thì bạn có thể khắc phục các vấn đề về bố cục mã được báo cáo bởi nó, tự động, với trình làm đẹp và bộ sửa lỗi của mã PHP.

phpcbf -w --standard=PSR1 file.php

Một tùy chọn khác là sử dụng Trình sửa tiêu chuẩn mã hóa PHP. Nó sẽ cho thấy loại lỗi nào mà cấu trúc mã đã có trước khi nó sửa chúng.

php-cs-fixer fix -v --rules=@PSR1 file.php

Tiếng Anh được ưa thích cho tất cả các tên biểu tượng và cơ sở hạ tầng mã. Nhận xét có thể được viết bằng bất kỳ ngôn ngữ nào dễ đọc bởi tất cả các bên hiện tại và tương lai, những người có thể đang làm việc trên cơ sở mã.

Cuối cùng, một tài nguyên bổ sung tốt để viết mã PHP sạch là mã sạch PHP.

Nổi bật về ngôn ngữ

Mô hình lập trình

PHP là một ngôn ngữ linh hoạt, năng động, hỗ trợ nhiều kỹ thuật lập trình. Nó đã phát triển đáng kể trong những năm qua, đáng chú ý là thêm một mô hình hướng đối tượng vững chắc trong Php 5.0 [2004], các hàm ẩn danh và không gian tên trong PHP 5.3 [2009], và các đặc điểm trong Php 5.4 [2012].

Lập trình hướng đối tượng

PHP có một tập hợp rất đầy đủ các tính năng lập trình hướng đối tượng bao gồm hỗ trợ cho các lớp, các lớp trừu tượng, giao diện, kế thừa, nhà xây dựng, nhân bản, ngoại lệ, v.v.

  • Đọc về PHP hướng đối tượng
  • Đọc về các đặc điểm

Lập trình chức năng

PHP hỗ trợ các chức năng hạng nhất, có nghĩa là một hàm có thể được gán cho một biến. Cả hai chức năng do người dùng xác định và tích hợp có thể được tham chiếu bởi một biến và được gọi linh hoạt. Các chức năng có thể được truyền dưới dạng đối số cho các chức năng khác [một tính năng gọi là các hàm bậc cao hơn] và các chức năng có thể trả về các chức năng khác.

Recursion, một tính năng cho phép một hàm tự gọi, được hỗ trợ bởi ngôn ngữ, nhưng hầu hết mã PHP đều tập trung vào lặp.

Các chức năng ẩn danh mới [với hỗ trợ đóng cửa] có mặt kể từ Php 5.3 [2009].

Php 5.4 đã thêm khả năng liên kết đóng cửa với phạm vi đối tượng và cũng được cải thiện hỗ trợ cho các thiết bị gọi để chúng có thể được sử dụng thay thế cho các chức năng ẩn danh trong hầu hết các trường hợp.

  • Tiếp tục đọc về lập trình chức năng trong PHP
  • Đọc về các chức năng ẩn danh
  • Đọc về lớp đóng cửa
  • Thêm chi tiết trong việc đóng cửa RFC
  • Đọc về các thiết bị gọi
  • Đọc về các chức năng gọi động với
    > php -i
    1

Lập trình meta

PHP hỗ trợ các hình thức lập trình meta khác nhau thông qua các cơ chế như API phản xạ và phương pháp ma thuật. Có nhiều phương pháp ma thuật có sẵn như

> php -i
2,
> php -i
3,
> php -i
4,
> php -i
5,
> php -i
6, v.v. cho phép các nhà phát triển kết nối với hành vi của lớp. Các nhà phát triển Ruby thường nói rằng PHP đang thiếu
> php -i
7, nhưng nó có sẵn là
> php -i
8 và
> php -i
9.

  • Đọc về Phương pháp ma thuật
  • Đọc về sự phản ánh
  • Đọc về quá tải

Không gian tên

Như đã đề cập ở trên, cộng đồng PHP có rất nhiều nhà phát triển tạo ra nhiều mã. Điều này có nghĩa là một mã PHP thư viện có thể sử dụng cùng tên lớp như tên khác. Khi cả hai thư viện được sử dụng trong cùng một không gian tên, chúng va chạm và gây rắc rối.

Không gian tên giải quyết vấn đề này. Như được mô tả trong Hướng dẫn tham khảo PHP, các không gian tên có thể được so sánh với các thư mục hệ điều hành mà các tệp tên gọi; Hai tệp có cùng tên có thể cùng tồn tại trong các thư mục riêng biệt. Tương tự như vậy, hai lớp PHP có cùng tên có thể cùng tồn tại trong các không gian tên PHP riêng biệt. Nó đơn giản như vậy.

Điều quan trọng là bạn phải đặt tên mã của bạn để nó có thể được sử dụng bởi các nhà phát triển khác mà không sợ va chạm với các thư viện khác.

Một cách được đề xuất để sử dụng các không gian tên được nêu trong PSR-4, nhằm mục đích cung cấp một tệp tiêu chuẩn, quy ước lớp và không gian tên tiêu chuẩn để cho phép mã cắm và chơi.

Vào tháng 10 năm 2014, PHP-FIG đã không sử dụng tiêu chuẩn tự động tải trước: PSR-0. Cả PSR-0 và PSR-4 vẫn có thể sử dụng hoàn toàn. Loại thứ hai yêu cầu PHP 5.3, vì vậy nhiều dự án chỉ dành cho PHP 5.2 thực hiện PSR-0.

Nếu bạn sẽ sử dụng một tiêu chuẩn tự động tải cho một ứng dụng hoặc gói mới, hãy xem vào PSR-4.

  • Đọc về các không gian tên
  • Đọc về PSR-0
  • Đọc về PSR-4

Thư viện PHP tiêu chuẩn

Thư viện PHP tiêu chuẩn [SPL] được đóng gói với PHP và cung cấp một bộ sưu tập các lớp và giao diện. Nó được tạo thành chủ yếu từ các lớp cơ sở hạ tầng thường cần thiết [ngăn xếp, xếp hàng, đống, v.v.] và các trình lặp có thể đi qua các cơ sở dữ liệu này hoặc các lớp của riêng bạn thực hiện giao diện SPL.

  • Đọc về SPL
  • Khóa học video SPL trên Lynda.com [đã trả tiền]

Giao diện dòng lệnh

PHP được tạo để viết các ứng dụng web, nhưng cũng hữu ích cho các chương trình giao diện dòng lệnh [CLI]. Các chương trình PHP dòng lệnh có thể giúp tự động hóa các tác vụ phổ biến như kiểm tra, triển khai và quản trị ứng dụng.

Các chương trình CLI PHP rất mạnh mẽ vì bạn có thể sử dụng mã ứng dụng của mình trực tiếp mà không phải tạo và bảo mật GUI web cho nó. Chỉ cần chắc chắn không đặt các tập lệnh CLI PHP của bạn vào Root Web công khai của bạn!not to put your CLI PHP scripts in your public web root!

Thử chạy PHP từ dòng lệnh của bạn:

> php -i

Tùy chọn

Bài Viết Liên Quan

Chủ Đề