10 nguyên tắc cơ bản của những bậc thầy PHP
(2011-08-27 14:41:54)
Dưới đây là những lời khuyên, kinh nghiêm từ những bậc thầy code bằng ngôn
ngữ kịch bản PHP. Có thể bạn sẽ không vận dụng hết những kinh nghiệm này, nhưng
đó là những cách nhìn nhận cho bạn những gợi ý quan trọng.
1. Chỉ sử dụng PHP khi bạn cần đến nó – Rasmus Lerdorf
Không ai có thể sử dụng PHP thành thạo hơn chính người tạo ra nó. Vào năm 1995, Rasmus Lerdorf đã tạo ra ngôn ngữ lập trình PHP và từ đó ngôn ngữ này nhanh chóng được giới phát triển ứng dụng và làm thay đổi bộ mặt Internet. Tuy nhiên, Rasmus Lerdorf không tạo ra PHP với mục đích đó, PHP được tạo ra nhằm mục đích giải quyết các vấn đề của các nhà lập trình và phát triển ứng dụng web.
Không ai có thể sử dụng PHP thành thạo hơn chính người tạo ra nó. Vào năm 1995, Rasmus Lerdorf đã tạo ra ngôn ngữ lập trình PHP và từ đó ngôn ngữ này nhanh chóng được giới phát triển ứng dụng và làm thay đổi bộ mặt Internet. Tuy nhiên, Rasmus Lerdorf không tạo ra PHP với mục đích đó, PHP được tạo ra nhằm mục đích giải quyết các vấn đề của các nhà lập trình và phát triển ứng dụng web.
[And as with many open source projects that have gone on to become popular,
the motivation was never philosophical or even narcissistic. It was purely a
case of needing a tool to solve real-world Web-related problems. In 1994 the
options were fairly limited when it came to Web development tools
Tuy bạn có thể sử dụng PHP cho mọi thứ trên website. Lerdorf là người đầu
tiên thừa nhận rằng PHP đơn thuần chỉ là một công cụ trong danh sách các các
công cụ bạn sử dụng cho website của mình, và tất nhiên PHP có những hạn chế.
Use the right tool for the job. I have run across companies that have
completely bought into PHP, deploying it absolutely everywhere, but it was
never meant to be a general-purpose language appropriate for every problem. It
is most at home as the front-end scripting language for the Web.
Sử dụng PHP cho mọi thứ trên website là việc làm không hiệu quả, nếu bạn là
một nhà phát triển ứng dụng web thì nó không phải là một ngôn ngữ tốt nhất để
làm việc. Đừng ngại sử dụng những ngôn ngữ lập trình khác trong dự án của bạn
nếu cảm thấy nó tốt hơn cho PHP.
2. Sử dụng nhiều table cho PHP và MySQL cho những cơ sở dữ liệu lớn
– Matt Mullenweg
Hầu như không có ai hỏi Matt Mullenweg là ai và tại sao anh ta lại được tôn vinh như một bật thầy của PHP bởi vì anh đã quá nổi tiếng và nhiều người biết đến.
Hầu như không có ai hỏi Matt Mullenweg là ai và tại sao anh ta lại được tôn vinh như một bật thầy của PHP bởi vì anh đã quá nổi tiếng và nhiều người biết đến.
Nếu bạn chưa rõ về Matt Mullenweg tôi có thể trích ngang cho bạn vài dòng
thế này: Matt Mullenweg là người phát triển hệ thống blog khá thịnh hành hiện
nay: Wordpress. Sau khi hoàn thành Wordpress, Matt cùng với công ty của mình đã
cho ra đời website
http://www.wordpress.com - một website có thể được liệt vào hàng tinh tú của thế giới mạng và được xây dựng trên code Wordpress MU. Đây là một ứng dụng multi blog tốt nhất hiện nay. Vào thời điểm bải viết này được viết, website http://www.wordpress.com
đang chứa khoảng 4 triệu blog con và mỗi ngày có khoảng 140.000 bài viết được đăng. Bạn có thể xem các thông số mới nhất của http://nov.io/q4bdn2
http://www.wordpress.com - một website có thể được liệt vào hàng tinh tú của thế giới mạng và được xây dựng trên code Wordpress MU. Đây là một ứng dụng multi blog tốt nhất hiện nay. Vào thời điểm bải viết này được viết, website http://www.wordpress.com
đang chứa khoảng 4 triệu blog con và mỗi ngày có khoảng 140.000 bài viết được đăng. Bạn có thể xem các thông số mới nhất của http://nov.io/q4bdn2
Vào năm 2006, Matt Mullenweg đã đưa ra những quyết định sáng suốt cho việc
thiết kế cấu trúc cơ sở dữ liệu của Wordpress và lý giải tại sao Wordpress MU
sử dụng những table riêng biệt cho mỗi blog thay vì gom chúng lại thành một
khối lớn cho tất cả các blog.
We tested this approach for MU, but found it was too expensive to scale past
a certain point. With monolithic structures you hit a wall based on your
hardware. In MU users are divided and can be partitioned easily, for example on
WordPress.com we have the users partitioned between 4096 databases, which
allows you to scale very cheaply and efficiently to hundreds of thousands and
even millions of users and extremely high levels of traffic.
3. Đừng bao giờ tin vào bản thân bạn và người dùng của bạn – Dave
Child
Dave Child là cha đẻ của website Added Bytes (trước đây có tên là ilovejackdaniels.com) với loạt bài viết http://nov.io/jwhyka. Ông đã từng làm việc cho nhiều công ty ở Anh và thiết lập nên uy tín riêng của mình trong cộng đồng giới lập trình viên thế giới.
Dave Child mang đến cho bạn lời khuyên hữu ích trong bài viết writing secure code in PHP: đừng bao giờ tin vào người dùng của bạn (your users). Họ chỉ làm cho bạn tổn thương …
Dave Child là cha đẻ của website Added Bytes (trước đây có tên là ilovejackdaniels.com) với loạt bài viết http://nov.io/jwhyka. Ông đã từng làm việc cho nhiều công ty ở Anh và thiết lập nên uy tín riêng của mình trong cộng đồng giới lập trình viên thế giới.
Dave Child mang đến cho bạn lời khuyên hữu ích trong bài viết writing secure code in PHP: đừng bao giờ tin vào người dùng của bạn (your users). Họ chỉ làm cho bạn tổn thương …
So the cardinal rule of all web development, and I can’t stress it enough,
is: Never, Ever, Trust Your Users. Assume every single piece of data your site
collects from a user contains malicious code. Always. That includes data you
think you have checked with client-side validation, for example using
JavaScript. If you can manage that, you’ll be off to a good start. If PHP
security is important to you, this single point is the most important to learn.
Dave chỉ cho chúng ta thấy những ví dụ cụ thể về việc bảo mật trong http://nov.io/ArqtZS, http://nov.io/W9amb8 vàhttp://nov.io/48zcZ2của loạt
bài viết http://nov.io/ArqtZS
Finally, be completely and utterly paranoid. If you assume your site will
never come under attack, or face any problems of any sort, then when something
eventually does go wrong, you will be in massive amounts of trouble. If, on the
other hand, you assume every single visitor to your site is out to get you and
you are permanently at war, you will help yourself to keep your site secure,
and be prepared in case things should go wrong.
4. Đầu tư và nghiên cứu caching – Ben Balbo
Ben Balbo đã viết cho http://nov.io/4XdypO một bài viết hướng dẫn các developer và các designer.
Ben Balbo đã viết cho http://nov.io/4XdypO một bài viết hướng dẫn các developer và các designer.
If you have a busy and predominantly static web site–such as a blog–that’s
managed through a content management system, it will likely require little
alteration, yet may benefit from huge performance improvements resulting from a
small investment of your time. Setting up caching for a more complex site that
generates content on a per-user basis, such as a portal or shopping cart
system, will prove a little more tricky and time consuming, but the benefits
are still clear.
Đây là một vài kỹ thuật cache dữ liệu cho PHP
* cached function calls
* setting expiry headers
* caching file downloads in IE
* template caching
* Cache_Lite
* setting expiry headers
* caching file downloads in IE
* template caching
* Cache_Lite
Và còn nhiều kỹ thuật khác Ben Balbo chưa đề cập đến.
Vì tính chất của một ngôn ngữ động, cache bị phê phán và chỉ trích vì làm mất đi tính linh hoạt của trang web do ít bị thay đổi nhưng dù sao đi nữa caching cũng là một phương án rất hữu hiệu và được ứng dụng khá rộng trong lập trình website.
Vì tính chất của một ngôn ngữ động, cache bị phê phán và chỉ trích vì làm mất đi tính linh hoạt của trang web do ít bị thay đổi nhưng dù sao đi nữa caching cũng là một phương án rất hữu hiệu và được ứng dụng khá rộng trong lập trình website.
5. Tăng tốc độ trang web bằng cách sử dụng một IDE Template và cắt
nhỏ ảnh – Chad Kieffer
Khi Chad Kieffer không bận bịu trong các công việc thiết kế giao diện người dùng và quản trị database cho khách hàng, anh thường đưa ra rất nhiều lời khuyên sáng suốt trên blog của mình: http://nov.io/N8tZYR.
Chad tin rằng sử dụng một bộ IDE như http://nov.io/8ArfUL (một gói phát triển của Eclipse giành cho PHP) với sự kết hợp các kỹ thuật cắt http://nov.io/csYUWg và chia nhỏ nó có thể giúp tăng tốc độ tải trang web.
Khi Chad Kieffer không bận bịu trong các công việc thiết kế giao diện người dùng và quản trị database cho khách hàng, anh thường đưa ra rất nhiều lời khuyên sáng suốt trên blog của mình: http://nov.io/N8tZYR.
Chad tin rằng sử dụng một bộ IDE như http://nov.io/8ArfUL (một gói phát triển của Eclipse giành cho PHP) với sự kết hợp các kỹ thuật cắt http://nov.io/csYUWg và chia nhỏ nó có thể giúp tăng tốc độ tải trang web.
Busy schedules, long to do lists, and deadlines make it tough for developers
to get familiar with some of the advanced features their tools provide. This is
a shame, because some features, like Eclipse Templates, can really reduce
coding time and errors.
Ngụ ý của câu nói trên nói rằng một khi bạn thực hiện một số nhiệm vụ một
cách tự động, bạn sẽ cải thiện được thời gian hoàn thành project của mình.Một
ví dụ mà dễ thấy là với bạn lưu những đoạn lặp lại trên website lại thành những
phần riêng biệt bạn có thể kết hợp, sử dụng lại chúng một cách nhanh chóng mà
chẳng tốn thời gian viết lại chúng. Vả lại còn có thể sử dụng lại chúng trong
những project khác nữa.
Bằng cách sử dụng các IDE như Eclipse và các gói PDT, bạn có thể nhận ra
thời gian thực hiện dự án của bạn được rút ngắn đáng kể. Các IDE sẽ cho phép
bạn thực hiện rất nhiều công việc như gộp file, debug, kiểm tra việc thiếu các
dấu chấm phẩy ( ; ), một vài IDE còn cho phép bạn thực hiện các tác vụ cao cấp
hơn như upload lên hosting.
6. Khiến cho việc dùng PHP trở nên thuận tiện hơn bằng cách sử dụng
Filter – Joey Sochacki
While Joey Sochacki có thể không phải là một cái tên nổi tiếng giống như Matt Mullenweg trong cộng đồng PHP, anh ấy chỉ là một nhà phát triển website một cách ngẫu nhiên và chia sẻ kinh nghiệm anh có trong thời gian làm một developer trên http://nov.io/MMqjvs của mình.
While Joey Sochacki có thể không phải là một cái tên nổi tiếng giống như Matt Mullenweg trong cộng đồng PHP, anh ấy chỉ là một nhà phát triển website một cách ngẫu nhiên và chia sẻ kinh nghiệm anh có trong thời gian làm một developer trên http://nov.io/MMqjvs của mình.
Filtering data. We all have to do it. Most, if not all of us, despise doing
it. However, unbeknown to most are PHP’s filter_* functions, that allow us to
do all sorts of filtering and validation. Using PHP’s filter_* functions, we
can validate and sanitize data types, URLs, e-mail addresses, IP addresses,
strip bad characters, and more, all with relative ease.
Bộ lọc có thể là một thứ gì đó thật xa vời và khó hiểu. Nhưng bạn có thể ghé
thăm Blog của Joey Sochacki và với sự giúp đỡ của Joey Sochacki bạn có thể học
được cách cài đặt bộ lọc, tìm hiểu những thứ một bộ lọc cần, tìm hiểu nó và cải
thiện để tận dụng sức mạnh của PHP.
7. Sử dụng một PHP Framework – Josh Sharp
Hiện vẫn có những cuộc tranh cãi quanh việc sử dụng framework nào giữa http://nov.io/Nabtwl,http://nov.io/HkBhMT, http://nov.io/6hPnO4, hoặc http://nov.io/i4etGa.
Josh Sharp là một lập trình viên và là một nhà phát triển website cho khách hàng. Đâu là lý do tại sao bạn nên tin Josh khi anh bảo sử dụng framework để tiết kiệm thời gian và hạn chế lỗi khi lập trình ? Josh tin điều đó vì một lẽ đơn giản : PHP rất dễ học.
Hiện vẫn có những cuộc tranh cãi quanh việc sử dụng framework nào giữa http://nov.io/Nabtwl,http://nov.io/HkBhMT, http://nov.io/6hPnO4, hoặc http://nov.io/i4etGa.
Josh Sharp là một lập trình viên và là một nhà phát triển website cho khách hàng. Đâu là lý do tại sao bạn nên tin Josh khi anh bảo sử dụng framework để tiết kiệm thời gian và hạn chế lỗi khi lập trình ? Josh tin điều đó vì một lẽ đơn giản : PHP rất dễ học.
But PHP’s ease of use is also its downfall. Because there are less
restrictions on the structure of the code you write, it’s much easier to write
bad code. But there is a solution: use a Framework.
Framework có thể giúp bạn chuẩn hóa chương trình, bạn có thể tiết kiệm rất
nhiều thời gian trong quá trình xử lý mã nguồn … Bạn có thể đọc thêm lợi ích
của việc sử dụng framework tại blog của Josh.
8 Đừng sử dụng Framework – Rasmus Lerdorf
Trái ngược với ý kiến ở trên của Josh ở trên, Rasmus Lerdorf – cha đẻ của PHP lại cho rằng framework không phải là một lựa chọn sáng suốt. Tại sao? Bởi vì nó sẽ làm cho chương trình của bạn biên dịch chậm hơn so với viết code PHP đơn thuần. Trong bài thuyết trình của mình tại http://nov.io/evazXr , Rasmus đã so sách tốc độ xử lý của một trang “Hello world !” đơn giản sử dụng framework và không sử dụng framework (http://nov.io/caxYpj) và chỉ ra rằng framework làm cho tốc độ xử lý web page chậm hơn code php trực tiếp.
Trái ngược với ý kiến ở trên của Josh ở trên, Rasmus Lerdorf – cha đẻ của PHP lại cho rằng framework không phải là một lựa chọn sáng suốt. Tại sao? Bởi vì nó sẽ làm cho chương trình của bạn biên dịch chậm hơn so với viết code PHP đơn thuần. Trong bài thuyết trình của mình tại http://nov.io/evazXr , Rasmus đã so sách tốc độ xử lý của một trang “Hello world !” đơn giản sử dụng framework và không sử dụng framework (http://nov.io/caxYpj) và chỉ ra rằng framework làm cho tốc độ xử lý web page chậm hơn code php trực tiếp.
Bạn có thể xem và nghe toàn bộ bài phát biểu của Rasmus Lerdorfhttp://nov.io/RSWn4w.
9. Sử dụng bộ xử lý đồng bộ (Batch Processing) – Jack D. Herrington
Theo từ điển Lạc Việt Batch Processing là một chế độ thao tác của máy tính, trong đó các thao tác lệnh của chưng trình được thực hiện liên tiếp nhau mà không có sự can thiệp của người sử dụng máy tính.
Theo từ điển Lạc Việt Batch Processing là một chế độ thao tác của máy tính, trong đó các thao tác lệnh của chưng trình được thực hiện liên tiếp nhau mà không có sự can thiệp của người sử dụng máy tính.
Jack D. Herrington không phải là người xa lạ trong cộng đồng PHP và
Developer của thế giới. Herrington khuyến khích sử dụng batch processing và
cron cho việc xử lý các tác vụ dưới tầng nền hệ thống. Người sử dụng web không
muốn phải ngồi đợi quá lâu trong lúc hệ thống tải trang lên. Vì vậy, những thứ
không cần thiết phải hiển thị ra ngoài bạn hãy để nó chạy dưới nền ứng dụng.
Certainly, in some small cases, it’s a bit easier to fire off of a helper
thread to handle small jobs. But it’s easy to see that with the use of
conventional tools — cron, MySQL, standard object-oriented PHP, and Pear::DB —
creating batch jobs in PHP applications is easy to do, easy to deploy, and easy
to maintain.
Jack tin rằng thay vì sử dụng các tiến trình trên server, để đơn giản hơn có
thể sử dụng kết hợp cron, PHP và MySQL để xử lý các ứng dụng nền.
I’ve done both, and I think cron has the advantage of the “Keep It Simple,
Stupid” (KISS) principle. It keeps the background processing simple. Instead of
having a multithreaded job-processing application that runs forever and, thus,
can never leak memory, you have a simple batch script that cron starts. The
script determines whether there’s anything to do, does it, then exits. No need
to worry about memory leaks. No need to worry about a thread stalling or
getting caught in an infinite loop.
10.Bật chức năng Error Reporting – David Cummings
David Cummings điều hành công ty phần mềm của mình với một CMS đặc trưng và đã đạt được rất nhiều giải thưởng. Nếu nói về một người phát triển ứng dụng PHP thành công nhất, có lẽ đó là David.
David đã viết một vài viết trên SitePoint về Hai lời khuyên cho những người muốn học PHP. Một trong hai lời khuyên là “Turn on error reporting immediately“
David Cummings điều hành công ty phần mềm của mình với một CMS đặc trưng và đã đạt được rất nhiều giải thưởng. Nếu nói về một người phát triển ứng dụng PHP thành công nhất, có lẽ đó là David.
David đã viết một vài viết trên SitePoint về Hai lời khuyên cho những người muốn học PHP. Một trong hai lời khuyên là “Turn on error reporting immediately“
The single most important thing I tell people who use PHP is to turn error
reporting to its maximum level. Why would I want to do this? Generally the error
reporting is set at a level that will hide many little things like:
declaring a variable ahead of time,
referencing a variable that isn’t available in that segment of code, or
using a define that isn’t set.
declaring a variable ahead of time,
referencing a variable that isn’t available in that segment of code, or
using a define that isn’t set.
Error Reporting giúp bạn tìm kiếm các lỗi lập trình trong quá trình thực
hiện project dễ dàng hơn. Rất nhiều lỗi nhỏ của PHP dễ dàng được tìm thấy với
mô tả lỗi giúp bạn dễ dàng khắc phục nó hơn.
sưu tầm
