Mảng (array) trong PHP

  1. Array là gì ?
  • Mảng là một biến đặc biệt và có thể lưu trữ nhiều giá trị.
  • Một biến thông thường chỉ chứa một giá trị duy nhất, nếu chúng ta muốn chứa nhiều giá trị trong một biến thì biến đó phải là một mảng (ví dụng cần lưu trữ thông tin của 1000 nhân viên).
  • Trong PHP có 3 loại mảng: mảng số nguyên, mảng kết hợp và mảng đa chiều.
  1. Khai báo và sử dụng mảng số nguyên
  • Mảng số nguyên là mảng mà các chỉ số của các phần tử phải thuộc kiểu số nguyên (mảng số nguyên còn được gọi là mảng liên tục)
  • Tìm hiểu cách truy cập các phần tử của mảng và in mảng.
  1. Khai báo và sử dụng mảng kết hợp:
  • Mảng kết hợp là các chỉ số của các phần tử có thể là chuỗi hoặc số (Mảng kết hợp còn gọi là không liên tục)
  • In danh sách các phần tử trong mảng kết hợp: foreach
  1. Khai báo và sử dụng mảng đa chiều
  • Mảng đa chiều là mảng mà mỗi phần tử trong mảng chính có thể là một mảng và mỗi phần tử trong mảng con lại cũng có thể là một mảng (mảng đa chiều còn gọi là mảng lồng)
  • In phần tử, in sách các phần tử trong mảng đa chiều: foreach
  1. Lấy danh sách các khóa và danh sách các giá trị của một mảng nào đó ?
  • array_value ($array) trả về một mảng liên túc có các phần tử có giá trị là giá trị lấy từ các phần tử của mảng $array.
  • array_keys ($array): trả về một mảng liên tục có các phần tử có giá trị là khóa lấy các phần tử của mảng $array.
  1. Loại bỏ phần tử ở đầu và cuối mảng
  • array_pop ($array) loại bỏ phần tử cuối cùng của mảng. Hàm trả về phần tử cuối cùng đã được loại bỏ.
  • array_shift ($array) loại bỏ phần tử đầu tiên của mảng. Hàm trả về phần tử đầu tiên đã được loại bỏ.
  1. Loại bỏ phần tử trùng nhau trong mảng
  • array_unique ($array) loại bỏ những phần tử trùng nhau trong mảng và trả về mảng mới.
  1. Xóa phần tử ở vị trí bất kì của mảng
  • Sử dụng hàm unset để xóa bỏ phần tử ở vị trí bất kỳ trong mảng.
  1. Thêm một hoặc nhiều phần tử ở đầu hoặc cuối mảng ?
  • array_push ($array, $val1, $val2, … , $valn) thêm một hoặc nhiều phần từ vào cuối mảng $array. Hàm trả về kiểu nguyên là số lượng của mảng $array mới.
  • array_unshift ($array, $val1, $val2, … , $valn) thêm một hoặc nhiều phần tử vào đầu mảng $array. Hàm trả về kiểu số nguyên là số lượng phần tử của mảng $array mới.
  1. Đảo ngược vị trí các phần tử của mảng
  • array_reverse ($array) đảo ngược vị trí các phần tử của mảng, phần tử cuối trở thành phần tử đầu tiên, phần tử ké cuối trở thành phần tử thứ nhì, … kết quả trả về là một mảng mới.
  1. Hoán đổi chỉ số và giá trị của mảng (đảo $key và $value)
  • Sử dụng hàm array_flip ($array) trả về một mảng có khóa và giá trị được hoán đổi cho nhau so với mảng $array (giá trị thành khóa và khóa thành giá trị)
  1. Xác định tổng, giá tri lớn nhất và giá trị nhỏ nhất trong mảng
  • Tính tổng các phần tử trong mảng array_sum ($array)
  • Xác định phần tử nhỏ nhất trong mảng min($array)
  • Xác định phần tử lớn nhất trong mảng max($array)
  1. Thống kê số lần xuất hiện của các phần tử trong mảng
  • Để thống kê sự xuất hiện của các phần tử trong mảng chúng ta sử dụng hàm array_count_values ($array)
  1. Kết hợp các mảng lại với nhau
  • array_merge ($array1, $array2, … , $arrayn) nhạp 2 hay nhiều mảng thành một mảng duy nhất và trả về mảng mới.
  1. Lấy ngẫu nhiên chỉ số ($key) của một mảng nào đó
  • array_rand ($array, $number) lấy ngẫu nhiên $number phần tử mảng $array và đưa vào mảng mới (láy giá trị khóa).
  1. Tìm kiếm phần tử trong mảng
  • array_search ($value, $array) tìm phần tử mang giá trị $value trong mảng $array. Trả về khóa của phần tử tìm được.
  1. Kiểm tra một $key hoặc $value nào đó có tồn tại trong mảng hay không ?
  • array_key_exists ($key, $array) kiểm tra khóa $key có tồn tại trong mảng $array hay không ? Nếu có trả về giá trị true.
  • in_array ($value, $array) kiểm tra giá trị $value có tồn tại trong mảng $array hay không ? Nếu có trả về giá trị true.
  1. Chuyển đổi các key trong mảng thành chữ hoa hoặc chữ thường
  • Sử dụng hàm array_change_key_case ($array, case) để chuyển đổi các chỉ số ($key) trong mảng thành chữ hoa hoặc chữ thường, tuy thuộc vào tham số case truyền vào. Kết quả trả về của hàm sẽ là một mảng mới.
  1. Chuyển đổi qua lại giữa mảng và chuỗi
  • implode ($str, $array) chuyển các giá trị của mảng $array thành một chuỗi bao gồm các phần tử các nhau bởi ký tự $str
  • explode ($delimiter, $str) chuyển một chuỗi thành một mảng. Tách chuỗi dựa vào $delimiter, mỗi đoạn tách ra sẽ thành một phần tử của mảng mới.
  1. Truy xuất phần tử của mảng với end, current, next và previous.
  • current($array) truy xuất phần tử hiện tại của mảng.
  • end($array) truy xuất phần tử cuối cùng của mảng.
  • next($array) truy xuất phần tử sau phần từ của mảng.
  • prev($array) truy xuất phần tử trước phần tử hiện tại của mảng.
  • reset() quay về vị trí phần tử đầu tiên trong mảng.
  1. Chuyển đổi mảng về một chuỗi đặc biệt và ngược lại
  • serialize ($value) chuyển chuỗi/mảng/đối tượng $value thành một chuỗi đặc biệt để lưu vào cơ sở dữ liệu.
  • unserialize($value) chuyển chuỗi đặc biệt được tạo từ serialize($value) về trạng thái ban đầu.
  1. Xáo trộn thứ tự các phần tử trong mảng
  • Sử dụng hàm shuffle để tạo ra mảng mới (mảng liên tục) với thứ tự các phần tử trong mảng bị thay đổi.
  1. Tạo mảng từ các biến có sẵn
  • Sử dụng hàm compact() để tạo ra mảng từ các biến có sẵn.
  1. Tạo mảng sử dụng hàm range()
  • Sử dụng hàm range để tạo ra các phần tử của mảng.
  1. Tạo mảng bằng cách sử dụng hàm array_combine
  • Sử dụng hàm array_combine($key, $value) để tạo một mảng mới có khóa được lấy từ mảng $key và giá trị được lấy từ mảng $value theo tuần tự.
  1. Các trường hợp so sánh giữa hai mảng
  • Trường hợp 1: So sánh khác nhau:
    • array_diff ($array1, $array2) trả về một mảng bao gồm các phần tử có giá trị tồn tại trong mảng $array1 nhưng không tồn tại trong mảng $array2
    • array_diff_key ($array1, $array2) trả về một mảng bao gồm các phần tử có khóa tồn tại trong mảng $array1 nhưng không tồn tại trong mảng $array2
    • array_diff_assoc ($array1, $array2) tả về một mảng bao gồm các phần tử có khóa và giá trị tồn tại trong mảng $array1 nhưng không tồn tại trong mảng $array2
  • Trường hợp 2: So sánh giống nhau:
    • array_intersect ($array1, $array2) trả về một mảng bao gồm các phần tử giống nhau về giá trị 2 mảng $array1 và $array2
    • array_intersect_key ($array1, $array2) trả về một mảng bao gồm các phần tử giống nhau về khóa giữa 2 mảng $array1 và $array2
    • array_intersect_assco ($array1, $array2) trả về một mảng bao gồm các phần tử giống nhau về khóa và giá trị giữa 2 mảng $array1 và $array2
  1. Xử lý giá trị các phần tử của mảng
  • Hàm array_walk sẽ gửi các giá trị của mảng đến một hàm nào đó để xử lý và nhận kết quả về là một mảng mới.
  1. Tìm hiểu hàm array_map
  • Hàm array_map sẽ gửi các giá trị của một hay nhiều mảng đến hàm nào đó đẻ xử lý và nhận kết quả trả về là một mảng mới.
  1. Trích xuất một đoạn phần tử của mảng
  • Hàm array_slice (array, offset, length, preserve) trích xuất lấy một đoạn phần tử của mảng từ vị trí bắt đầu offset (vị trí bắt đầu trong mảng là 0) và lấy length phần từ.
  1. Thay thế một đoạn phần tử của mảng
  • Hàm array_splice (array1, offset, length, array2) xóa bỏ một đoạn phần tử của mảng array1 từ vị trí offset và lấy length phần tử. Sau đó thay thế các phần tử bị loại bỏ bằng mảng array2
  1. Các trường hợp sắp xếp mảng
  • Sắp xếp theo giá trị:
    • sort(array) sắp xếp các phần tử trong mảng array tăng dần theo giá trị.
    • rsort(array) sắp xếp các phần tự trong mảng array giảm dần theo giá trị.
  • Sắp xếp theo khóa
    • ksort(array) sắp xếp các phần tử trong mảng array tăng dần theo khóa.
    • krsort(array) sắp xếp các phần tử trong mảng array giảm dần theo khóa.

Thao tác nâng cao trên mảng

 

  • Mảng là một biến đặc biệt và có thể lưu trữ nhiều giá trị (còn biến thì không). Trong PHP có 3 loại mảng: mảng số nguyên, mảng kết hợp và mảng đa chiều.
Mảng số nguyên Mảng kết hợp Mảng đa chiều
Tên gọi khác Mảng liên tục Mảng không liên tục Mảng lồng
Đặc điểm Chỉ số của mảng là số Chỉ số của mảng là chuỗi hoặc số Mỗi phần tử trong mảng chính là có thể là một mảng và mỗi phần tử trong mảng con cũng có thể là một mảng
In mảng Câu lệnh for Câu lệnh foreach

 

  1. Các hàm sử lý mảng:
STT Hàm Chức năng
1 print_r ($array) Xem cấu trúc mảng
2 count ($array) Trả về giá trị kiểu số nguyên là phần tử của mảng, hay là đếm số phần tử trong mảng. Có thể sử dụng hàm sizeof ($array)
3 array_values ($array) Trả về một mảng liên tục có các phần tử có giá trị là giá trị lấy từ các phần tử của mảng $array
4 array_keys ($array) Trả về một mảng liên tục có các phần tử có giá trị là khóa lấy từ các phần tử của mảng $array
5 array_pop ($array) Loại bỏ phần tử cuối của mảng. Hàm trả về phần tử cuối đã được loại bỏ.
6 array_shift ($array) Loại bỏ phần tử đầu tiên của mảng. Hàm trả về phần tử đầu tiên đã được loại bỏ.
7 array_unique ($array) Loại bỏ những phần tử trùng nhau trong mảng và trả về mảng mới
8 unset () Xóa phần tử ở vị trí bất kì của mảng
9 array_push ($array, $val1, $val2, … , $valn) Thêm một hoặc nhiều phần tử vào cuối mảng $array. Hàm trả về kiểu số nguyên là số lượng phần tử của mảng $array mới
10 array_unshift ($array, $val1, $val2, … , $valn) Thêm một hoặc nhiều phần tử vào đầu mảng $array. Hàm trả về kiểu số nguyên là số lượng phần tử của mảng $array mới
11 array_reverse ($array) Đảo ngược vị trị các phần tử của mảng, phần tử cuối trở thành phần tử đầu tiên, phần tử kế cuối trở thành phần tử thứ nhì, … kết quả trả về là một mảng mới.
12 array_flip ($array) Trả về một mảng có khóa và giá trị được hoán đổi cho nhau so với $array (giá trị thành khóa và khóa thành giá trị)
13 array_sum ($array) Tính tổng các phần tử trong mảng
14 min ($array) Xác định phần tử nhỏ nhất trong mảng.
15 max ($array) Xác định phần tử lớn nhất trong mảng.
16 array_count_values ($array) Thống kê số lần xuất hiện của các phần tử trong mảng.
17 array_merge ($array1, $array2, … , $arrayn) Nhập 2 hay nhiều mảng thành một mảng duy nhất và trả về mảng mới
18 array_rand ($array, $number) Lấy ngẫu nhiên $number phần tử mảng $array và đưa vào mảng mới (lấy giá trị khóa)
19 array_search ($value, $array) Tìm phần tử mang giá trị $value trong mảng $array. Trả về khóa của phần tử tìm được
20 array_key_exists ($key, $array) Kiểm tra khóa $key có tồn tại trong mảng $array hay không ? Nếu có trả về giá trị true
21 in_array ($value, $array) Kiểm tra giá trị $value có tồn tại trong mảng $array hay không ? Nếu có trả về true
22 array_slice ($array, $begin, $finish) Trích lấy một đoạn phần tử của mảng $array từ vị trí $begin đến vị trí $finish. Phần tử đầu tiên (chỉ số 0), phần tử cuối cùng (chỉ số -1 hay count($array)-1)
23 array_change_key_case ($array, case) Chuyển đổi các key trong mảng thành chữ hoa hoặc chữ thường
24 implode ($str, $array) Chuyển đổi giá trị của mảng $array thành một chuỗi bao gồm các phần tử cách nhau bởi ký tựu $str
25 explode ($delimiter, $str) Chuyển một chuỗi thành một mảng. Tách chuỗi dựa vào $delimiter, mỗi đoạn tách ra sẽ thành một phần tử của mảng mới.
26 current($array) Truy xuất phần tử hiện tại của mảng
27 end($array) Truy xuất phần tử cuối cùng của mảng
28 next($array) Truy xuất phần  tử sau phần tử hiện tại của mảng
29 prev($array) Truy xuất phần tử trước phần tử hiên tại của mảng
30 reset() Quay về vị trí phần tử đầu tiên trong mảng
31 serialize ($value) Chuyển chuỗi/mảng/đối tượng $value thành một chuỗi đặc biệt để lưu vào cơ sở dữ liệu
32 unerialize ($value) Chuyển chuỗi đặc biệt về trạng thái ban đầu
33 shuffle ($array) Tạo ra mảng mới (mảng liên tục) với thứ tự các phần tử trong mảng bị thay đổi
34 compact() Tạo ra mảng mới từ các biến có sẵn
35 range() Sử dụng hàm range để tạo ra các phần tử của mảng
36 array_combine ($key, $values) Tạo một mảng mới có khóa được lấy từ mảng $keys và giá trị được lấy từ mảng $value theo tuần tự (yêu cầu số phần tử ở 2 mảng phải bằng nhau)
37 array_diff ($array1, $array2) Trả về một mảng bao gồm các phần tử có giá trị tồn tại trong mảng $array1 nhưng không tồn tại trong mảng $array2
38 array_diff_key ($array1, $array2) Trả về một mảng bao gồm các phần tử có khóa tồn tại trong mảng $array1 nhưng không tồn tại trong mảng $array2
39 array_diff_assoc ($array1, $array2) Trả về một mảng bao gồm các phần tử có khóa tồn tại trong mảng $array1 nhưng không tồn tại trong mảng $array2
40 array_intersect ($array1, $array2) Trả về một mảng bao gồm các phần tử giống nhau về giá trị giữa 2 mảng $array1 và $array2
41 array_intersect_key ($array1, $array2) Trả về một mảng bao gồm các phần tử giống nhau về khóa giữa 2 mảng $array1 và $array2
42 array_intersect_assoc ($array1, $array2) Trả về một mảng bao gồm các phần tử giống nhau về khóa và giá trị giữa 2 mảng $array1 và $array2
43 array_walk() Gửi các giá trị của mảng đến một hàm nào đó để xử lý và nhận kết quả trả về là một mảng mới
44 array_map() Gửi các giá trị của một hay nhiều mảng đến một hàm nào đó để xử lý và nhận kết quả trả về là một mảng mới
45 array_stice (array, offset, length, preserve) Trích xuất lấy một đoạn phần tử của mảng từ vị trí bắt đầu offset (vị trí bắt đầu của mảng là 0) và lấy length phần tử
46 array_splice (array1, offset, length, array2) Xóa bỏ một đoạn phần tử của mảng array1 từ vị trị bắt đầu và lấy length phần tử. Sau đó thay thế các phần tử bị loại bở bằng mảng array2
47 aort(array) Sắp xếp các phần tử trong mảng array tăng dền theo giá trị
48 rsort(array) Sắp xếp các phần tử trong mảng array giảm dền theo giá trị
49 ksort(array) Sắp xếp các phần tử trong mảng array tăng dền theo khóa
50 krsort(array) Sắp xếp các phần tử trong mảng array giảm dền theo khóa

 

 

Hàm trong PHP

  1. Hàm là gì ?
  • Hàm là tập hợp một hay nhiều câu lệnh được xây dựng đề thực hiện một chức năng nào đó.
  • Khối lệnh này chỉ cần xây dựng duy nhất một lần, và có thể được sử dụng nhiều lần trong toàn bộ quá trình.
  1. Có bao nhiều hàm trong PHP
  • Hàm trong PHP được xây dựng vô cùng đa dạng và phong phú, bao gồm các hàm xử lý chuỗi, số, mảng, ngày tháng, …
  • Chúng ta tạm thời chia làm 2 nhóm hàm:
    • Hàm được cung cấp sẵn bởi PHP
    • Nhóm hàm do người dùng tự định nghĩa.
  1. Làm sao để viết một hàng trong PHP
  • Vấn đề 1: Hàm không tham số và không có trả vê
  • Vấn đề 2: Sự trả về của hàm
  • Vấn đề 3: Truyền tham số vào hàm:
    • Phân biệt biến toán cục và biến cục bộ
    • Phân biệt tham chiếu và tham trị
  • Vấn đề 4: Tìm hiểu include và require.
    • Hàm không tham số và không có trả về
  • Xây dựng hàm vẽ các box
  • Lưu ý về cách đặt tên hàm
  • Biết cách khai báo và gọi hàm không có tham số và không có trả về.
    • Sự trả về của hàm
  • Xây dựng hàm vẽ các box với sự trả về của hàm return
  • Hàm trả về một giá trị
  • Hàm trả về nhiều giá trị
  • Hàm trả về kết quả true hoặc false
    • Truyển tham số vào hàm
  • Truyển nội dung vào cho box (hàm 1 tham số)
  • Truyển truyền rộng và chiều cao của box (hàm nhiêu tham số)
  • Gán giá trị mặc định cho tham số

Cấu trúc câu lệnh trong PHP

Câu điều kiện

  • Câu điều kiện là câu lệnh chúng ta thường xuyên sử dụng khi viết mã cho bất kì ngôn ngữ lập trình nào.
  • Câu điều kiện giúp chúng ta thực hiện những hành động khác nhau trong những điều kiện khác nhau.
  • Hai nhóm loại câu điều kiện
    • IF…ELSE
      • IF
      • IF … ELSE
      • IF … ELSE IF … ELSE
      • Ví dụ
<?php

$number = 12;

if($number &gt;= 0) {

Echo “Số dương”;

}

?>

Câu điều kiện SWITCH

  • Câu điều kiện switch có một điều kiện mặc định, nghĩa là khi giá trị đưa vào không thỏa mãn một điều kiện nào thì nó sẽ lấy các câu lệnh trong phần điều kiện mặc định để thực hiện.

Vòng lặp

  • Vòng lặp là một đoạn mã lệch trong chương trình được thực hiện lặp đi lặp lại cho đến khi thỏa mãn một điều kiện nào đó.
  • Trong PHP chúng ta có 4 loại vòng lặp
    • for
    • while
    • do … while
    • for … each
  • Vòng lặp for:
  • Vòng lặp while:
  • Vòng lặp do … while:
  • Break – continue
    • Câu lệnh break có chức năng thoát khỏi một vòng lệnh. Nó có thể được sử dụng để nhảy ra khỏi một vòng lặp
    • Câu lệnh continue có chức năng dừng vòng lặp tại giá trị đó và nhảy sang giá trị khác trong vòng lặp.
while (condition) {

continue;

break;

}

Toán tử trong PHP

  • Toán tử trong PHP

    • Toán tử số học: + – * / %
    • Toán tử gán: += -= *= /= %=
    • Toán tử ++ —
    • Toán tử so sánh > < >= <= == === != <> !===
    • Toán tử logic AND OR XOR && || !
    • Toán tử điều kiện
  • Thực hiện

    + – * /

<?php
 
  $x = 2;
 
  $y = $x + 2;
 
?>
  • Các toán tử này nằm trong nhóm “Toán tử số học”, trong nhóm này chúng ta còn có thể thực hiện các phép toán
    • % chia lấy phần dư
    • – phủ định của một số
  • Toán tử gán:

<?php
 
  $x = 2;
 
  $x *= 5;
 
?>
  • Chúng ta có thể áp dụng cách viết này cho các trường hợp + – * /
  • Cách viết này thuộc nhóm “toán tử gán”: += -= *= /=
  • ++$x và $x++ có gí khác nhau:
    • ++$x tăng $x lên một đơn vị, sau đó trả về giá trị của $x
    • $x++ trả về giá trị của $x, sau đó tăng x lên một đơn vị
    • –$x giảm $x xuống một đơn vị, sau đó trả về giá trị của $x
    • $x— trả về giá trị của $x, sau đó giảm x xuống một đơn vị
  • Toán tử so sánh:

    • == so sánh bằng
    • === so sánh bằng tuyệt đối
    • != so sách khác
    • !=== so sách khác tuyệt đối
    • <> so sánh khác
  • Toán tử logic

    • ! phủ định của một giá trị nào đó
  • Toán tử điều kiện

    • Cú pháp: (condition) ? value1 : value2;
    • Ví dụ:
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8”>
 
<?php
 
$variable = “PHP training”;
 
$result = (is_string($variable)) ? “Chuỗi” : “Không phải chuỗi”;
 
 
 
echo $result;
 
?>

Biến và Hằng trong PHP

Biến là gì?

  • Biến là một giá trị có thể thay đổi khi chương trình thực thi. Khi biến được tạo sẽ xuất hiện một vùng nhớ để lưu trữ.
  • Biến trong PHP chỉ tồn tại trong thời gian server phát sinh trang web. Sau khi đã phát trinh xong trang web, tất cả các biến đều bị xóa đi.
  • Một biến gồm 2 thành phàn cơ bản: tên biến và giá trị của biến

<?php

$firstName = “John”;

$lastName = “Smith”;

$number = 12;

?>

  • Quy định khi đặt tên biến:
    • Tên biến phải bắt đầu bằng 1 kí tự hoặc ký tự gạch dưới (ký hiệu _).
    • Tên biến chỉ bao gồm ký tự chữ, ký tự số và gạch dưới.
    • Không chứa ký tự khoảng trắng trong tên biến.
    • Phân biệt chữ hoa và chứ thường.
  • Giá trị
    • Khi các giá trị của biến được đặt trong dấu ngoặc kép (hoặc dấu ngoặc đơn) cho biết biến đó lưu trữ giá trị kiểu chuỗi.
    • Ngược lại cho biết biến đó lưu trữ giá trị kiểu số.
  • Ngoài kiều chuỗi, trong PHP còn có kiểu dữ liệu
    • Các kiểu dữ liệu thường được sử dụng trong PHP: string, numberic, bloolean, null, array, object.
    • Tạm thời chúng ta sẽ tập trung vào kiểu string và kiểu numberic. Các kiểu dữ liệu khác chúng ta sẽ được giới thiệu sau.
  • Chúng ta có 2 cách sau đề xác định kiểu dữ liệu của một biến nào đó:
    • Sử dụng hàm gettype()
    • Sử dụng hàm var_dump()
  • Có thể chuyển đổi dữ liệu của một biến nào đó hay không ?
    • Chúng ta hoàn toàn có thể chuyển đổi kiểu dữ liệu của một biến nào đó, bằng cách thực hiện một trong hai cách sau:
      • Sử dụng ép kiểu.
      • Sử dụng settype()
      • Để kiểm tra kiểu dữ liệu của một biến nào đó chúng ta có thể dùng các hàm is_numeric(), is_float(), is_string(), is_array(), is_object(), ….Hàm để kiểm tra kiểu dữ liệu của một biến:

Hằng số trong PHP

  • Khác với biến, hảng số là giá trị không thể thay đổi được.
  • Định nghĩa hằng
<?php

define(“PI”, 3.14);

echo “Value PI: ” . PI;

?>

10 lời khuyên cho người mới học PHP

PHP là ngôn ngữ đằng sau một số ứng dụng web mạnh mẽ và phổ biến nhất hiện nay, trong đó có thể kể đến Facebook và WordPress.

Học một ngôn ngữ mới có thể khá khó khăn với nhiều người. Bài viết này giới thiệu với bạn đọc một số lời khuyên quý báu của các chuyên gia PHP dành cho người mới bước chân vào thế giới PHP.

1. Elizabeth Naramore: Bắt đầu với OOP

Naramore hiện đang là nhân viên của SourceForge và người sáng lập trang PHPWomen.org. Đối với người vừa mới bắt đầu học PHP, Naramore cho rằng nên có một nền tảng vững chắc trong việc lập trình hướng đối tượng (OOP) trước khi tìm hiểu sâu hơn vào PHP.

“Nếu bạn vốn không xuất thân từ lĩnh vực lập trình, hãy dành thời gian để tìm hiểu nguyên tắc căn bản của phát triển phần mềm. Những vấn đề cần chú ý như lập trình hướng đối tượng (OOP), phát triển hướng kiểm thử (test driven development), quản lí phiên bản (version control), gỡ lỗi (debugging), các mẫu thiết kế (design pattern), vv).

“Nếu bạn đã thử và không thể giải quyết vấn đề của bạn, đừng ngại hỏi. Các cộng đồng PHP nói chung rất hữu ích và thân thiện. Có vô số tài nguyên cho những người mới trên mạng. Nhờ đến sự trợ giúp của cộng đồng, cho dù đó là một nhóm người dùng địa phương, một dự án mã nguồn mở của cộng đồng, hay một kênh IRC như #phpc trên freenode”.

2. Keith Casey: Hãy Google trước khi hỏi

Casey là chủ của một cửa hàng bán phần mềm và là một diễn giả rất có tiếng trong các cuộc hội thảo lớn về PHP.

Lời khuyên của ông nhấn mạnh việc hãy biết mình đang ở đâu trong cộng đồng PHP cùng với một câu châm ngôn đang ngày càng trở nên quan trọng: Google trước khi hỏi.

“Hãy tham gia ngay vào một nhóm người dùng PHP (PHP User’s Group). Có vô số nhóm người dùng PHP ở mọi nơi trên thế giới. Đó là nơi những người thông minh tập hợp để thảo luận, khám phá những ý tưởng, và giúp đỡ lẫn nhau.

“Hãy nhớ thử tìm kiếm trên Google trước khi đặt câu hỏi. Chẳng có ai thích những kẻ lười biếng cả”.

3. Eamon Leonard: Tham gia các dự án mã nguồn mở

Leonard điều hành một công ti phần mềm đặt tại Ireland và là đồng sáng lập CloudSplit, một dịch vụ phân tích thời gian thực cho công nghệ điện toán đám mây. Giống như nhiều đồng nghiệp của mình, ông khuyên rằng hãy cố gắng tham gia các dự án mã nguồn mở ngay cả khi mới bắt đầu học PHP.

“Hãy tham gia vào các dự án mã nguồn mở ngay sau khi bạn nắm bắt được các vấn đề cơ bản… Việc này khiến bạn có thể truy cập vào mã nguồn của các dự án và là một cơ hội rất lớn để học hỏi từ các chuyên gia kì cựu trong ngành”.

“Tìm và lập tài liệu cho các lỗi có thể tái phát sinh là một nhiệm vụ rất tốn thời gian và được đánh giá cao bởi bất kỳ nhóm phát triển mã nguồn mở nào… Khi thuê các nhà phát triển để làm việc với chúng tôi, chúng tôi sẽ dành nhiều sự ưu ái hơn cho những ai đã từng làm việc trên một dự án phần mềm mã nguồn mở”.

4. Lorna Jane Mitchell: Hãy bắt tay vào làm (Just do it)

“Lornajane” là tên gọi phổ biến hơn của Mitchell trên cộng đồng trực tuyến, là một nhà cố vấn, nhà phát triển phần mềm, một tác giả và diễn giả về PHP.

Cô đưa ra một lời khuyên khá nổi tiếng trong giới chuyên môn: Hãy bắt tay vào làm (Just do it).

“Muốn biết bơi thì phải nhảy xuống nước! PHP là một ngôn ngữ rất dễ học. Cách tốt nhất để tìm hiểu xem cái gì đó hoạt động như thế nào là bắt tay vào làm thử.

“Bất cứ ai cũng có thể lập trình PHP. Ít khó khăn khi tham gia có nghĩa là có rất nhiều code PHP tồi trên thế giới. Nhưng những đoạn code PHP tồi mà chạy tốt thì cũng vẫn hữu ích. Cá nhân tôi nghĩ rằng nếu bạn có thể giải quyết vấn đề của bạn với PHP thì cứ mạnh dạn bắt tay vào code ngay cả khi nó chưa hoàn hảo”.

5. Chris Cornutt: Tránh những đoạn code rối rắm

Cornutt điều hành PHPDeveloper.org và Joind.in. Ông đã bắt đầu lập trình PHP từ năm 1998. Trong lời khuyên của ông dành những người mới bắt đầu phát triển PHP, ông cảnh báo về những đoạn code rối rắm.

“Tôi nghĩ rằng những phát triển mới sẽ dễ dàng bị chán nản với những đoạn code rối rắm, đau đầu… Những người mới bắt đầu và có một chút thích thú với ngôn ngữ PHP thường rất hăng hái viết code với tâm lí là chỉ cần code chạy được là được, nhưng tôi dám chắc rằng hơn một nửa trong số họ sẽ bỏ cuộc”.

“Hãy thử tìm một người cố vấn có thể hướng dẫn bạn một số bước đi ban đầu. Bạn sẽ cảm nhận được một sự khác biệt rất lớn khi bạn có một người nào đó để bàn luận. IRC là một lựa chọn tốt, nhưng một người để có thể gặp mặt để học hỏi sẽ tốt hơn rất nhiều.

Thường họ có rất nhiều các trang web với vô số các đoạn code và các ví dụ PHP đã giúp họ vượt qua những tình huống khó khăn. Một số ví dụ rất hay, một số không có ích nhiều lắm nhưng hãy học chúng một cách dần dần. Phát triển PHP cũng giống như bất cứ điều gì khác, là một kỹ năng mà cần phải được mài giũa – bạn không thể nhảy bụp vào và trở thành một chuyên gia sau một đêm được”.

6. Abraham Williams: Học Drupal

Williams là một nhà phát triển và tự gọi mình là một “người ủng hộ các hacker” (hacker advocate). Ông cũng khuyên những người mới lập trình PHP nên tham gia vào các dự án lập trình mã nguồn mở.

“Tìm một dự án hoặc cộng đồng chất lượng (tốt nhất là các dự án phát triển theo định hướng mã nguồn mở) để đóng góp vào. Tìm hiểu về các đoạn mã, con người và văn hóa riêng của dự án đó. Bạn sẽ học hỏi được từ các nhà phát triển có kinh nghiệm, niềm đam mê với những đoạn code chất lượng cùng với một cộng đồng thân thiện. Những người mới sẽ nhận được nhiều hơn từ việc đề xuất các đoạn code cải tiến trong các bản vá và thậm chí từ việc làm thế nào để là một thành viên cộng đồng tốt hơn”.

“Tôi cho rằng các dự án Drupal là một điểm khởi đầu tốt. Đó là một cộng đồng trưởng thành và hùng hậu, có tốc độ tăng trưởng mạnh mẽ. Ngoài ra, có rất nhiều cơ hội việc làm đối với các nhà phát triển Drupal giỏi”.

7. Demian Turner: Học hỏi từ các coder nhiều kinh nghiệm

Turner đã làm việc với các web và các dự án mã nguồn mở từ năm 1996. Ông điều hành PHPKitchen.com và gần đây là một trong những người lọt vào chung kết cuộc thi doanh nhân khởi nghiệp Seedcamp.

Ông đã đưa ra một lời khuyên vô cùng quý báu cho những người mới phát triển PHP để tiết kiệm thời gian, cải thiện các đoạn code tốt hơn và giúp duy trì được sự yêu thích viết code.

“Đọc các code của các nhà phát triển dày dạn kinh nghiệm. Đó luôn là những cách tốt hơn, sáng sủa hơn để giải quyết các vấn đề bạn gặp phải. Đừng phát minh lại bánh xe, bạn sẽ luôn có thừa các công cụ, thư viện sẵn có để lập trình. Hãy sử dụng các thư viện có uy tín bất cứ khi nào bạn có thể thay vì tự viết code từ đầu”.

“Đảm bảo rằng code của bạn thật dễ hiểu. Nếu chính bạn cũng không thể hiểu được code mà bạn viết ra sau sáu tháng sau thì làm sao các nhà phát triển khác có thể hiểu nổi?”.

“Luôn cố gắng đơn giản hóa các đoạn code. Sẽ vất vả hơn để viết các đoạn code đơn giản hơn nhưng một cấu trúc code nhất quán sẽ giúp bạn tiết kiệm rất nhiều thời gian và công sức hơn khi phải bảo trì”.

“Cuối cùng, tìm hiểu về một số các lập trình viên xuất sắc và cách làm thế nào họ giữ được niềm đam mê về nghệ thuật lập trình trong nhiều năm như vậy”.

8. Stuart Herbert:

Tìm hiểu về phát triển hướng kiểm thử (test-driven development), tính đóng gói (encapsulation) và quản lí mã nguồn (source control)

Herbert đã bắt đầu code PHP kể từ năm 1999. Ông đã viết về PHP trong nhiều năm và đã đóng góp rất nhiều cho Gentoo Linux.

Đối với những người phát triển PHP, ông khuyên “Hãy tìm hiểu về việc phát triển hướng thử nghiệm và đóng gói. Một khi hiểu về nó, bạn sẽ viết code nhanh hơn. Và bất cứ ai phát triển kế thừa từ những đoạn code của bạn sẽ cảm ơn bạn rất nhiều”.

“Tìm hiểu về việc quản lí mã nguồn chưa bao giờ được xem nhẹ”.

Ông cũng nói rằng sức mạnh lớn nhất của ngôn ngữ PHP là bộ tài liệu tuyệt vời và hoàn toàn miễn phí tại PHP.net. Với một số ngôn ngữ khác, có thể bạn sẽ cần phải đi ra ngoài và mua các tài liệu như sách ngoại trừ với PHP”.

9. Maggie Nelson: Tìm hiểu về lưu trữ dữ liệu (data storage)

Nelson là một nhà phát triển PHP hiện đang làm việc cho Flickr.

Cô nói rằng những người mới học PHP nên bắt đầu học về lưu trữ dữ liệu ngay từ khi mới bắt đầu.

“Hầu như bạn sẽ sử dụng PHP cho các ứng dụng web. Các ứng dụng web nổi trội là những ứng dụng web sử dụng dữ liệu theo những cách không bình thường để giải quyết những vấn đề bình thường. Nếu bạn chỉ vừa bắt đầu với PHP và đây là ngôn ngữ lập trình đầu tiên của bạn, hãy dành một hoặc hai ngày để đọc về lưu trữ dữ liệu và một chút về SQL. PHP được biết đến là hoạt động rất tốt với các cơ sở dữ liệu. Hãy thử tìm hiểu về MySQL, các cơ sở dữ liệu quan hệ khác và một vài giải pháp lưu trữ NoSQL”.

“Hãy tự viết code cho ít nhất một ứng dụng mà không dùng bất cứ thư viện hay framework hỗ trợ nào. Thế giới PHP cung cấp rất nhiều các framework tuyệt vời và có thể dễ dàng trừu tượng hóa (abstract) việc truy cập dữ liệu, nhưng hãy luôn đảm bảo rằng bạn thực sự hiểu dữ liệu thực sự được thao tác ra sao đằng sau hậu trường!”.

10. Michael Maclean: Tìm hiểu về bảo mật

Maclean là một nhà phát triển PHP và Python tại Outer Hebrides, Scotland.

Ông nói: “Khá dễ dàng để có thể hiểu và code PHP, đó là lí do tại sao rất nhiều người sử dụng nó, nhưng tôi nghĩ điều quan trọng là phải xem trên thực tế mọi người đang dùng nó như thế nào. Thay vì viết tất cả mọi thứ từ đầu, hãy tìm hiểu một vài framework. Việc này sẽ giúp bạn có một điểm xuất phát thuận lợi hơn.

“Ngoài ra nên học thêm về bảo mật. Trong quá khứ, PHP đã bị nhiều chỉ trích về vấn đề này. Đó là mặt trái của tính dễ sử dụng của PHP. Có nhiều nguồn sách vở và tài nguyên trên mạng trình bày về cách tránh đối phó với các vấn đề bảo mật. Hãy tìm đọc những cuốn sách và thông tin trên mạng về chủ đề bảo mật của các tác giả Chris Shiflett và Ilia Alshanetsky”.