• Có ba mức phạm vi: Biến hàm: Được khai báo và sử dụng cục bộ trong phạm vi hàm; Biến toàn cục không nằm trong hàm: Được khai báo và sử dụng bên trong một script, mặc định là không
Trang 1BÀI 4 LẬP TRÌNH PHP
ThS Chử Đức Hoàng
Trang 2TÌNH HUỐNG DẪN NHẬP
Vai trò của ngôn ngữ PHP trong việc lập trình các ứng dụng mã nguồn mở?
• PHP (viết tắt hồi quy "PHP: Hypertext Preprocessor") là một ngôn ngữ lập trình kịch
bản hay một loại mã lệnh chủ yếu được dùng để phát triển các ứng dụng viết chomáy chủ, mã nguồn mở, dùng cho mục đích tổng quát
• Nó rất thích hợp với web và có thể dễ dàng nhúng vào trang HTML Do được tối ưuhóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học
và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên
PHP đã nhanh chóng trở thành một ngôn ngữ lập trình web phổ biến nhất thế giới
Trang 3MỤC TIÊU BÀI HỌC
Kế thừa và phát triển dựa trên các sản phẩm mã nguồn mở được viếtbằng PHP
Tìm hiểu cấu trúc và phương pháp lập trình phần mềm
Tìm hiểu câu lệnh, vòng lặp, toán tử khi lập trình bằng PHP
Trang 4Các khái niệm cơ bản về PHP
4
Trang 5• Nhúng PHP trong Html;
• Lệnh và chú thích;
• Các kiểu dữ liệu cơ bản;
• Biến số;
• Chuyển đổi kiểu dữ liệu;
• Giá trị và tham chiếu;
• Tuổi thọ của biến;
• Hằng số
1 CÁC KHÁI NIỆM CƠ BẢN VỀ PHP
Trang 71.2 LỆNH VÀ CHÚ THÍCH
• Mỗi lệnh phải kết thúc bằng dấu “;” (trừ
lệnh cuối trước khóa ?>)
• Khối (nhiều) lệnh được đặt trong cặp { }
Trang 81.3 CÁC KIỂU DỮ LIỆU CƠ BẢN
Dưới đây là các kiểu dữ liệu cơ bản của PHP:
HI;
Chuỗi ký tự
Trang 9• Quy ước về cách đặt tên:
Bắt đầu bằng chữ cái hoặc gạch dưới (_)
Không chứa ký tự trắng (space, tab)
Phân biệt in hoa – thường
Trang 101.5 CHUYỂN ĐỔI KIỂU DỮ LIỆU
Lấy tên kiểu: gettype($tên_biến hay biểu thức).
Thiết lập kiểu dữ liệu cho biến: settype($tên_biến, “kiểu_dữ_liệu”).
Trang 111.6 GIÁ TRỊ VÀ THAM CHIẾU
• Khi thực hiện phép gán biến cho biến thì mặc định giá trị được sao chép từ biến
nguồn sang biến đích
• Dùng tham chiếu khi muốn đặt thêm một tên cho một biến có sẵn
• Có ba mức phạm vi:
Biến hàm: Được khai báo và sử dụng cục bộ trong phạm vi hàm;
Biến toàn cục (không nằm trong hàm): Được khai báo và sử dụng bên trong
một script, mặc định là không thể sử dụng bên trong các hàm;
Biến siêu toàn cục: Có thể sử dụng ở mọi nơi, không thể định nghĩa bởi
người dùng
Trang 12Một số loại biến toàn cục:
Trang 131.7 TUỔI THỌ CỦA BIẾN
• Biến được tạo ra khi được gán giá trị lần đầu và tồn tại trong suốt quá trình thực thiscript
• Mỗi lần script được thực thi là biến được tạo ra độc lập với các lần thực thi khác củacùng script đó
Trang 141.8 HẰNG SỐ
define (‘tên_hằng’, giá trị)
Giá trị hằng chỉ được dùng các kiểu dữ liệu cơ bản;
Bắt buộc định nghĩa trước khi dùng
Giống cách đặt tên biến;
Không sử dụng ký hiệu $;
Thường đặt tên bằng chữ in hoa
Trang 15CÂU HỎI THẢO LUẬN
Sự khác nhau khi khai báo tên hằng và biến?
Trang 243.2 CÂU LỆNH SWITCH
switch (biểu thức)
{case biểu thức 1:
khối lệnh 1case biểu thức 2:
khối lệnh 2
case biểu thức n:
khối lệnh ndefault:
khối lệnh cuối
Trang 26Khối lệnh
Biểu thức 1: Thực hiện 1 lần khi bắt đầu vòng lặp
Biểu thức 2: Điều kiện lặp, được xem xét trước mỗi lần lặp
Biểu thức 3: Thực hiện sau mỗi lần lặp
3.4 VÒNG LẶP FOR
for (biểu thức 1; biểu thức 2; biểu thức 3)
Trang 28Có nên thường xuyên sử dụng lệnh Break và Contious không? Tại sao?
CÂU HỎI THẢO LUẬN
Trang 294 HÀM TRONG PHP
• Khai báo hàm;
• Các tham số của hàm;
• Hàm kép
Trang 30các tham số cần thiết trong cặp dấu ().
• Kết thúc và trả kết quả
• Lệnh return dùng để kết thúc và trả kết quả cũng như quyền điều khiển lại cho nơi
đã gọi hàm Nếu không có lệnh return thì mặc định hàm trả về giá trị NULL
• Muốn trả về hơn một giá trị thì phải dùng mảng
Trang 314.1 KHAI BÁO HÀM (tiếp theo)
• Mặc định các tham số được truyền vào bên trong hàm theo phương pháp tham trị.Trường hợp muốn thay đổi trực tiếp trên các tham số truyền thì người ta dùngphương pháp tham chiếu, thêm dấu & trước tên tham số (khi định nghĩa) cũng nhưtên biến được truyền làm tham (khi gọi hàm)
• Tham số có giá trị mặc định:
Tương tự cách khai báo và gán giá trị đầu tiên cho biến, thông thường loại tham
số này nên đặt cuối trong danh sách tham số;
Khi gọi hàm nếu bỏ trống tại vị trí tham số có giá trị mặc định thì mặc nhiên giátrị mặc định được dùng cho tham số đó
• Hàm có số lượng tham số không xác định:
Khai báo danh sách tham số rỗng ();
Sử dụng các hàm sau để lấy danh sách các tham số: func_num_args(): số lượngtham số khi hàm được gọi func_get_arg(i): giá trị các tham số thứ i đượctruyền;
(bắt đầu từ 0);
Trang 324.2 CÁC THAM SỐ CỦA HÀM
Thêm từ khóa static khi khai báo biến;
Được khởi tạo (và gán giá trị) một lần đầu tiên duy nhất trong suốt quá trìnhthực thi của script
Khai báo lại biến toàn cục với từ khóa global (bên trong hàm) để có thể sử dụngđược biến toàn cục này bên trong hàm;
Sử dụng các hàm sau để lấy danh sách các tham số:
func_num_args(): Số lượng tham số khi hàm được gọi;
func_get_arg(i): Giá trị các tham số thứ i được truyền
(Bắt đầu từ 0);
func_get_args(): Danh sách tất cả các tham số
Trang 33• Phạm vi: Có giá trị sử dụng trong toàn script, ngay cả trước và sau khi định nghĩa.
Cho phép định nghĩa lồng hàm, thậm chí lồng bên trong một cấu trúc điều khiển(if, switch, while/do, while…);
Loại hàm này có phạm vi trong toàn script và không thể định nghĩa lại
một hàm được định nghĩa thì tên biến đó có thể được dùng như một cách gọi hàmkhác với cách gọi hàm bình thường bằng tên hàm
Trang 345 CÁC PHÉP TOÁN VỚI MẢNG VÀ CHUỖI
Trang 35• Tạo mảng và gán giá trị:
$tên_biến = array([khóa => ]giá trị, [khóa => ]giá trị,…)
• Trường hợp không định nghĩa các khóa thì mảng sẽ được gán khóa mặc định theokiểu số nguyên tăng dần bắt đầu từ 0
• Tạo mảng từ một mảng có sẵn:
5.1 KHAI BÁO MẢNG
Trang 36• Thêm một phần tử vào mảng:
$tên_mảng[khóa] = giá trị
Phần tử luôn được thêm vào cuối mảng;
Nếu khóa đã tồn tại thì không có phần tử nào được thêm;
Trường hợp không chỉ định khóa thì khóa sẽ được chọn bằng khóa có giá trị sốnguyên lớn nhất cộng 1
• Xóa một phần tử khỏi mảng:
unset($mảng[khóa]); // xóa một phần tửunset($mảng); // xóa toàn bộ
• Đếm số phần tử của mảng:
count($tên_mảng)
5.1 KHAI BÁO MẢNG (tiếp theo)
Trang 37echo "My PC has a $computer['processor'] processor<br/>\n";
echo "My PC has a $computer[""processor""] processor<br/>\n";
// đúng cú pháp nhưng không nên dùng
echo "My PC has a $computer[processor] processor<br/>\n";
// cách dùng tốt nhất
echo "My PC has a {$computer['processor']} processor<br/>\n";
Trang 38• Duyệt mảng với vòng lặp foreach:
foreach (mảng as [khóa =>] giá trị)
Khối lệnh
• Duyệt mảng với vòng lặp for:
Tạo mảng khóa số nguyên trung gian:
$mảng_khóa = array_keys($mảng)
Truy xuất thông qua mảng khóa:
$mảng[$mảng_khóa[i]]
• Duyệt mảng với con trỏ mảng:
Con trỏ mảng trỏ vào phần tử đầu tiên khi mảng được tạo ra;
Các hàm di chuyển con trỏ mảng:
reset($mảng)end($mảng)current($mảng)/pos($mảng)
5.2 TRUY XUẤT MẢNG (tiếp theo)
Trang 39• Duyệt mảng với hàm array_walk:
Tạo một hàm duyệt mảng theo cú pháp:
function hàm_duyệt($giá_trị, $khóa)
Duyệt mảng bằng cách lặp hàm duyệt với hàm array_walk:
Trang 41• Tìm kiếm:
strpos($chuỗi, $chuỗi_con, $vị_trí_bắt đầu)
strrpos ($chuỗi, $chuỗi_con, $vị_trí_bắt đầu)
Trang 43TÓM LƯỢC CUỐI BÀI
• Nắm được khái niệm và các phương pháp lập trình cơ bản vớingôn ngữ lập trình PHP
• Các thành phần quan trọng của PHP như tên kiểu, biến, hàm
• Các phương pháp lập trình vòng lặp, tìm kiếm, so sánh…
• Đây là một ngôn ngữ lập trình tương thích tốt với hệ thống mãnguồn mở và thực tế cũng đã có nhiều phần mềm mã nguồn
mở dùng ngôn ngữ này