Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

10 nguyên tắc của các bậc thầy PHP

by
Difficulty:IntermediateLength:LongLanguages:

Vietnamese (Tiếng Việt) translation by Andrea Ho (you can also view the original English article)

Với việc áp dụng rộng rãi PHP, việc tìm script hoặc snippet để thực hiện chính xác điều bạn cần trở nên quá dễ dàng. Thật không may, không xu hướng chính xác cho biết một "thực hành tốt" là thế nào và thế nào là không quá tốt khi viết một mã kịch bản PHP. Chúng ta cần các nguồn đáng tin cậy, những người đã chứng minh rằng họ có nắm vững các thực tiễn tốt nhất của PHP.

Chúng ta cần các bậc thầy PHP để chỉ cho chúng ta các nguyên tắc tốt nhất cần tuân theo khi lập trình PHP cấp cao.


1. Chỉ sử dụng PHP khi bạn cần - Rasmus Lerdorf

Không có tài phương sách nào tốt hơn người tạo ra PHP để biết PHP có khả năng gì. Rasmus Lerdorf đã tạo ra PHP vào năm 1995, và kể từ đó, ngôn ngữ này đã lan truyền như đám cháy dữ dội thông qua cộng đồng nhà phát triển, thay đổi bộ mặt của Internet. Tuy nhiên, Rasmus đã không tạo ra PHP với ý định đó. PHP được tạo ra do nhu cầu giải quyết các vấn đề phát triển web.

Và cũng như nhiều dự án nguồn mở đã trở nên phổ biến, động lực chưa bao giờ là triết lý hay thậm chí là tự ái. Đây hoàn toàn là tình huống cần một công cụ để giải quyết các vấn đề liên quan đến Web trong thế giới thực. Năm 1994, các chọn lựa khá hạn chế khi nói đến các công cụ phát triển Web.

Tuy nhiên, bạn không thể sử dụng PHP cho mọi thứ. Lerdorf là người đầu tiên thừa nhận rằng PHP thực sự chỉ là một trong số các công cụ của bạn và thậm chí PHP cũng có những hạn chế.

Sử dụng công cụ thích hợp cho công việc. Tôi đã đi qua các công ty mà hoàn toàn đặt niềm tin vào PHP, triển khai nó ở mọi nơi, nhưng điều đó không bao giờ có nghĩa là một ngôn ngữ general-purpose () chung phù hợp cho mọi vấn đề. Hầu như nó là ngôi nhà cho ngôn ngữ front-end cho Web.

Việc cố gắng sử dụng PHP cho mọi thứ không hiệu quả và chắc chắn đó không phải là cách sử dụng tốt nhất cho thời gian làm nhà phát triển web của bạn. Đừng ngại sử dụng các ngôn ngữ khác nếu PHP không phù hợp cho dự án của bạn.


2. Sử dụng nhiều bảng với PHP và MYSQL khi mở rộng - Matt Mullenweg

Không cần phải nói đến uy tín của Matt Mullenweg với PHP. Anh ấy, (cùng với một cộng đồng sốt sắng), đã phát triển hệ thống blog phổ biến nhất trên hành tinh: Wordpress. Sau khi tạo ra Wordpress, Matt và công ty đã ra mắt Wordpress.com, một trang blog miễn phí dựa trên phần mềm viết blog nền tảng Wordpress MU cho nhiều blog. Tại thời điểm viết bài này, Wordpress.com lưu trữ hơn 4 triệu blog và người dùng của họ đã viết hơn 140.000 bài đăng ngày trong hôm nay. (Bạn có thể xem thêm số liệu thống kê thú vị về việc sử dụng Wordpress.com tại đây.)

Nếu có ai biết cách mở rộng quy mô một website, thì đó là Matt Mullenweg. Vào năm 2006, Matt đã đưa ra một thấu hiểu về cấu trúc cơ sở dữ liệu của Wordpress và giải thích lý do tại sao Wordpress MU sử dụng một bảng MySQL riêng cho mỗi blog, trái ngược với việc sử dụng một bảng "monolithic" khổng lồ cho tất cả các blog.

Chúng tôi đã thử nghiệm phương pháp này cho MU, nhưng nhận thấy nó quá mức để mở rộng một thời điểm nhất định. Với các cấu trúc monolithic, bạn vấp phải một rào cản do chính phần cứng của bạn. Trong MU, người dùng được phân chia và có thể được phân vùng dễ dàng, ví dụ trên WordPress.com, chúng tôi có người dùng được phân vùng giữa 4096 cơ sở dữ liệu, cho phép bạn mở rộng rất rẻ và hiệu quả tới hàng trăm nghìn thậm chí hàng triệu người dùng và mức lưu lượng cực cao .

Khả năng migrate các bảng cho phép code và thậm chí các blog chạy nhanh hơn nhiều và mở rộng dễ dàng hơn. Bên cạnh một số bộ nhớ đệm nặng và việc sử dụng cơ sở dữ liệu thông minh, Matt đã chỉ ra rằng các website cực kỳ phổ biến như Facebook và Wordpress.com có thể vận hành tốt PHP và xử lý lưu lượng tải đáng kinh ngạc.


3. Đừng bao giờ tin tưởng người dùng của bạn - Dave Child

Dave Child là đứa con tinh thần đằng sau website Added Bytes (trước đây là ilovejackdaniels.com) đã giới thiệu các cheat sheet tuyệt vời của Dave cho nhiều ngôn ngữ lập trình. Dave's làm việc cho nhiều công ty phát triển ở UK và đã khiến bản thân trở thành một người có danh tiếng trong giới lập trình.

Dave cung cấp một số lời khuyên khôn ngoan khi viết code bảo mật trong PHP: Đừng tin người dùng của bạn. Họ chỉ có thể gây hại đến bạn.

Vì vậy, quy tắc chính yếu của tất cả sự phát triển web và tôi không thể không nhấn mạnh là: Đừng bao giờ, đừng bao giờ, Tin tưởng Người dùng của bạn. Hãy giả định mỗi phần dữ liệu mà website của bạn thu thập từ người dùng có chứa code độc. Luôn luôn như thế. Điều đó bao gồm dữ liệu bạn nghĩ bạn đã kiểm tra xác thực phía máy khách, ví dụ như sử dụng JavaScript. Nếu bạn có thể quản lý điều đó, bạn sẽ có một khởi đầu tốt. Nếu bảo mật PHP quan trọng đối với bạn, thì điều duy nhất này rất quan trọng nhất để tìm hiểu.

Dave tiếp tục đưa ra các ví dụ cụ thể về các thực tiễn bảo mật trong các phần một, hai và ba của loạt bài 'Writing Secure PHP' của mình. Nhưng điều tuyệt vời nhất của anh là đây:

Cuối cùng, hãy hoàn toàn hoang tưởng.
Nếu bạn cho rằng website của bạn sẽ không bao giờ bị tấn công, hoặc phải đối mặt với bất kỳ vấn đề nào, thì khi cuối cùng có sự cố xảy ra, bạn sẽ gặp nhiều rắc rối. Mặt khác, nếu bạn cho rằng mỗi khách truy cập vào website của bạn sẽ ra ngoài để tấn công bạn và bạn luôn hiện diện ở chiến tranh, thì bạn sẽ tự bảo vệ website của mình an toàn và chuẩn bị trong trường hợp xảy ra sự cố.


4. Quan tâm đến bộ nhớ đệm của PHP - Ben Balbo

Ben Balbo hiện đang viết cho Site Point, một website hướng dẫn rất được tôn trọng dành cho các nhà phát triển và nhà thiết kế. Anh ấy trong ủy ban cho cả Melbourne PHP User Groups và câu lạc bộ Open Source Developers, vì vậy anh ấy biết các thông tin hữu dụng về ngôn ngữ. Không có gì ngạc nhiên với nền tảng của Ben là một nhà phát triển và đào tạo PHP mà ông khuyên nên quan tâm một chút và có chuẩn bị cho bộ nhớ đệm PHP.

Nếu bạn bận rộn và có một website tĩnh - chẳng hạn như blog - được quản lý thông qua hệ thống quản lý nội dung, nó có thể sẽ yêu cầu một chút thay đổi, nhưng có thể được hưởng lợi từ những cải tiến hiệu suất lớn do bạn đầu tư ít thời gian. Thiết lập bộ nhớ đệm cho một website phức tạp hơn vệc tạo nội dung trên cơ sở cho mỗi người dùng, chẳng hạn như cổng thông tin hoặc hệ thống giỏ hàng, sẽ cho thấy một chút khó khăn và sẽ tốn thời gian hơn, nhưng vẫn có lợi ích rõ ràng.

Có nhiều kỹ thuật khác nhau để lưu vào bộ đệm trong PHP và Ben đã nhắc đến vào một vài trong số những kỹ thuật lớn hơn trong bài viết, như:

  • gọi các hàm đã lưu vào bộ nhớ đệm
  • thiết lập các header quá hạn
  • tải tfile bộ nhớ đệm trong IE
  • bộ nhớ đệm cho template
  • Cache_Lite

và nhiều thứ khác. Do bản chất của các ngôn ngữ động PHP, bộ nhớ đệm rất quan trọng để lưu trữ những phần của trang được truy cập thường xuyên và không thay đổi thường xuyên.


5. Tăng tốc phát triển PHP với IDE, Template và Snippet - Chad Kieffer

Khi Chad Kieffer không bận rộn làm việc về giao diện người dùng và quản trị cơ sở dữ liệu, anh ta đưa ra lời khuyên chuyên môn từ blog của mình 2 tablespoons. Vì lĩnh vực chuyên môn rộng lớn của Chad, anh ta thường có thể nhìn thấy bức tranh lớn mà các lập trình viên khác có thể không thấy, đặc biệt khi nói đến phương pháp toàn diện mà Chad thực hiện để phát triển một website. Anh ấy rãnh rẽ về tất cả các khía cạnh của quá trình phát triển, vì vậy bất kỳ hiểu biết nào anh ấy có thể cung cấp với việc tập hợp toàn bộ một dự án sẽ có ích.

Chad tin rằng việc sử dụng một IDE như PDT của Eclipse (gói phát triển PHP của Eclipse) với nhóm các template và snippet thực sự có thể tăng tốc thời gian hoàn thành của một dự án.

Lịch trình bận rộn, danh sách dài cần thực hiện và thời hạn khiến các nhà phát triển khó làm quen với một số tính năng nâng cao mà công cụ của họ cung cấp. Đây là một điều xấu hổ, bởi vì một số tính năng như Eclipse Templates, thực sự có thể giảm thời gian code và các lỗi.

Thông thường nói rằng bất cứ khi nào bạn có thể tự động hóa một tác vụ, bạn sẽ hoàn thành dự án nhanh hơn. Điều tương tự cũng đúng với lý thuyết của Dan. Bằng cách dành thời gian để tạo các template mà bạn sẽ sử dụng nhiều lần, bạn sẽ tiết kiệm được khối thời gian để tự động hóa các phần lặp đi lặp lại của việc code.

Bằng cách sử dụng IDE như Eclipse và gói PDT, bạn sẽ thấy rằng thời gian phát triển của bạn sẽ tăng tốc. IDE sẽ tự động đóng các dấu ngoặc, thêm các dấu chấm phẩy bị thiếu đó và thậm chí cho phép bạn gỡ lỗi trong trình chỉnh sửa mà không cần phải tải lên máy chủ.
(Chad có một hướng dẫn hữu ích getting started with Eclipse PDT và các lợi ích của IDE nói chung, nếu bạn quan tâm.)


6. Sử dụng tốt các hàm filter của PHP tốt hơn - Joey Sochacki

Mặc dù Joey Sochacki có thể không nổi tiếng như Matt Mullenweg trong cộng đồng PHP, nhưng anh ta là một nhà phát triển web dày dạn và chia sẻ những lời khuyên mà anh ta đã chọn ra trên blog của mình tại Devolio.

Joey đã phát hiện ra rằng mặc dù có rất nhiều filter diễn ra khi viết code PHP, nhưng không nhiều lập trình viên sử dụng các hàm filter của PHP.

Filter dữ liệu. Tất cả chúng ta phải làm điều đó. Hầu hết, nếu không phải tất cả chúng ta, xem nhẹ vấn đề đó. Tuy nhiên, hầu hết không biết đến các hàm filter_ * của PHP, cho phép chúng tôi thực hiện tất cả các kiểu lọc và xác thực. Sử dụng các hàm filter_ * của PHP, chúng tôi có thể xác thực và sanitize các kiểu dữ liệu, URL, địa chỉ email, địa chỉ IP, loại bỏ các ký tự xấu và hơn thế nữa, tất cả đều dễ dàng.

Việc filter có thể khó khăn, nhưng hướng dẫn này có thể giúp rất nhiều. Với sự giúp đỡ của Joey, bạn sẽ học cách cài đặt các filter và lọc gần như mọi thứ, tận dụng khả năng lọc của PHP.


7. Sử dụng PHP Framework - Josh Sharp

Luôn có một cuộc tranh luận về việc có nên sử dụng một framework PHP như Zend, CakePHP, Code Igniter hay bất kỳ framework nào khác. Có những mặt tốt và mặt trái khi sử dụng một, và nhiều nhà phát triển có ý kiến riêng của họ về việc có nên đi theo con đường này hay không.

Josh Sharp là một nhà phát triển web, hằng ngày anh tạo ra những website cho nhiều khách hàng. Đây là lý do tại sao bạn nên tin tưởng anh ấy khi anh ấy nói rằng nên sử dụng framework PHP để tiết kiệm thời gian và loại bỏ sai lầm khi lập trình. Tại sao? Josh tin rằng đó là vì PHP quá dễ học.

Nhưng việc PHP dễ sử dụng cũng là sự thế yếu của nó. Vì có ít giới hạn hơn về cấu trúc code màbạn viết, nên việc viết code xấu sẽ dễ dàng hơn nhiều. Nhưng có một giải pháp: sử dụng framework.

Các framework PHP giúp chuẩn hóa cách bạn lập trình và có thể tiết kiệm rất nhiều thời gian trong quá trình phát triển. Bạn có thể đọc thêm về lợi ích của việc sử dụng framework PHP tại blog của Josh.


8. Đừng sử dụng framework PHP - Rasmus Lerdorf

Trái với niềm tin của Josh rằng người ta nên sử dụng một framework PHP, Rasmus Lerdorf, cha đẻ của PHP, tin rằng các framework đó không tuyệt vời như vậy. Tại sao? Bởi vì chúng hoạt động chậm hơn nhiều so với PHP thuần.

Trong bài thuyết trình của Rasmus tại Drupalcon 2008, Rasmus đã so sánh thời gian phản hồi đến trang PHP với một ví dụ "Hello World" đơn giản và so sánh nó với một vài framework PHP (slide 24-32) và cho thấy các framework PHP chậm hơn nhiều so với PHP thuần.

Bạn có thể nghe hoặc xem toàn bộ bản trình bày trong đó Rasmus hiển thị các tổn thất về hiệu năng với các framework PHP. Nói tóm lại, Rasmus cho thấy hiệu năng có tác động lớn khi bạn sử dụng framework PHP thay vì sử dụng PHP thuần.

[Lưu ý: Nếu bạn phải sử dụng framework PHP, Rasmus thích CodeIgniter là tốt nhất, vì nó "ít nhất giống như môt framework"]


9. Sử dụng xử lý hàng loạt - Jack D. Herrington

Jack Herrington không xa lạ gì với PHP và thế giới phát triển. Ngoài việc viết hơn 30 bài viết cho IBM developerWorks uy tín, Jack cũng đã xuất bản các cuốn sách lập trình như PHP Hacks. Jack là một chuyên gia thực sự.

Herrington khuyên bạn nên sử dụng xử lý hàng loạt - batch processing và cron để giải quyết các tác vụ có thể xử lý nền. Người dùng web không muốn đợi lâu để hoàn thành các tác vụ trên web. Có một số công việc mất nhiều thời gian sẽ phù hợp hơn nếu chạy nền.

Chắc chắn, trong một số trường hợp nhỏ, việc loại bỏ một trợ giúp thread để xử lý các công việc nhỏ sẽ dễ dàng hơn một chút. Nhưng thật dễ để thấy rằng với việc sử dụng các công cụ thông thường - cron, MySQL, PHP hướng đối tượng tiêu chuẩn và Pear::DB - tạo các công việc hàng loạt trong các ứng dụng PHP rất dễ thực hiện, dễ triển khai và dễ bảo trì .

Jack tin vào sự đơn giản và thay vì sử dụng thread trên máy chủ, anh sử dụng kết hợp đơn giản giữa cron, PHP và MySQL để xử lý các tác vụ nền.

Tôi đã thực hiện cả hai và tôi nghĩ rằng cron có lợi thế của nguyên tắc "Keep it Simple, Stupid" (KISS). Điều đó giúp việc xử lý nên đơn giản. Thay vì có một ứng dụng xử lý công việc đa luồng chạy liên tục và do đó, không bao giờ có thể rò bộ nhớ, bạn có một batch script đơn giản để cron khởi động. Script này xác định liệu có bất cứ điều gì cần làm, thực hiện nó, sau đó thoát ra. Không cần phải lo lắng về rò bộ nhớ. Không cần phải lo lắng về một thread bị đình trệ hoặc bị mắc kẹt trong một vòng lặp vô hạn.


10. Hãy bật báo cáo lỗi ngay - David Cummings

David Cummings điều hành công ty phần mềm của riêng mình chuyên về các hệ thống quản lý nội dung và đã giành được một số giải thưởng. Nếu có ai biết cách phát triển ứng dụng PHP một cách hiệu quả, thì đó là Dave.

David đã viết trong một bài viết trên SitePoint về hai lời khuyên PHP mà phải chi anh ấy được học ngay từ đầu. Một trong những lời khuyên: Bật báo cáo lỗi (error report) ngay lập tức. Nó sẽ tiết kiệm rất nhiều thời gian về đường dài.

Điều quan trọng nhất tôi nói với những người sử dụng PHP là bật báo cáo lỗi lên mức tối đa. Tại sao tôi muốn làm vậy? Nói chung, báo cáo lỗi được đặt ở mức sẽ ẩn điều lỗi như:

  • khai báo một biến trước
  • tham chiếu một biến không có sẵn trong đoạn code đó, hoặc
  • sử dụng một định nghĩa không được thiết lập.
  • Các yếu tố này có vẻ không phải là vấn đề lớn - cho đến khi bạn phát triển các chương trình có cấu trúc hoặc hướng đối tượng với các function và class. Thông thường việc viết code mà không bật báo cáo lỗi mức cao sẽ khiến bạn mất hàng giờ để quét qua các hàm dài không hoạt động vì một biến bị sai chính tả hoặc không thể truy xuất được.

Báo cáo lỗi có thể làm giúp tìm ra nguyên nhân cho một lỗi dễ dàng hơn nhiều. Một lỗi nhỏ trong code có thể được xác định nhanh chóng nếu báo cáo lỗi của PHP được bật cao. Hãy tiết kiệm thời gian và kéo tóc bằng cách để PHP tìm ra lỗi cho bạn.

Đọc bài viết trước trong loạt bài này: 10 Principles of the CSS Masters

  • Đăng ký RSS Feed của NETTUTS để nhận thêm các bài viết và hướng dẫn phát triển web hàng ngày.

Glen Stansberry là một nhà phát triển web và blogger, người đã vật lộn với CSS nhiều lần hơn số anh ta muốn thừa nhận. Bạn có thể đọc thêm các lời khuyên về phát triển web tại blog Web Jackalope của tôi.


Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.