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
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. PHP: Cách đúng được dịch sang nhiều ngôn ngữ khác nhau: 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 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 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. 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: 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. 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 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:
Cài đặt PHP qua MacPortsDự á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 4, 5, 6, 7, 8, 9, 0, 1, 2 hoặc 3
Và bạn có thể chạy lệnh 5 để chuyển PHP hoạt động của mình:
Cài đặt PHP qua PHPBrewPHPBrew 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 LiipMộ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ồnMộ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ộtCá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 WindowsBạ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 chungMộ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à 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, 6 nên trỏ đến 8, các bài kiểm tra đơn vị phải nằm trong thư mục 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 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.
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:
Và bạn có thể chạy phpcs theo cách thủ công từ shell:
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.
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.
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ìnhPHP 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ượngPHP 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.
Lập trình chức năngPHP 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.
Lập trình metaPHP 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ư 2, 3, 4, 5, 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 7, nhưng nó có sẵn là 8 và 9.
Không gian tênNhư đã đề 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.
Thư viện PHP tiêu chuẩnThư 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.
Giao diện dòng lệnhPHP đượ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:
Tùy chọn 0 sẽ in cấu hình PHP của bạn giống như hàm 1.Tùy chọn 2 cung cấp một vỏ tương tác, tương tự như vỏ tương tác Ruby, IRB hoặc Python. Có một số tùy chọn dòng lệnh hữu ích khác, quá.Hãy cùng viết một chương trình đơn giản, xin chào, $ tên CLI. Để dùng thử, hãy tạo một tệp có tên 3, như dưới đây.
PHP thiết lập hai biến đặc biệt dựa trên các đối số mà tập lệnh của bạn được chạy. 4 là một biến số nguyên chứa số lượng đối số và 5 là một biến mảng chứa mỗi giá trị đối số. Đối số đầu tiên luôn là tên của tệp tập lệnh PHP của bạn, trong trường hợp này là 3.Biểu thức 7 được sử dụng với số khác không để cho shell biết rằng lệnh không thành công. Mã thoát thường được sử dụng có thể được tìm thấy ở đây.Để chạy tập lệnh của chúng tôi, ở trên, từ dòng lệnh: 0
XdebugMột trong những công cụ hữu ích nhất trong phát triển phần mềm là trình gỡ lỗi thích hợp. Nó cho phép bạn theo dõi việc thực thi mã của bạn và giám sát nội dung của ngăn xếp. XDebug, trình gỡ lỗi PHP, có thể được sử dụng bởi các IDE khác nhau để cung cấp các điểm dừng và kiểm tra ngăn xếp. Nó cũng có thể cho phép các công cụ như PHPunit và Kcachegrind thực hiện phân tích bảo hiểm mã và hồ sơ mã. Nếu bạn thấy mình bị ràng buộc, sẵn sàng dùng đến ____ 98/________ 99, và bạn vẫn có thể tìm thấy giải pháp - có lẽ bạn cần sử dụng trình gỡ lỗi. Cài đặt XDebug có thể khó khăn, nhưng một trong những tính năng quan trọng nhất của nó là gỡ lỗi từ xa - nếu bạn phát triển mã cục bộ và sau đó kiểm tra nó bên trong VM hoặc trên một máy chủ khác, việc gỡ lỗi từ xa là tính năng mà bạn sẽ muốn bật ngay lập tức. Theo truyền thống, bạn sẽ sửa đổi tệp apache vhost hoặc .htaccess của bạn với các giá trị này: 1Máy chủ từ xa của người dùng từ xa và cổng từ xa sẽ tương ứng với máy tính cục bộ của bạn và cổng mà bạn định cấu hình IDE của mình để nghe. Sau đó, nó chỉ là vấn đề đưa IDE của bạn vào chế độ Lắng nghe cho các kết nối và tải URL: 2IDE của bạn bây giờ sẽ chặn trạng thái hiện tại khi tập lệnh thực thi, cho phép bạn đặt các điểm dừng và thăm dò các giá trị trong bộ nhớ. Debuggers đồ họa giúp nó rất dễ dàng để bước qua mã, kiểm tra các biến và mã eval so với thời gian chạy trực tiếp. Nhiều IDE có hỗ trợ dựa trên plugin hoặc plugin để gỡ lỗi đồ họa với XDebug. MACGDBP là một GUI XDebug độc lập miễn phí, nguồn mở, độc lập cho Mac.
Quản lý phụ thuộcCó rất nhiều thư viện PHP, khung và các thành phần để lựa chọn. Dự án của bạn có thể sẽ sử dụng một số trong số đó - đây là những phụ thuộc dự án. Cho đến gần đây, PHP không có cách tốt để quản lý các phụ thuộc dự án này. Ngay cả khi bạn quản lý chúng theo cách thủ công, bạn vẫn phải lo lắng về máy tự động tải. Đó không còn là một vấn đề. Hiện tại có hai hệ thống quản lý gói chính cho PHP - nhà soạn nhạc và lê. Nhà soạn nhạc hiện là người quản lý gói phổ biến nhất cho PHP, tuy nhiên trong một thời gian dài, Pear là người quản lý gói chính được sử dụng. Biết lịch sử Pear, là một ý tưởng tốt, vì bạn vẫn có thể tìm thấy các tài liệu tham khảo cho nó ngay cả khi bạn không bao giờ sử dụng nó. Nhà soạn nhạc và PackagistNhà soạn nhạc là Trình quản lý phụ thuộc được đề xuất cho PHP. Liệt kê các phụ thuộc dự án của bạn trong một tệp 00 và, với một vài lệnh đơn giản, nhà soạn nhạc sẽ tự động tải xuống các phụ thuộc dự án của bạn và tự động tải thiết lập cho bạn. Nhà soạn nhạc tương tự như NPM trong thế giới Node.js, hoặc Bundler trong thế giới Ruby.Có rất nhiều thư viện PHP tương thích với nhà soạn nhạc và sẵn sàng để được sử dụng trong dự án của bạn. Các gói này được liệt kê trên Packagist, kho lưu trữ chính thức cho các thư viện PHP tương thích với nhà soạn nhạc. Cách cài đặt Trình soạn thảoCách an toàn nhất để tải xuống nhà soạn nhạc là làm theo các hướng dẫn chính thức. Điều này sẽ xác minh trình cài đặt không bị hỏng hoặc giả mạo. Trình cài đặt cài đặt nhị phân 01 trong thư mục làm việc hiện tại của bạn.Chúng tôi khuyên bạn nên cài đặt trình soạn thảo trên toàn cầu (ví dụ: một bản sao duy nhất trong 02). Để làm như vậy, hãy chạy lệnh này tiếp theo: 3LƯU Ý: Nếu trên không thành công do quyền, tiền tố với 03.Để chạy một nhà soạn nhạc được cài đặt cục bộ, bạn đã sử dụng 04, trên toàn cầu, nó chỉ đơn giản là ____105.Cài đặt trên WindowsĐối với người dùng Windows, cách dễ nhất để đứng dậy và chạy là sử dụng trình cài đặt Composersetup, thực hiện cài đặt toàn cầu và thiết lập 06 của bạn để bạn có thể gọi 05 từ bất kỳ thư mục nào trong dòng lệnh của bạn.Cách xác định và cài đặt các phụ thuộcNhà soạn nhạc theo dõi các phụ thuộc dự án của bạn trong một tệp có tên 00. Bạn có thể quản lý nó bằng tay nếu bạn thích hoặc sử dụng chính nhà soạn nhạc. Lệnh 09 sẽ thêm sự phụ thuộc của dự án và nếu bạn không có tệp 00, sẽ được tạo. Dưới đây, một ví dụ bổ sung Twig như một sự phụ thuộc của dự án của bạn. 4Ngoài ra, lệnh 11 sẽ hướng dẫn bạn thông qua việc tạo tệp 00 đầy đủ cho dự án của bạn. Dù bằng cách nào, một khi bạn đã tạo tệp 00 của mình, bạn có thể yêu cầu nhà soạn nhạc tải xuống và cài đặt các phụ thuộc của bạn vào thư mục 0. Điều này cũng áp dụng cho các dự án mà bạn đã tải xuống đã cung cấp tệp 00: 5Tiếp theo, thêm dòng này vào ứng dụng của bạn tệp PHP chính của bạn; Điều này sẽ yêu cầu PHP sử dụng trình tải tự động của Composer cho các phụ thuộc dự án của bạn. 6Bây giờ bạn có thể sử dụng các phụ thuộc dự án của mình và chúng sẽ được tự động tải theo yêu cầu. Cập nhật sự phụ thuộc của bạnNhà soạn nhạc tạo một tệp có tên 16 lưu trữ phiên bản chính xác của mỗi gói mà nó đã tải xuống khi bạn lần đầu tiên chạy 17. Nếu bạn chia sẻ dự án của mình với những người khác, hãy đảm bảo tệp 16 được bao gồm, để khi họ chạy 17, họ sẽ nhận được các phiên bản giống như bạn. Để cập nhật các phụ thuộc của bạn, hãy chạy 20. Don Tiết sử dụng 20 khi triển khai, chỉ 17, nếu không bạn có thể kết thúc với các phiên bản gói khác nhau khi sản xuất.Điều này hữu ích nhất khi bạn xác định các yêu cầu phiên bản của bạn một cách linh hoạt. Chẳng hạn, yêu cầu phiên bản của 23 có nghĩa là bất cứ thứ gì mới hơn 24, nhưng ít hơn 25. Bạn cũng có thể sử dụng ký tự đại diện 26 như trong 27. Bây giờ, lệnh của nhà soạn nhạc ____ ____120 sẽ nâng cấp tất cả các phụ thuộc của bạn lên phiên bản mới nhất phù hợp với các hạn chế mà bạn xác định.Cập nhật thông báoĐể nhận thông báo về phát hành phiên bản mới, bạn có thể đăng ký thư viện. Kiểm tra sự phụ thuộc của bạn cho các vấn đề bảo mậtTrình kiểm tra bảo mật PHP cục bộ là một công cụ dòng lệnh, sẽ kiểm tra tệp 16 của bạn và cho bạn biết nếu bạn cần cập nhật bất kỳ phụ thuộc nào của bạn.Xử lý các phụ thuộc toàn cầu với nhà soạn nhạcNhà soạn nhạc cũng có thể xử lý các phụ thuộc toàn cầu và nhị phân của chúng. Việc sử dụng là thẳng, tất cả những gì bạn cần làm là tiền tố lệnh của bạn với 30. Ví dụ, nếu bạn muốn cài đặt phpunit và có sẵn trên toàn cầu, bạn sẽ chạy lệnh sau: 7Điều này sẽ tạo ra một thư mục 31 trong đó các phụ thuộc toàn cầu của bạn cư trú. Để có sẵn các gói được cài đặt, các nhị phân có sẵn ở mọi nơi, bạn đã thêm thư mục 32 vào biến 06 của bạn.
LÊMột người quản lý gói kỳ cựu mà một số nhà phát triển PHP thích là lê. Nó hoạt động tương tự như nhà soạn nhạc, nhưng có một số khác biệt đáng chú ý. Pear yêu cầu mỗi gói phải có một cấu trúc cụ thể, điều đó có nghĩa là tác giả của gói phải chuẩn bị cho việc sử dụng với lê. Sử dụng một dự án không được chuẩn bị để làm việc với lê là không thể. Pear cài đặt các gói trên toàn cầu, có nghĩa là sau khi cài đặt chúng khi chúng có sẵn cho tất cả các dự án trên máy chủ đó. Điều này có thể tốt nếu nhiều dự án dựa vào cùng một gói với cùng một phiên bản nhưng có thể dẫn đến các vấn đề nếu phiên bản xung đột giữa hai dự án phát sinh. Cách cài đặt lêBạn có thể cài đặt PEAR bằng cách tải xuống trình cài đặt 34 và thực hiện nó. Tài liệu lê có hướng dẫn cài đặt chi tiết cho mọi hệ điều hành.Nếu bạn đang sử dụng Linux, bạn cũng có thể xem Trình quản lý gói phân phối của bạn. Debian và Ubuntu, chẳng hạn, có gói 35 APT.Cách cài đặt góiNếu gói được liệt kê trong danh sách gói lê, bạn có thể cài đặt nó bằng cách chỉ định tên chính thức: 8Nếu gói được lưu trữ trên một kênh khác, bạn cần phải 36 kênh trước và cũng chỉ định nó khi cài đặt. Xem các tài liệu sử dụng kênh để biết thêm thông tin về chủ đề này.
Xử lý phụ thuộc lê với nhà soạn nhạcNếu bạn đã sử dụng Composer và bạn cũng muốn cài đặt một số mã lê, bạn có thể sử dụng trình soạn thảo để xử lý các phụ thuộc lê của mình. Ví dụ này sẽ cài đặt mã từ 37: 9Phần đầu tiên 38 sẽ được sử dụng để cho nhà soạn nhạc biết rằng nó nên khởi tạo (hoặc khám phá ra trong thuật ngữ PEAR) The Pear repo. Sau đó, phần 39 sẽ tiền tố tên gói như thế này:
Tiền tố của Pear Pear, được mã hóa cứng để tránh mọi xung đột, vì kênh lê có thể giống như tên nhà cung cấp gói khác, sau đó tên ngắn kênh (hoặc URL đầy đủ) có thể được sử dụng để tham khảo kênh nào. Khi mã này được cài đặt, nó sẽ có sẵn trong thư mục nhà cung cấp của bạn và tự động có sẵn thông qua trình tải tự động của nhà soạn nhạc:
Để sử dụng gói lê này, chỉ cần tham chiếu nó như vậy: 0
Thực hành mã hóaNhững thứ cơ bảnPHP là một ngôn ngữ rộng lớn cho phép các lập trình viên ở tất cả các cấp khả năng sản xuất mã không chỉ nhanh chóng mà còn hiệu quả. Tuy nhiên, trong khi tiến bộ qua ngôn ngữ, chúng ta thường quên những điều cơ bản mà chúng ta đã học (hoặc bỏ qua) để ủng hộ những cắt ngắn và/hoặc thói quen xấu. Để giúp chống lại vấn đề chung này, phần này nhằm mục đích nhắc nhở các lập trình viên về các thực tiễn mã hóa cơ bản trong PHP.
Ngày và giờPHP có một lớp có tên DateTime để giúp bạn khi đọc, viết, so sánh hoặc tính toán theo ngày và giờ. Có nhiều chức năng liên quan đến ngày và thời gian trong PHP bên cạnh DateTime, nhưng nó cung cấp giao diện hướng đối tượng đẹp cho các mục đích sử dụng phổ biến nhất. DateTime có thể xử lý các múi giờ, nhưng đó nằm ngoài phạm vi của phần giới thiệu ngắn này. Để bắt đầu làm việc với DateTime, hãy chuyển đổi chuỗi ngày và thời gian RAW thành một đối tượng bằng phương thức nhà máy 40 hoặc làm 41 để có được ngày và thời gian hiện tại. Sử dụng phương thức 42 để chuyển đổi DateTime trở lại chuỗi cho đầu ra. 1Tính toán với DateTime là có thể với lớp DateInterval. DateTime có các phương thức như 43 và 44 lấy DateInterVal làm đối số. Không viết mã mong đợi cùng một số giây mỗi ngày. Cả tiết kiệm ánh sáng ban ngày và thay đổi múi giờ sẽ phá vỡ giả định đó. Sử dụng khoảng thời gian ngày thay thế. Để tính toán chênh lệch ngày sử dụng phương pháp 45. Nó sẽ trả về DateInterval mới, siêu dễ hiển thị. 2Bạn có thể sử dụng so sánh tiêu chuẩn trên các đối tượng DateTime: 3Một ví dụ cuối cùng để chứng minh lớp Dateperiod. Nó được sử dụng để lặp lại các sự kiện định kỳ. Nó có thể lấy hai đối tượng DateTime, bắt đầu và kết thúc và khoảng thời gian mà nó sẽ trả về tất cả các sự kiện ở giữa. 4Một phần mở rộng API PHP phổ biến là carbon. Nó kế thừa mọi thứ trong lớp DateTime, do đó liên quan đến các thay đổi mã tối thiểu, nhưng các tính năng bổ sung bao gồm hỗ trợ nội địa hóa, cách thêm để thêm, trừ và định dạng một đối tượng DateTime, cộng với một phương tiện để kiểm tra mã của bạn bằng cách mô phỏng ngày và thời gian bạn chọn.
Mô hình thiết kếKhi bạn đang xây dựng ứng dụng của mình, việc sử dụng các mẫu chung trong mã và các mẫu phổ biến của bạn rất hữu ích cho cấu trúc tổng thể của dự án của bạn. Sử dụng các mẫu phổ biến là hữu ích vì nó giúp quản lý mã của bạn dễ dàng hơn nhiều và cho phép các nhà phát triển khác nhanh chóng hiểu mọi thứ phù hợp với nhau. Nếu bạn sử dụng một khung thì hầu hết các mã cấp cao hơn và cấu trúc dự án sẽ dựa trên khung đó, vì vậy rất nhiều quyết định mẫu được đưa ra cho bạn. Nhưng vẫn tùy thuộc vào bạn để chọn ra các mẫu tốt nhất để theo dõi trong mã bạn xây dựng trên đỉnh của khung. Mặt khác, nếu bạn không sử dụng khung để xây dựng ứng dụng của mình thì bạn phải tìm các mẫu phù hợp nhất với loại và kích thước của ứng dụng mà bạn xây dựng. Bạn có thể tìm hiểu thêm về các mẫu thiết kế PHP và xem các ví dụ làm việc tại: https://designpatternsphp.readthedocs.io/ Làm việc với UTF-8Phần này ban đầu được viết bởi Alex Cabal tại các thực tiễn tốt nhất của PHP và đã được sử dụng làm cơ sở cho lời khuyên UTF-8 của chúng tôi. Không có người nào. Hãy cẩn thận, chi tiết, và nhất quán.Ngay bây giờ PHP không hỗ trợ Unicode ở mức thấp. Có nhiều cách để đảm bảo rằng các chuỗi UTF-8 được xử lý OK, nhưng nó không dễ dàng và nó đòi hỏi phải đào vào hầu hết các cấp của ứng dụng web, từ HTML đến SQL đến PHP. Chúng tôi sẽ nhắm đến một bản tóm tắt ngắn gọn, thực tế. UTF-8 ở cấp độ PHPCác hoạt động chuỗi cơ bản, như kết hợp hai chuỗi và gán chuỗi cho các biến, don don cần bất cứ điều gì đặc biệt cho UTF-8. Tuy nhiên, hầu hết các chức năng chuỗi, như 46 và 47, không cần xem xét đặc biệt. Các chức năng này thường có đối tác 48: ví dụ, 49 và 50. Các chuỗi 48 này được cung cấp cho bạn thông qua tiện ích mở rộng chuỗi Multibyte và được thiết kế đặc biệt để hoạt động trên các chuỗi Unicode.Bạn phải sử dụng các chức năng 48 bất cứ khi nào bạn hoạt động trên chuỗi Unicode. Ví dụ: nếu bạn sử dụng 53 trên chuỗi UTF-8, thì có một cơ hội tốt, kết quả sẽ bao gồm một số nhân vật nửa bị cắt xén. Chức năng chính xác để sử dụng sẽ là đối tác Multibyte, 54.Phần khó là nhớ sử dụng các hàm 48 mọi lúc. Nếu bạn quên thậm chí chỉ một lần, chuỗi unicode của bạn có cơ hội bị cắt xén trong quá trình xử lý tiếp theo.Không phải tất cả các hàm chuỗi đều có đối tác 48. Nếu có một người cho những gì bạn muốn làm, thì bạn có thể không gặp may.Bạn nên sử dụng hàm 57 ở đầu mỗi tập lệnh PHP bạn viết (hoặc ở đầu tập lệnh bao gồm toàn cầu của bạn) và hàm 58 ngay sau khi tập lệnh của bạn xuất ra trình duyệt. Xác định rõ ràng việc mã hóa các chuỗi của bạn trong mỗi kịch bản sẽ giúp bạn tiết kiệm rất nhiều đau đầu trên đường.Ngoài ra, nhiều hàm PHP hoạt động trên các chuỗi có tham số tùy chọn cho phép bạn chỉ định mã hóa ký tự. Bạn phải luôn luôn chỉ ra rõ ràng UTF-8 khi được cung cấp tùy chọn. Ví dụ: 59 có tùy chọn mã hóa ký tự và bạn phải luôn chỉ định UTF-8 nếu xử lý các chuỗi đó. Lưu ý rằng kể từ Php 5.4.0, UTF-8 là mã hóa mặc định cho 59 và 61.Cuối cùng, nếu bạn đang xây dựng một ứng dụng phân tán và không thể chắc chắn rằng tiện ích mở rộng 62 sẽ được bật, thì hãy xem xét sử dụng gói nhà soạn nhạc Symfony/PolyFill-MBString. Điều này sẽ sử dụng 62 nếu nó có sẵn và quay trở lại các chức năng không UTF-8 nếu không.UTF-8 ở cấp cơ sở dữ liệuNếu tập lệnh PHP của bạn truy cập MySQL, thì có một cơ hội chuỗi của bạn có thể được lưu trữ dưới dạng chuỗi không UTF-8 trong cơ sở dữ liệu ngay cả khi bạn tuân theo tất cả các biện pháp phòng ngừa ở trên. Để đảm bảo các chuỗi của bạn đi từ PHP sang MySQL dưới dạng UTF-8, hãy đảm bảo cơ sở dữ liệu và bảng của bạn được đặt thành bộ và đối chiếu ký tự 64 và bạn sử dụng ký tự 64 trong chuỗi kết nối PDO. Xem mã ví dụ bên dưới. Điều này là cực kỳ quan trọng.Lưu ý rằng bạn phải sử dụng bộ ký tự 64 để hỗ trợ UTF-8 hoàn chỉnh, không phải bộ ký tự 67! Xem đọc thêm cho lý do tại sao.UTF-8 ở cấp trình duyệtSử dụng chức năng 58 để đảm bảo rằng tập lệnh PHP của bạn xuất các chuỗi UTF-8 cho trình duyệt của bạn.Trình duyệt sau đó sẽ cần được trả lời bởi phản hồi HTTP rằng trang này nên được coi là UTF-8. Ngày nay, người ta thường đặt bộ ký tự trong tiêu đề phản hồi HTTP như thế này: 5Cách tiếp cận lịch sử để thực hiện điều đó là bao gồm thẻ Charset 69 trong thẻ trang của bạn ____ ____170. 6đọc thêm
Quốc tế hóa (I18N) và nội địa hóa (L10N)Tuyên bố miễn trừ trách nhiệm cho người mới đến: I18N và L10N là chữ số, một loại viết tắt trong đó các số được sử dụng để rút ngắn các từ - trong trường hợp của chúng tôi, quốc tế hóa trở thành i18n và nội địa hóa, l10n. Trước hết, chúng ta cần xác định hai khái niệm tương tự và những điều liên quan khác:
Những cách phổ biến để thực hiệnCách dễ nhất để quốc tế hóa phần mềm PHP là sử dụng các tệp mảng và sử dụng các chuỗi đó trong các mẫu, chẳng hạn như 81. Tuy nhiên, cách này hầu như không được khuyến nghị cho các dự án nghiêm túc, vì nó đặt ra một số vấn đề bảo trì dọc theo đường - một số có thể xuất hiện ngay từ đầu, chẳng hạn như đa nguyên. Vì vậy, xin vui lòng, hãy thử điều này nếu dự án của bạn sẽ chứa nhiều hơn một vài trang.Cách cổ điển nhất và thường được coi là tài liệu tham khảo cho I18N và L10N là một công cụ UNIX có tên 82. Nó có từ năm 1995 và vẫn là một triển khai hoàn chỉnh để dịch phần mềm. Nó đủ dễ dàng để chạy, trong khi vẫn thể thao các công cụ hỗ trợ mạnh mẽ. Đó là về gettext chúng ta sẽ nói chuyện ở đây. Ngoài ra, để giúp bạn không bị lộn xộn đối với dòng lệnh, chúng tôi sẽ trình bày một ứng dụng GUI tuyệt vời có thể được sử dụng để dễ dàng cập nhật nguồn L10N của bạn.Các công cụ khácCó những thư viện phổ biến được sử dụng hỗ trợ GetText và các triển khai khác của I18N. Một số trong số chúng có vẻ dễ dàng hơn để cài đặt hoặc thể thao các tính năng bổ sung hoặc định dạng tệp i18n. Trong tài liệu này, chúng tôi tập trung vào các công cụ được cung cấp với Core PHP, nhưng ở đây chúng tôi liệt kê các công cụ khác để hoàn thành:
Các khung khác cũng bao gồm các mô -đun I18N, nhưng chúng không có sẵn bên ngoài cơ sở mã của chúng:
Nếu bạn quyết định truy cập một trong các thư viện không cung cấp trình trích xuất, bạn có thể muốn sử dụng các định dạng getText, vì vậy bạn có thể sử dụng công cụ gettext gốc (bao gồm cả poEdit) như được mô tả trong phần còn lại của chương. GetTextCài đặtBạn có thể cần cài đặt GetText và thư viện PHP liên quan bằng cách sử dụng trình quản lý gói của bạn, như 89 hoặc 90. Sau khi được cài đặt, bật nó bằng cách thêm 91 (Linux/UNIX) hoặc 92 (Windows) vào 93 của bạn.Ở đây chúng tôi cũng sẽ sử dụng PoEdit để tạo các tệp dịch. Bạn có thể sẽ tìm thấy nó trong Trình quản lý gói hệ thống của bạn; Nó có sẵn cho Unix, Mac và Windows và cũng có thể được tải xuống miễn phí trên trang web của họ. Kết cấuCác loại tệpCó ba tập tin bạn thường xử lý khi làm việc với GetText. Các tệp chính là các tệp PO (đối tượng di động) và MO (đối tượng máy), đầu tiên là danh sách các đối tượng dịch có thể đọc được và thứ hai, nhị phân tương ứng sẽ được GetText giải thích khi thực hiện nội địa hóa. Ngoài ra, còn có một tệp POT (mẫu), chỉ đơn giản là chứa tất cả các khóa hiện có từ các tệp nguồn của bạn và có thể được sử dụng làm hướng dẫn để tạo và cập nhật tất cả các tệp PO. Các tệp mẫu đó không bắt buộc: tùy thuộc vào công cụ bạn đang sử dụng để làm L10N, bạn có thể chỉ hoạt động tốt chỉ với các tệp PO/MO. Bạn sẽ luôn có một cặp tệp PO/MO cho mỗi ngôn ngữ và vùng, nhưng chỉ có một nồi mỗi tên miền. MiềnCó một số trường hợp, trong các dự án lớn, nơi bạn có thể cần phân tách các bản dịch khi cùng một từ truyền đạt ý nghĩa khác nhau được đưa ra một bối cảnh. Trong những trường hợp đó, bạn chia chúng thành các lĩnh vực khác nhau. Về cơ bản, chúng được đặt tên là các nhóm các tệp POT/PO/MO, trong đó tên tệp là miền dịch nói trên. Các dự án vừa và nhỏ thường, để đơn giản, chỉ sử dụng một miền; Tên của nó là tùy ý, nhưng chúng tôi sẽ sử dụng các loại chính cho các mẫu mã của chúng tôi. Ví dụ, trong các dự án Symfony, các tên miền được sử dụng để phân tách bản dịch cho các thông báo xác thực. Mã địa phươngMột ngôn ngữ chỉ đơn giản là một mã xác định một phiên bản của ngôn ngữ. Nó được xác định theo thông số kỹ thuật ISO 639-1 và ISO 3166-1 Alpha-2: hai chữ cái chữ thường cho ngôn ngữ, tùy chọn theo sau là một dòng chữ và hai chữ cái trên xác định mã quốc gia hoặc mã khu vực. Đối với các ngôn ngữ hiếm, ba chữ cái được sử dụng. Đối với một số người nói, phần đất nước có vẻ dư thừa. Trên thực tế, một số ngôn ngữ có phương ngữ ở các quốc gia khác nhau, chẳng hạn như tiếng Đức Áo ( 94) hoặc tiếng Bồ Đào Nha Brazil ( 95). Phần thứ hai được sử dụng để phân biệt giữa các phương ngữ đó - khi nó không có mặt, nó được coi là một phiên bản ngôn ngữ chung của ngôn ngữ.Cấu trúc thư mụcĐể sử dụng GetText, chúng ta sẽ cần phải tuân thủ một cấu trúc cụ thể của các thư mục. Đầu tiên, bạn sẽ cần chọn một gốc tùy ý cho các tệp L10N của mình trong kho lưu trữ nguồn của bạn. Bên trong nó, bạn sẽ có một thư mục cho mỗi địa phương cần thiết và một thư mục 96 cố định sẽ chứa tất cả các cặp PO/MO của bạn. Thí dụ: 7Hình thức số nhiềuNhư chúng tôi đã nói trong phần giới thiệu, các ngôn ngữ khác nhau có thể thể hiện các quy tắc số nhiều khác nhau. Tuy nhiên, GetText cứu chúng ta khỏi rắc rối này một lần nữa. Khi tạo một tệp 97 mới, bạn sẽ phải khai báo các quy tắc số nhiều cho ngôn ngữ đó và các phần được dịch có tính nhạy cảm với số nhiều sẽ có một dạng khác nhau cho mỗi quy tắc đó. Khi gọi getText trong mã, bạn sẽ phải chỉ định số liên quan đến câu và nó sẽ thực hiện đúng biểu mẫu để sử dụng - thậm chí sử dụng thay thế chuỗi nếu cần.Các quy tắc số nhiều bao gồm số lượng số nhiều có sẵn và thử nghiệm boolean với 98 sẽ xác định trong đó quy tắc số lượng đã cho giảm (bắt đầu số lượng với 0). Ví dụ:
Bây giờ bạn đã hiểu cơ sở của cách thức hoạt động của các quy tắc số nhiều - và nếu bạn đã làm, xin vui lòng xem một lời giải thích sâu sắc hơn về hướng dẫn biệt ngữ -, bạn có thể muốn sao chép những cái bạn cần từ một danh sách thay vì viết chúng bằng tay. Khi gọi ra getText để thực hiện nội địa hóa trên các câu với các bộ đếm, bạn cũng sẽ phải cung cấp cho nó số liên quan. GetText sẽ tìm ra quy tắc nào nên có hiệu lực và sử dụng phiên bản bản địa hóa chính xác. Bạn sẽ cần phải bao gồm trong tệp 97 Một câu khác nhau cho mỗi quy tắc số nhiều được xác định.Thực hiện mẫuSau tất cả lý thuyết đó, hãy để có một chút thực tế. Ở đây, một đoạn trích của một tệp 97 - hãy làm tâm trí với định dạng của nó, nhưng thay vào đó là nội dung tổng thể; Bạn sẽ học cách chỉnh sửa nó một cách dễ dàng sau: 8Phần đầu tiên hoạt động giống như một tiêu đề, có 04 và 05 đặc biệt trống rỗng. Nó mô tả mã hóa tệp, các dạng số nhiều và những thứ khác ít liên quan hơn. Phần thứ hai dịch một chuỗi đơn giản từ tiếng Anh sang người Bồ Đào Nha Brazil và phần thứ ba cũng vậy, nhưng tận dụng sự thay thế chuỗi từ 06 để bản dịch có thể chứa tên người dùng và ngày truy cập. Phần cuối cùng là một mẫu các hình thức đa nguyên hóa, hiển thị phiên bản số ít và số nhiều là 04 trong tiếng Anh và các bản dịch tương ứng của chúng là 05 0 và 1 (theo số được đưa ra bởi quy tắc số nhiều). Ở đó, thay thế chuỗi cũng được sử dụng để số có thể được nhìn thấy trực tiếp trong câu, bằng cách sử dụng 09. Các hình thức số nhiều luôn có hai 04 (số ít và số nhiều), do đó, không nên sử dụng một ngôn ngữ phức tạp làm nguồn dịch.Thảo luận về các khóa L10NNhư bạn có thể nhận thấy, chúng tôi đang sử dụng làm ID nguồn trong câu thực tế bằng tiếng Anh. Rằng 04 là giống nhau được sử dụng trong tất cả các tệp 97 của bạn, có nghĩa là các ngôn ngữ khác sẽ có cùng định dạng và cùng các trường 04 nhưng được dịch các dòng 05.Nói về các khóa dịch, có hai trường học chính ở đây:
Hướng dẫn sử dụng GetText ủng hộ cách tiếp cận đầu tiên vì nói chung, người dùng và người dùng dễ dàng hơn trong trường hợp gặp rắc rối. Đó là cách chúng tôi cũng sẽ làm việc ở đây. Tuy nhiên, tài liệu Symfony ủng hộ bản dịch dựa trên từ khóa, để cho phép các thay đổi độc lập của tất cả các bản dịch mà không ảnh hưởng đến các mẫu. Sử dụng hàng ngàyTrong một ứng dụng điển hình, bạn sẽ sử dụng một số hàm getText trong khi viết văn bản tĩnh trong các trang của bạn. Những câu đó sau đó sẽ xuất hiện trong các tệp 97, được dịch, biên dịch thành các tệp 24 và sau đó, được sử dụng bởi GetText khi hiển thị giao diện thực tế. Cho rằng, hãy để mối quan hệ với nhau những gì chúng ta đã thảo luận cho đến nay trong một ví dụ từng bước:1. Một tệp mẫu mẫu, bao gồm một số cuộc gọi getText khác nhau 9
2. Một tệp thiết lập mẫu (brew unlink php
brew link --overwrite
|