Có một câu châm ngôn xưa, từ khoảng năm 1700, nói rằng: “Một bé mèo
con sẽ chết mỗi khi một PHP programmer (lập trình viên) không s ử dụng
những phương pháp tốt nhất.”
Một phép ẩn dụ không rõ ràng lắm, nhưng có thể bạn sẽ hiểu rõ hơn vai trò
của “mèo con” sau khi đọc hết bài viết này.
13 trang |
Chia sẻ: lylyngoc | Lượt xem: 1752 | Lượt tải: 1
Bạn đang xem nội dung tài liệu 20 phương pháp học PHP dễ hiểu nhất, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
20 phương pháp học
PHP dễ hiểu nhất
20 cach hoc tot nhat
Có một câu châm ngôn xưa, từ khoảng năm 1700, nói rằng: “Một bé mèo
con sẽ chết mỗi khi một PHP programmer (lập trình viên) không sử dụng
những phương pháp tốt nhất.”
Một phép ẩn dụ không rõ ràng lắm, nhưng có thể bạn sẽ hiểu rõ hơn vai trò
của “mèo con” sau khi đọc hết bài viết này.
1. Viết code càng nhiều càng tốt
Không có gì bằng việc áp dụng nguyên tắc “học đi đôi với hành” cho việc
học lập trình, đừng ngại ngần khi bạn có cơ hội làm một website, dù với kiến
thức hiện tại bạn chưa thể làm được. Khi bạn đã có một dự án lập trình, bạn
sẽ có lý do chính đáng để nghiên cứu và ứng dụng ngôn ngữ lập trình vào
thực tế. Lập trình thường xuyên và có mục tiêu sẽ giúp bạn “biết làm” chứ
không cần phải “nhớ cách làm”.
2. Làm quen với PHP Manual
Có lẽ cách tốt nhất giúp bạn bắt đầu với PHP manual là bạn có thể tìm thấy
thông tin về mọi function (hàm) qua mẫu sau:
Ví dụ: nếu bạn muốn tìm cách sử dụng hàm strpos() hãy nhập
vào trình duyệt, tương tự với hàm array_key_exists(),
hãy dùng (Chỉ cần thay đổi các dấu gạch
dưới (_) thành dấu gạch (-) trên thanh địa chỉ trong trình duyệt)
Đọc các comment!
Bạn không cần phải đọc kỹ mọi comment trong mọi mục của php manual.
Nhưng nếu bạn gặp khó khăn khi sử dụng một function nào đó, có thể người
khác đã gặp vấn đề tương tự và nói về nó trong một comment – bao gồm
cách giải quyết.
Bạn cũng có thể tìm được hàng rất nhiều những thuật toán hay đoạn code
hay từ comment của những người đi trước.
3. ‘Tận dụng’ các cộng đồng PHP Online
Ngoài PHP manual, có rất nhiều cộng đồng mạng khác mà bạn có thể tìm
kiếm trợ giúp. Hầu hết các diễn đàn lớn trong nước đều có khu vực dành cho
lập trình. Ví dụ như: forum.cuasotinhoc.vn…
Nếu khả năng tiếng Anh của bạn khá, hãy ghé qua stackoverflow.com hay
w3schools.com forum.
Mọi giúp đỡ mà bạn nhận được từ các cộng đồng này đều miễn phí. Vì thế
bạn hãy giúp các cộng đồng bạn tham gia bằng cách giúp đỡ các beginner
khác. Không có sự góp sức của bạn và những người như bạn, các cộng đồng
này sẽ dần yếu đi và có khi biến mất hoàn toàn.
4. Đừng bỏ qua những phương pháp tốt
Trong quá trình học hay nghiên cứu, bạn sẽ gặp những thứ được gọi là
“phương pháp tốt” (best practice) trong lập trình. Ví dụ như prepare
statements hay ‘code chuẩn’ (điển hình là PEAR coding standards).
Bạn đừng gác nó qua một bên chỉ vì nó phức tạp. Các phương pháp tốt được
tạo ra để giúp cho code của bạn bảo mật hơn, chạy nhanh hơn, và dễ quản lý
hơn. Hãy học và áp dụng chúng càng sớm càng tốt.
Một ví dụ nhỏ: công sức bạn bỏ ra để học cách sử dụng mysql_query() cũng
tương đương với việc học PDO hay MySQLi. Nếu bạn bắt đầu với hai môn
sau, thì bạn sẽ có được nền vững chắc hơn trong việc sử dụng database. Và
bạn sẽ đỡ đau đầu, vì việc sử dụng mysql_query() dễ phát sinh nhiều vấn đề.
5. Đừng bỏ qua những phương pháp tốt
Nếu bạn không dùng những phương pháp tốt cho cộng đồng, đồng nghiệp,
dự án, hay bản thân bạn, thì ít nhất hãy nghĩ đến câu nói ở trên.
6. Viết code dễ hiểu
Khi mới bắt đầu tập tành code, việc đặt tên ‘huyền bí’ cho các biến hoặc
hàm khá là hấp dẫn. Có thể bạn đọc ở đâu đó một bài viết nói về hiệu năng
của code ngắn, hay thấy một đoạn code của ai đó làm được cả đống thứ chỉ
với hai dòng. Có thể bạn muốn tạo ra phong cách code của chính bạn.
Dù bất cứ lý do nào, đừng để nó cám dỗ bạn.
7.Ghi comment mỗi lần khi bạn code
Nếu bạn viết code dễ hiểu, bạn sẽ không cần phải thêm quá nhiều comment.
Tuy nhiên, dù tất cả các tên hàm và biến của bạn đều dễ hiểu, sẽ luôn có chỗ
cho những đoạn code phức tạp – những đoạn code mà bạn phải dựng lại đôi
chút để nghĩ cách giải quyết. Khi đó, hãy đưa comment vào.
Một ví dụ:
$pieces = explode(‘.’, $image_name);
$extension = array_pop($pieces);
// Get the extension off the image filename
$pieces = explode(‘.’, $image_name); $extension = array_pop($pieces);
Bây giờ, ngay cả khi bạn không biết công dụng của các hàm trong đoạn code
trên, bạn vẫn biết được $extension dùng để chứa định dạng của một file ảnh.
Comment rất có ích, không chỉ cho bạn mà cả người khác.
Và luật bất thành văn “cái gì quá cũng không tốt” cũng đúng cho việc dùng
comment. Quá nhiều comment sẽ khiến cho việc đọc code trở nên khó khăn.
Và tương tự quá ít cũng không ổn chút nào.
8.Học cách sử dụng Docblock
Nếu như có một thứ mà mọi programmer đều làm theo một chuẩn chung, thì
đó chính là docblock.
Docblock là một loại comment, và có nhiều dòng. Công dụng của nó:
1. Chứa câu trả lời cho câu hỏi “cái gì đây” và “tại sao phải dùng” cho mỗi
file, hàm…
2. Đưa miêu tả rõ ràng về các kiểu biến (variable, paremeter) và giá trị trả về
(return value) của hàm.
3. Miêu tả ngắn gọn về chức năng của một đoạn code.
4. Khi bạn sử dụng một IDE có hỗ trợ docblock, bạn sẽ đọc được nội dung
của docblock về class, hay hàm trong phần chú thích ngay khi bạn đang code
mà không cần phải mở file khác chỉ để đọc comment, hay docblock.
Phương pháp này thường được dùng bởi các programmer cấp cao, bởi code
họ viết ra được nhiều người khác sử dụng. Nhưng đây cũng là một ‘phương
pháp tốt nên áp dụng càng sớm càng tốt’. Dĩ nhiên bạn có thể bỏ qua, nhưng
trước khi làm vậy, hãy nghĩ đến… ” mèo con”.
/**
* A simple class to get the sum or difference of $_foo and a value
*
* @author Jason Lengstorf
* @copyright 2011 Copter Labs
* @license
*/
class CopterLabs_Test
{
/**
* The value to use in addition and subtraction
* @var int
*/
private $_foo = 0;
/**
* Adds a value to $_foo and returns the sum *
* @param int $add_me The value to add to $_foo
* @return int The sum of $_foo and $add_me
*/
public function add_to_foo( $add_me=0 )
{
return $this->_foo += $add_me;
}
/**
* Subtracts a value from $_foo and returns the difference
* @param int $subtract_me The value to subtract from $_foo
* @return int The difference of $_foo and $subtract_me
*/
public function subtract_from_foo( $subtract_me=0 )
{
return $this->_foo -= $subtract_me;
}
}
Thoạt đầu, có thể bạn nghĩ đây là một kiểu quá nhiều comment. Nhưng thực
tế nó không như vậy, vì docblock được viết theo chuẩn chung. Nên khi bạn
đã quen với chuẩn này, thì việc đọc code sẽ rất dễ dàng.
Nếu như bạn sử dụng đoạn code trên trong Netbeans (một IDE), thì đây sẽ là
gợi ý code bạn nhận được, rất tiện lợi.
9.Đừng quá khó khăn với việc sử dụng IDE
IDE (Integrated Development Environment) là các công cụ như Netbeans,
Eclispe, Visual Studio…
IDE sẽ giúp bạn làm việc hiệu quả hơn. Bạn chắc chắn sẽ code nhanh hơn và
không còn đau đầu với các lỗi lặt vặt. Hơn nữa, khi bạn mở rộng code hay
sử dụng công nghệ mới (library, framework, language…), IDE sẽ giúp bạn
rất nhiều với chức năng gợi ý code (hinting).
10. Gom các đoạn code tương tự vào một hàm
Khi lập trình lần đầu, rất dễ lâm vào kiểu code từ trên xuống, và viết ngay
những đoạn code cần thiết vào phía dưới.
Với kiểu code này, bạn sẽ dễ dàng nhận thấy nhiều đoạn code có chức năng
tương tự bị lặp lại nhiều lần. Việc này rất nguy hiểm khi bạn cần phải chỉnh
sửa code, vì bạn sẽ phải dò từng dòng để sửa các chi tiết bị lặp lại.
Nếu như bạn thấy bất kỳ đoạn code nào có chức năng giống nhau, hãy đưa
nó vào một hàm, và sử dụng hàm đó ở những chỗ cần thiết.
Bạn hãy xem qua ví dụ sau:
$unclean1 = ‘Click Me!‘;
$detagged1 = strip_tags($unclean1);
$deslashed1 = stripslashes($detagged1);
$clean1 = htmlentities($deslashed1, ENT_QUOTES, ‘UTF-8′);
$unclean2 = “Let’s call Björn!”;
$detagged2 = strip_tags($unclean2);
$deslashed2 = stripslashes($detagged2);
$clean2 = htmlentities($deslashed2, ENT_QUOTES, ‘UTF-8′);
echo $clean1, “
“, $clean2;
Như bạn thấy, các chuỗi $unclean1 và $unclean2 cần được xử lý trước khi
sử dụng. Tuy nhiên, bạn dễ dàng nhận thấy mỗi chuỗi được đưa qua các
bước giống nhau. Và rất có thể các bước này sẽ luôn được sử dụng mỗi khi
cần in ra một chuỗi nào đó.
Đây là lúc thích hợp để đưa chúng vào một hàm.
$unclean1 = ‘Click Me!‘;
$unclean2 = “Let’s call Björn!”;
$clean1 = sanitize_input($unclean1);
$clean2 = sanitize_input($unclean2);
echo $clean1, “
“, $clean2;
function sanitize_input( $input )
{
$detagged = strip_tags($input);
$deslashed = stripslashes($detagged);
return htmlentities($deslashed, ENT_QUOTES, ‘UTF-8′);
}
Với việc gộp những đoạn giống nhau vào một hàm, code sẽ dễ đọc hơn.
Việc chỉnh sửa và dùng lại cũng tiện lợi hơn rất nhiều.
11. Gộp các hàm liên quan vào một class (lớp)
Đây là một quy trình của lập trình hướng đối tượng (OOP), và cũng là một
trong những phương pháp tốt nhất trong lập trình.
Khi bạn có nhiều hàm với chức năng liên quan đến nhau, hãy đưa nó vào
chung một class. Việc này sẽ giúp bạn quản lý và sử dụng code dễ dàng hơn.
Tuy vậy, việc học hướng đối tượng là một mảng rất rộng và bạn sẽ phải
nghiên cứu nhiều hơn. Bạn nên dành thời gian cho nó ngay từ đầu, vì đa số
các ngôn ngữ lập trình phổ biến hiện này đều ngôn ngữ lập trình hướng đối
tượng.
12. Hạn chế sử dụng Global Variable
Global vaiables là các biến có phạm vi bao quát toàn ứng dụng, và có thể
bạn đã và đang dùng nó nhiều hơn mức cần thiết. Đây không phải là phương
pháp tốt, vì thế không được khuyên dùng. Thay vào đó, PHP cung cấp cho
bạn hàm define() để tạo constants (hằng số).
Việc sử dụng constanst là một cách rất tốt để chứa các thông tin mang tính
bao quát và cố định như tên website hay thông tin database. Với cách này,
các thông số sẽ không bị thay đổi bằng bất cứ code nào khác. Do đó, bạn sẽ
tránh được việc tình cờ khai báo lại biến và làm thay đổi thông số ban đầu.
Ví dụ sau sẽ giúp bạn hiểu rõ hơn:
php
define('FOO', 'constant value');
$bar = 'global value';
echo baz();
function baz()
{
$constant = ' Constant: ' . FOO;
$global = 'Global: ' . $GLOBALS['bar'];
return $constant . "
\n” . $global;
}
?>
13. Đừng ngại sử dụng Include
Include là việc bao gồm code trong một file vào một file khác.
Khi bạn làm các ứng dựng web tương đối lớn trở lên, bạn nên chia nhỏ nó
thành nhiều phần, nhiều file khác nhau., và dùng include để sử dụng nó. Một
cách phổ biến là đưa phần chung của web vào các file nhỏ, sau đó include
các fiel đó vào trang chính. Phần chung đó thường là các bước kết nối
database, đầu trang, và cuối trang. Tất cả các trang trong ứng dụng của bạn
sẽ có đầy đủ các phần chung chỉ với vài dòng code. Bằng cách này, code của
bạn sẽ gọn gàng hơn và dễ quản lý hơn.
14. Không nên quá lo lắng về hiệu năng
Hiệu năng là điều dễ làm đau đầu mọi programmer. Thật ra bạn không nên
quá lo lắng về nó, không ai có thể phân biệt được sự khác nhau giữa 20ms
hay 50ms để load một trang web. Và việc đánh đổi những dòng code đẹp chỉ
để vắt ra được 5ms không đáng tí nào.
Bạn chỉ cần giữ cho trang web của bạn tốn ít hơn 700ms để load là ổn rồi.
Hãy dành thời gian cho những việc quan trọng hơn.
15. Tránh gắn kết HTML và PHP
Chắc chắn không thể loại bỏ hoàn toàn việc code HTML và PHP nằm chung
với nhau. Nhưng bạn nên hạn chế càng nhiều càng tốt việc HTML nằm
trong PHP. Hãy loại những dòng HTML không quan trọng ra ngoài.
?php
echo ‘This is some test content.‘;
?>
Việc đưa tag “div” vào trong là không cần thiết, nó làm code của bạn dài
hơn và khó đọc hơn. Đưa “div” ra ngoài sẽ cải thiện đoạn code của bạn.
?php
echo 'This is some test content.‘;
?>
Đây chỉ là một ví dụ đơn giản. Bạn sẽ phải giải quyết nhiều vấn đề phức tạp
hơn giữa HTML và PHP, nhất là khi hiển thị dữ liệu từ database.
16. Cố gắng áp dụng kỹ thuật mới cho mỗi dự án
Bạn sẽ phải tìm hiểu và nghiên cứu để có thể hoàn thành được dự án.
17. Đừng ngại thay đổi
Điều quan trọng là bạn đừng dính chặt vào lối mòn cũ. Đừng nghĩ cách của
bạn tốt hơn vì bạn tự nghĩ ra nó. Hãy để ý những chi tiết trước đây bạn
không nghĩ tới.
18. Validate
Validate là kiểm duyệt thông tin bạn nhận từ người dùng. Thông tin chỉ
được đưa vào hệ thống sau khi được thông qua bước kiểm duyệt.
Nếu như bạn là một nhà phát triển web, hãy làm quen với validation càng
sớm càng tốt. Việc này có thể làm bạn mất thời gian hơn so với việc phát
triển chức năng chính. Nhưng bạn không thể bỏ qua nó nếu muốn có một
ứng dụng hoàn hảo.
Với validation, người dùng sẽ có được trải nghiệm tốt hơn trên sản phẩm của
bạn. Bạn sẽ loại bỏ được nhiều lỗi phát sinh, và dữ liệu bạn nhận được có
giá trị cao hơn.
19. Dùng whitelist thay cho blacklist
Trong nhiều trường hợp, bạn sẽ muốn chặn các loại dữ liệu nào đó như
email, từ ngữ…
Giải pháp phổ biến là dùng blacklist, một danh sách các món mà bạn muốn
chặn.
Với blacklist, bạn sẽ phải thông minh hơn người mà bạn muốn chặn. Ví dụ,
để ngăn javascript hoạt động cho nút submit, có thể bạn sẽ chặn hành động
onclick, và một số hành động khác. Sẽ thế nào nếu bạn để sót một hành động
nào đó, hay một hành động mới có thể được đưa vào trong tương lai? Nếu
bạn không trên cơ người khác trong blacklist, sẽ có chỗ cho lỗi hay lỗ hổng.
Tuy nhiên, để đỡ mất công, bạn hãy dùng whitelist bất cứ khi nào có thể.
Ngược với blacklist, whitelist là danh sách những thứ bạn cho phép.
Như công dụng của hàm strip_tags(), bạn có để đặt ra các HTML tag được
phép sử dụng trong chuỗi:
?
strip_tags($string, ‘');
Với whitelist, bạn sẽ bị giới hạn nhiều hơn, nhưng sẽ an toàn hơn rất nhiều.
Rất khó để tính tới mọi trường hợp, nên việc đặt ra "những thứ được cho
phép" thay cho "những thứ bị cấm" sẽ giúp bạn giảm bớt gánh nặng đáng kể.
20. Đếm như máy tính
Nếu bạn mới bắt đầu với PHP, những cách trên sẽ giúp bạn tiếp cận những
thói quen và phương pháp tốt nhất trong lập trình. Hãy bắt đầu bằng việc học
và sử dụng các phương pháp mới trong bài viết này.