Hướng dẫn php in one day - php trong một ngày

Đóng lại Đăng ký học tại NIIT - ICT Hà NộiĐăng ký học tại NIIT - ICT Hà Nội

Show

// Truy cập giá trị theo key

echo $arr["Ngọc Anh"]; // Kết quả: 18   $arr["Ngọc Anh"]; // Kết quả: 18
 

Và cũng sử dụng key để thay đổi giá trị:

// Thay đổi lại giá trị theo key

$arr["Ngọc Anh"] = 20;["Ngọc Anh"] = 20;

echo $arr["Ngọc Anh"]; // Kết quả: 20   $arr["Ngọc Anh"]; // Kết quả: 20
 

IV.3. Mảng đa chiều

PHP cho phép bạn tạo và sử dụng mảng đa chiều. Trong đó, mảng đa chiều có thể chứa hơn một mảng.

Các mảng con sẽ được đánh thứ tự tự động như mảng chỉ số (hoặc theo tên chỉ định):

Bạn có thể thêm vào bao nhiêu mảng con tùy ý. Nhưng mảng 3 chiều trở lên sẽ rất khó quản lý, truy xuất chậm.

Ví dụ về mảng 2 chiều:

$arr = array( = array(

"Sinh viên" => array("Ngọc Anh", "Thu Hương"), => array("Ngọc Anh""Thu Hương"),

"Giảng viên" => array("Thành Luân", "Trọng Triều", "Văn Quyết"), => array("Thành Luân""Trọng Triều""Văn Quyết"),

"Bảo vệ" => array("Khánh", "Đức")  => array("Khánh""Đức")

);  
 

Truy xuất giá trị trong mảng 2 chiều:

echo $arr["Sinh viên"][1]; // Kết quả: Thu Hương   $arr["Sinh viên"][1]; // Kết quả: Thu Hương
 

Bạn cũng có thể không cần sử dụng key để tạo mảng con bên trong:

$arr = array( = array(

array("Ngọc Anh", "Thu Hương"),("Ngọc Anh""Thu Hương"),

array("Thành Luân", "Trọng Triều", "Văn Quyết"),("Thành Luân""Trọng Triều""Văn Quyết"),

array("Khánh", "Đức")("Khánh""Đức")

);  
 

Truy xuất giá trị trong mảng 2 chiều:

echo $arr["Sinh viên"][1]; // Kết quả: Thu Hương   $arr[1][1]; // Kết quả: Trọng Triều
 

Bạn cũng có thể không cần sử dụng key để tạo mảng con bên trong:

array("Ngọc Anh", "Thu Hương"),

$arr = array( = array(

"Sinh viên" => array("Ngọc Anh", "Thu Hương"), => array("Ngọc Anh""Thu Hương"),

"Giảng viên" => array("Thành Luân", "Trọng Triều", "Văn Quyết"), => array("Thành Luân""Trọng Triều""Văn Quyết"),

array((

"Bảo vệ" => array("Khánh", "Đức")  => 20,

);   => 30

Truy xuất giá trị trong mảng 2 chiều:

);  
 

Truy xuất giá trị trong mảng 2 chiều:

echo $arr["Sinh viên"][1]; // Kết quả: Thu Hương  cấu trúc điều kiệncác cấu trúc lặp để điều khiển chương trình PHP một cách thông minh, linh hoạt.

Bạn cũng có thể không cần sử dụng key để tạo mảng con bên trong:

array("Ngọc Anh", "Thu Hương"),

array("Thành Luân", "Trọng Triều", "Văn Quyết"),

array("Khánh", "Đức")

Khi đó truy xuất giá trị bạn sẽ sử dụng index:

echo $arr[1][1]; // Kết quả: Trọng Triều  

Mảng đa chiều có thể vừa chứa mảng liên kết vừa chứa mảng chỉ số:else {

Khi đó truy xuất giá trị bạn sẽ sử dụng index:

echo $arr[1][1]; // Kết quả: Trọng Triều  

Mảng đa chiều có thể vừa chứa mảng liên kết vừa chứa mảng chỉ số:
 

// chứa mảng chỉ số và mảng liên kết

  • "Giảng viên" => array("Thành Luân", "Trọng Triều", "Văn Quyết"),

"Khánh" => 20,

Khi đó truy xuất giá trị bạn sẽ sử dụng index:

echo $arr[1][1]; // Kết quả: Trọng Triều  

Mảng đa chiều có thể vừa chứa mảng liên kết vừa chứa mảng chỉ số:
 

// chứa mảng chỉ số và mảng liên kết

$b = 10; = 10;

"Giảng viên" => array("Thành Luân", "Trọng Triều", "Văn Quyết"),

if ($a > $b) { ($a > $b) {

echo $a; $a;

Mảng đa chiều có thể vừa chứa mảng liên kết vừa chứa mảng chỉ số:else {

echo $b; $b;

Mảng đa chiều có thể vừa chứa mảng liên kết vừa chứa mảng chỉ số:
 

// chứa mảng chỉ số và mảng liên kết

"Giảng viên" => array("Thành Luân", "Trọng Triều", "Văn Quyết"),

if ($age  ($age < 14)

"Khánh" => 20, "Chưa đủ tuổi yêu";

else

"Đức" => 30 "Lớn rồi";
 

// chứa mảng chỉ số và mảng liên kết

"Giảng viên" => array("Thành Luân", "Trọng Triều", "Văn Quyết"),

"Khánh" => 20,if elseif else nếu muốn chuyển sang kiểm tra điều kiện tiếp theo nếu điều kiện trước bị sai.

"Đức" => 30

)

echo $arr[1][1]; // Kết quả: Trọng Triều  

Mảng đa chiều có thể vừa chứa mảng liên kết vừa chứa mảng chỉ số:elseif (condition) {

)

V. CẤU TRÚC ĐIỀU KHIỂN TRONG PHP

Mảng đa chiều có thể vừa chứa mảng liên kết vừa chứa mảng chỉ số:else {

)

V. CẤU TRÚC ĐIỀU KHIỂN TRONG PHP

Mảng đa chiều có thể vừa chứa mảng liên kết vừa chứa mảng chỉ số:
 

// chứa mảng chỉ số và mảng liên kết

if ($age  ($age < 14) {

"Khánh" => 20, "Chưa đủ tuổi yêu";

"Đức" => 30elseif ($age >= 14 && $age < 18) {

echo "Thanh niên"; "Thanh niên";

} else {else {

echo "Trưởng thành"; "Trưởng thành";

}  
 

Kết quả:

Ở ví dụ trên, chúng ta sử dụng toán tử ?>05 để đánh giá tuổi nằm trong khoảng >=14 tuổi và < 18 tuổi.

Khi viết code, bạn có thể muốn lặp lại một hành động nhiều lần. Thay vì viết thêm code gần như bằng nhau trong một tập lệnh, chúng ta có thể sử dụng các vòng lặp để thực hiện một tác vụ như thế này.

PHP hỗ trợ các loại vòng lặp như:

  • while
  • do while
  • for
  • foreach

V.3. Vòng lặp while

Vòng lặp while thực thi một khối code miễn là điều kiện vẫn được đánh giá là đúng (true)while thực thi một khối code miễn là điều kiện vẫn được đánh giá là đúng (true)

Cú pháp vòng lặp while trong PHP:

// Hành động cần thực hiện lặp lại

// khi điều kiện còn đúng

}  
 

Kết quả:Lưu ý: Nếu điều kiện không bao giờ sai, vòng lặp sẽ chạy vĩnh viễn. Điều này có thể dẫn đến máy bị "đơ". Thế nên hãy cẩn thận!

Ở ví dụ trên, chúng ta sử dụng toán tử ?>05 để đánh giá tuổi nằm trong khoảng >=14 tuổi và < 18 tuổi.Vòng lặp while chạy với điều kiện ?>06 nhỏ hơn ?>07 (?>08). Vòng chạy đầu tiên biến ?>06 là 

Thông thường, trong website, có nhiều phần sẽ giống nhau. Ví dụ header, footer và menu...

Thông thường, trong website, có nhiều phần sẽ giống nhau. Ví dụ header, footer và menu... include 'header.php'?>

Vì thế, thay vì mỗi trang chúng ta lại viết lại thì ta tách từng phần ra file khác nhau để module hóa.p>Học PHP cơ bảnp>

Bạn có thể tạo tệp ?>55, ?>56 hoặc ?>57 chuẩn cho tất cả các trang trên web của mình.p>Học PHP OOPp>

Thông thường, trong website, có nhiều phần sẽ giống nhau. Ví dụ header, footer và menu...body>

Vì thế, thay vì mỗi trang chúng ta lại viết lại thì ta tách từng phần ra file khác nhau để module hóa.html>
 

Bạn có thể tạo tệp ?>55, ?>56 hoặc ?>57 chuẩn cho tất cả các trang trên web của mình.

Sau đó, khi cần cập nhật header thì bạn chỉ cần vào file ?>55 để thay đổi và PHP tự động áp dụng trên toàn bộ trang web.

Giả sử, chúng ta tạo một file ?>55 như sau:Lưu ý: Các tệp được include dựa trên đường dẫn tệp.

echo 'Học lập trình PHP';

?>  

  • Bây giờ, chúng ta có thể chèn file ?>55 vào các trang khác, ví dụ trang index.php bằng câu lệnh ?>62:include, nếu không tìm thấy file thì tập lệnh vẫn tiếp tục thực thi.
  • Trong khi sử dụng câu lệnh require, nếu không tìm thấy file, tập lệnh sẽ ngừng thực thi và tạo ra lỗi.

Học PHP cơ bản

Học PHP OOP

 

Trước khi máy chủ thực thi chương trình, nội dung file header.php sẽ được chèn vào file index.php

  • Cũng bằng cách này, bạn có thể thêm file header.php vào nhiều trang khác bằng lệnh include. Sau này thay đổi code, sửa chữa, phát triển thêm header cũng chỉ cần làm việc với 1 file là được.: Hàm được dựng sẵn, chúng ta chỉ việc gọi để sử dụng nó (Ví dụ: array(), asort()...)

  • > Lưu ý: Các tệp được include dựa trên đường dẫn tệp.: Hàm do người dùng tự định nghĩa, tùy biến theo nhu cầu cụ thể.

Câu lệnh require

Câu lệnh require cũng tương tự như câu lệnh include nhưng khác ở cách ứng xử khi không tìm thấy file.

Khi sử dụng câu lệnh include, nếu không tìm thấy file thì tập lệnh vẫn tiếp tục thực thi.

  • Trong khi sử dụng câu lệnh require, nếu không tìm thấy file, tập lệnh sẽ ngừng thực thi và tạo ra lỗi.
  • VI. HÀM TRONG PHP

Hàm (Function) là một khối câu lệnh có thể được sử dụng lặp lại trong một chương trình.

  • Một hàm sẽ không thực thi ngay lập tức. Nó sẽ chỉ được thực thi khi chúng ta gọi đến nó.
  • Có hai loại hàm trong PHP:
  • Built-in Function: Hàm được dựng sẵn, chúng ta chỉ việc gọi để sử dụng nó (Ví dụ: array(), asort()...)
  • User-defined Function: Hàm do người dùng tự định nghĩa, tùy biến theo nhu cầu cụ thể.
  • VI.1. User-defined Function

Cú pháp hàm (User-defined function) trong PHP:

Trong đó:

?>63: Là từ khóa để thông báo rằng chúng ta đang tạo ra một hàm "Chào bạn";

}  
 

0 1 2 3 i = 3. Thoát vòng lặp for  

Như bạn thấy, chương trình không in ra ?>46 mà thoát ngay khỏi vòng lặp từ lúc ?>06 bằng ?>48.

// Code của hàm

echo "Chào bạn"; "Chào bạn";

}

// Gọi hàm

chaoHoi();  ();
 

Kết quả, trên màn hình hiện ra:

VI.2. Hàm có tham số

Các hàm không chứa tham số có mức độ linh hoạt không cao. Do đó, để tạo ra các chức năng tùy biến, linh hoạt chúng ta sẽ thường sử dụng hàm có tham số.

  • Các tham số được truyền vào hàm như các biến.
  • Các tham số được chỉ định sau tên hàm và trong dấu ngoặc đơn.

Ở ví dụ bên dưới đây, hàm của chúng ta nhận một tham số, bình phương nó và in ra kết quả:

function tinhBinhPhuong($x) { tinhBinhPhuong($x) {

$x = $x * $x;  = $x * $x;

echo $x; $x;

}  
 

Bây giờ, chúng ta có thể sử dụng hàm ?>66 để tính bình phương các số mà chúng ta muốn.

tinhBinhPhuong(9); // Kết quả: 81(9); // Kết quả: 81

tinhBinhPhuong(4); // Kết quả: 16(4); // Kết quả: 16

tinhBinhPhuong(5); // Kết quả: 25  (5); // Kết quả: 25
 

Bạn cũng có thể thêm nhiều tham số, phân tách nhau bằng dấu phẩy ?>67

Ví dụ:

function tinhVanToc($quang_duong, $thoi_gian) { tinhVanToc($quang_duong$thoi_gian) {

$van_toc = $quang_duong / $thoi_gian; = $quang_duong / $thoi_gian;

echo "Vận tốc bằng: $van_toc m/s"; "Vận tốc bằng: $van_toc m/s";

}  
 

Bây giờ, chúng ta có thể sử dụng hàm ?>66 để tính bình phương các số mà chúng ta muốn.

tinhBinhPhuong(9); // Kết quả: 81

tinhBinhPhuong(4); // Kết quả: 16

tinhBinhPhuong(5); // Kết quả: 25  (100060);
 

Bạn cũng có thể thêm nhiều tham số, phân tách nhau bằng dấu phẩy ?>67

Ví dụ:
 

echo "Vận tốc bằng: $van_toc m/s";Lưu ý: Khi bạn định nghĩa hàm thì biến truyền cho hàm được gọi là tham số (parameters), nhưng khi gọi hàm, truyền giá trị vào thì nó được gọi là đối số (argument).

Bây giờ chúng ta gọi hàm để tính vận tốc:

// Thời gian đi hết là: 60s

  • // Tính vận tốc
  • tinhVanToc(1000, 60);  

Ví dụ:

echo "Vận tốc bằng: $van_toc m/s";

Bây giờ chúng ta gọi hàm để tính vận tốc: setThongTin($ten$tuoi = "không rõ") {

// Thời gian đi hết là: 60s "Tên: $ten - Tuổi $tuoi";

}  
 

Bây giờ, chúng ta có thể sử dụng hàm ?>66 để tính bình phương các số mà chúng ta muốn.

tinhBinhPhuong(9); // Kết quả: 81

tinhBinhPhuong(4); // Kết quả: 16("Ngọc Anh"18);
 

Bạn cũng có thể thêm nhiều tham số, phân tách nhau bằng dấu phẩy ?>67

Ví dụ:

echo "Vận tốc bằng: $van_toc m/s";

Bây giờ chúng ta gọi hàm để tính vận tốc:("Vũ Hà");
 

// Thời gian đi hết là: 60s

// Tính vận tốc
 

tinhVanToc(1000, 60);  Lưu ý: Bạn cần đặt những đối số mặc định ở cuối, nếu không hàm sẽ không hoạt động đúng mong đợi. 

Kết quả:

Vận tốc bằng: 16.666666666667 m/s  

function tinhVanToc($quang_duong, $thoi_gian) { tinhVanToc($quang_duong$thoi_gian) {

$van_toc = $quang_duong / $thoi_gian; = $quang_duong / $thoi_gian;

echo "Vận tốc bằng: $van_toc m/s"; "Vận tốc bằng: $van_toc m/s";

}  
 

Bây giờ, chúng ta có thể sử dụng hàm ?>66 để tính bình phương các số mà chúng ta muốn.

Bạn cũng có thể thêm nhiều tham số, phân tách nhau bằng dấu phẩy ?>67

Ví dụ:
 

echo "Vận tốc bằng: $van_toc m/s";

function tinhVanToc(int $quang_duong, int $thoi_gian) { tinhVanToc(int $quang_duongint $thoi_gian) {

Bây giờ chúng ta gọi hàm để tính vận tốc: = $quang_duong / $thoi_gian;

echo "Vận tốc bằng: $van_toc m/s"; "Vận tốc bằng: $van_toc m/s";

}

Bây giờ chúng ta gọi hàm để tính vận tốc:("1000 mét"60);
 

// Thời gian đi hết là: 60s

Ví dụ:
 

echo "Vận tốc bằng: $van_toc m/s";

Bây giờ chúng ta gọi hàm để tính vận tốc:
 

// Thời gian đi hết là: 60s

// Tính vận tốc declare(strict_types=1);
 

tinhVanToc(1000, 60);  

// Tính vận tốc declare(strict_types=1);

tinhVanToc(1000, 60);  

function tinhVanToc(int $quang_duong, int $thoi_gian) { tinhVanToc(int $quang_duongint $thoi_gian) {

$van_toc = $quang_duong / $thoi_gian; = $quang_duong / $thoi_gian;

Kết quả: "Vận tốc bằng: $van_toc m/s";

}

Bây giờ chúng ta gọi hàm để tính vận tốc:("1000 mét"60);
 

// Thời gian đi hết là: 60s

// Tính vận tốc

tinhVanToc(1000, 60);  

Kết quả:

Câu lệnh ?>69 sẽ dừng thực thi hàm và gửi giá trị trở lại lệnh gọi.

function tinhVanToc($quang_duong, $thoi_gian){ tinhVanToc($quang_duong$thoi_gian){

$van_toc = $quang_duong / $thoi_gian; = $quang_duong / $thoi_gian;

return $van_toc; $van_toc;

}

echo tinhVanToc(1000, 60);   tinhVanToc(100060);
 

Kết quả:

> Lưu ý: Nếu bỏ qua ?>69, hàm về sẽ trả về giá trị ?>72. Và một hàm không thể trả về nhiều giá trị, nhưng trả về một mảng sẽ tạo ra kết quả tương tự.Lưu ý: Nếu bỏ qua ?>69, hàm về sẽ trả về giá trị ?>72. Và một hàm không thể trả về nhiều giá trị, nhưng trả về một mảng sẽ tạo ra kết quả tương tự.

Từ PHP 7, chúng ta có thể khai báo kiểu cho câu lệnh ?>69.

Giống như với khai báo kiểu cho các đối số của hàm, bằng cách kích hoạt chế độ strict, nó sẽ tạo ra lỗi nghiêm trọng "Fatal Error" nếu kiểu trả về không khớp.

Ví dụ:

 declare(strict_types=1);

// Hàm tính vận tốc

function tinhVanToc(int $quang_duong, int $thoi_gian) : int{ tinhVanToc(int $quang_duongint $thoi_gian) : int{

$van_toc = $quang_duong / $thoi_gian; = $quang_duong / $thoi_gian;

return $van_toc; $van_toc;

}

echo tinhVanToc(1000, 60);   tinhVanToc(100060);
 

Kết quả:

> Lưu ý: Nếu bỏ qua ?>69, hàm về sẽ trả về giá trị ?>72. Và một hàm không thể trả về nhiều giá trị, nhưng trả về một mảng sẽ tạo ra kết quả tương tự.

 declare(strict_types=1);

// Hàm tính vận tốc

function tinhVanToc(int $quang_duong, int $thoi_gian) : int{ tinhVanToc(int $quang_duongint $thoi_gian) : int{

$van_toc = $quang_duong / $thoi_gian; = $quang_duong / $thoi_gian;

return (int)$van_toc; (int)$van_toc;

}

echo tinhVanToc(1000, 60);   tinhVanToc(100060);
 

Kết quả:

> Lưu ý: Nếu bỏ qua ?>69, hàm về sẽ trả về giá trị ?>72. Và một hàm không thể trả về nhiều giá trị, nhưng trả về một mảng sẽ tạo ra kết quả tương tự.

Từ PHP 7, chúng ta có thể khai báo kiểu cho câu lệnh ?>69.

Giống như với khai báo kiểu cho các đối số của hàm, bằng cách kích hoạt chế độ strict, nó sẽ tạo ra lỗi nghiêm trọng "Fatal Error" nếu kiểu trả về không khớp.truyền bằng tham chiếu (pass by reference), các thay đổi đối với đối số cũng thay đổi biến được truyền vào.

Ví dụ:

function congDiem(&$diem) { congDiem(&$diem) {

$value += 3; += 3;

}

$diem = 4; = 4;

congDiem($diem);($diem);

// Biến $diem hiện tại

// Hàm tính vận tốc

Kết quả chương trình trên sẽ ném ra một lỗi "Fatal Error". $diem;
 

Kết quả:

> Lưu ý: Nếu bỏ qua ?>69, hàm về sẽ trả về giá trị ?>72. Và một hàm không thể trả về nhiều giá trị, nhưng trả về một mảng sẽ tạo ra kết quả tương tự.

Từ PHP 7, chúng ta có thể khai báo kiểu cho câu lệnh ?>69.Superglobal) là một biến được xác định trước luôn có thể truy cập được, bất kể phạm vi.

Giống như với khai báo kiểu cho các đối số của hàm, bằng cách kích hoạt chế độ strict, nó sẽ tạo ra lỗi nghiêm trọng "Fatal Error" nếu kiểu trả về không khớp.superglobals trong PHP thông qua bất kỳ hàm, lớp hoặc tệp nào.

Ví dụ:$_SERVER, $GLOBALS, $_REQUEST, $_POST, $_GET, $_FILES, $_ENV, $_COOKIE, $_SESSION.

VII.1. $_SERVER trong PHP

// Hàm tính vận tốc là một mảng bao gồm thông tin như tiêu đề, đường dẫn và vị trí tập lệnh. Các item trong mảng này được tạo bởi máy chủ web.

Kết quả chương trình trên sẽ ném ra một lỗi "Fatal Error".

Do đó bạn cần điều chỉnh kiểu dữ liệu trả về cho đúng với khai báo. Ở đây, chúng ta có thể chuyển đổi kết quả thành kiểu ;7, như sau: $_SERVER["SCRIPT_NAME"];

VI.6. Truyền tham chiếu
 

Trong PHP, các đối số thường được truyền theo giá trị, có nghĩa là một bản sao của giá trị được sử dụng trong hàm và biến được truyền vào hàm không thể thay đổi.

echo $_SERVER['HTTP_HOST']; $_SERVER['HTTP_HOST'];

Tuy nhiên, chúng ta cũng có thể tạo ra các hàm linh hoạt hơn nữa bằng cách truyền bằng tham chiếu (pass by reference), các thay đổi đối với đối số cũng thay đổi biến được truyền vào.
 

Để biến đối số hàm thành tham chiếu, chúng ta sử dụng toán tử ?>75:

// Biến $diem hiện tại

// có giá trị là:

$host = $_SERVER['HTTP_HOST']; = $_SERVER['HTTP_HOST'];

$image_path = $host.'/images/'; = $host.'/images/';

echo $diem;  >
 

VII. Siêu biến trong PHP

Siêu biến (Superglobal) là một biến được xác định trước luôn có thể truy cập được, bất kể phạm vi. 'config.php';

Bạn có thể truy cập các superglobals trong PHP thông qua bất kỳ hàm, lớp hoặc tệp nào. '

Hướng dẫn php in one day - php trong một ngày
';
 

echo $diem;  >
 

VII. Siêu biến trong PHP

Siêu biến (Superglobal) là một biến được xác định trước luôn có thể truy cập được, bất kể phạm vi.tại đây)

Bạn có thể truy cập các superglobals trong PHP thông qua bất kỳ hàm, lớp hoặc tệp nào.

Các biến superglobal của PHP là $_SERVER, $GLOBALS, $_REQUEST, $_POST, $_GET, $_FILES, $_ENV, $_COOKIE, $_SESSION.$_GET và $_POST hỗ trợ trong việc thu thập dữ liệu. Tuy nhiên, để hiểu về chúng bạn cần phải hiểu về Form trước đã.

VII.1. $_SERVER trong PHPinput và một nút submit.

?>76 là một mảng bao gồm thông tin như tiêu đề, đường dẫn và vị trí tập lệnh. Các item trong mảng này được tạo bởi máy chủ web.

<form action="welcome.php" method="post">

// Hàm tính vận tốcp>Tên: <input type="text" name="name" />p>

Kết quả chương trình trên sẽ ném ra một lỗi "Fatal Error".p>Tuổi: <input type="text" name="age" />p>

<p><input type="submit" name="submit" value="Gửi" />p>

// Hàm tính vận tốcform>
 

Kết quả chương trình trên sẽ ném ra một lỗi "Fatal Error".

Hướng dẫn php in one day - php trong một ngày

Do đó bạn cần điều chỉnh kiểu dữ liệu trả về cho đúng với khai báo. Ở đây, chúng ta có thể chuyển đổi kết quả thành kiểu ;7, như sau:Gửi, trong trường hợp này nó gửi đến file ?>85

VI.6. Truyền tham chiếu

Trong PHP, các đối số thường được truyền theo giá trị, có nghĩa là một bản sao của giá trị được sử dụng trong hàm và biến được truyền vào hàm không thể thay đổi.

Tuy nhiên, chúng ta cũng có thể tạo ra các hàm linh hoạt hơn nữa bằng cách truyền bằng tham chiếu (pass by reference), các thay đổi đối với đối số cũng thay đổi biến được truyền vào.

<body>

// Hàm tính vận tốc echo $_POST["name"]; ?> <br/>

Kết quả chương trình trên sẽ ném ra một lỗi "Fatal Error". echo $_POST["age"]; ?>

body>

// Hàm tính vận tốchtml>
 

Kết quả chương trình trên sẽ ném ra một lỗi "Fatal Error".Gửi, kết quả chương trình điều hướng chúng ta đến trang ?>85

Hướng dẫn php in one day - php trong một ngày

Mảng siêu cấp $_POST chứa các cặp ?>94 / index.php7. Trong đó, ?>94 là index.php6 của trường tương ứng và index.php7 là giá trị mà người dùng nhập vào.$_POST chứa các cặp ?>94 / index.php7. Trong đó, ?>94 là index.php6 của trường tương ứng và index.php7 là giá trị mà người dùng nhập vào.

Vì thế, lưu ý khi viết HTML đối với các trường cần thiết bạn cần phải nhập thuộc tính index.php6 để có thể sử dụng PHP để gọi đến.

VII.3. POST trong PHP

Chúng ta có hai phương thức để gửi biểu mẫu là GET và POST.GETPOST.

Thông tin được gửi từ một biểu mẫu qua phương thức POST được ẩn đi, vì tất cả các name / value đều được nhúng trong nội dung của HTTP request.

Ngoài ra, không có giới hạn về số lượng thông tin được gửi.

Hơn nữa, POST hỗ trợ chức năng nâng cao như hỗ trợ đầu vào nhị phân nhiều phần trong khi tải tệp lên máy chủ.

Tuy nhiên, không thể đánh dấu trang vì các giá trị đã gửi không hiển thị.

Đối với các dữ liệu nhạy cảm, tốt nhất là sử dụng phương thức POST.

VII.4. Phương thức GET

Không giống như POST, thông tin được gửi qua biểu mẫu sử dụng phương thức GET được hiển thị cho mọi người (tất cả các tên biến và giá trị được hiển thị trong URL).GET được hiển thị cho mọi người (tất cả các tên biến và giá trị được hiển thị trong URL).

GET cũng đặt giới hạn về số lượng thông tin có thể được gửi là khoảng 2000 ký tự.

Tuy nhiên, vì các biến được hiển thị trong URL, nên có thể đánh dấu trang, điều này có thể hữu ích trong một số trường hợp.

Bây giờ, quay lại ví dụ trước, thay vì chỉ định echo00 thì chúng ta đổi thành echo01 xem sao nhé, file index.php:

<form action="welcome.php" method="get">

Tên: p>Tên: <input type="text" name="name" />p>

Tuổi: p>Tuổi: <input type="text" name="age" />p>

<p><input type="submit" name="submit" value="Gửi" />p>

Tên: form>
 

Tuổi: $_GET để lấy dữ liệu:

<body>

Tên:  echo $_GET["name"]; ?> <br/>

Tuổi:  echo $_GET["age"]; ?>

body>

Tên: html>
 

Tuổi: 

Hướng dẫn php in one day - php trong một ngày

 

Trong file ?>85 thì ta truy cập mảng siêu cấp $_GET để lấy dữ liệu:

Chào bạn  Lưu ý: Đối với các trường nhận dữ liệu đầu vào từ người dùng bạn luôn phải lọc / làm sạch dữ liệu trước khi gửi về server để xử lý, tránh tin tặc lợi dụng.

Tuổi: 

Kết quả khi submit dữ liệu ta được: (phiên làm việc), sử dụng session giúp bạn có thể lưu trữ thông tin trong các biến, được sử dụng trên nhiều trang.

Hãy để ý url, dữ liệu bạn gửi theo phương thức GET giờ đây được hiển thị rõ ràng.

Vì thế, đối với các dữ liệu nhạy cảm, mật khẩu thì đừng bao giờ sử dụng GET.

> Lưu ý: Đối với các trường nhận dữ liệu đầu vào từ người dùng bạn luôn phải lọc / làm sạch dữ liệu trước khi gửi về server để xử lý, tránh tin tặc lợi dụng.

VII.5. SESSION trong PHP

Session (phiên làm việc), sử dụng session giúp bạn có thể lưu trữ thông tin trong các biến, được sử dụng trên nhiều trang.session được bắt đầu bằng cách sử dụng hàm echo04.

Tuy nhiên, t

heo mặc định, các biến session tồn tại cho đến khi người dùng đóng trình duyệt.

session_start();();

Và thông tin session không được lưu trữ trên máy tính của người dùng, giống như với cookie.

Bắt đầu một session["name"] = "Ngọc Anh";

$_SESSION["age"] = 18;["age"] = 18;

Một session được bắt đầu bằng cách sử dụng hàm echo04.>
 

Sử dụng mảng siêu cấp echo05 của PHP để đặt các biến session.Lưu ý: Hàm echo04 phải là hàm đầu tiên trong tài liệu của bạn. Trước bất kỳ thẻ HTML nào.

// Bắt đầu session

// Lưu dữ liệu session

// Start the session

session_start();();

$_SESSION["name"] = "Ngọc Anh";>

DOCTYPE html>

<html>

<body>

Tên:  "Chào bạn " . $_SESSION["name"];

$_SESSION["name"] = "Ngọc Anh";>

body>

Tên: html>
 

Tuổi: 

Hướng dẫn php in one day - php trong một ngày

 

Trong file ?>85 thì ta truy cập mảng siêu cấp $_GET để lấy dữ liệu:

Chào bạn  

  • Tuổi: 
  • Kết quả khi submit dữ liệu ta được:

Hãy để ý url, dữ liệu bạn gửi theo phương thức GET giờ đây được hiển thị rõ ràng.

Vì thế, đối với các dữ liệu nhạy cảm, mật khẩu thì đừng bao giờ sử dụng GET. thường được sử dụng để xác định, cá nhân hóa người dùng. Cookie là một tệp dữ liệu nhỏ mà máy chủ nhúng vào máy tính của người dùng.

> Lưu ý: Đối với các trường nhận dữ liệu đầu vào từ người dùng bạn luôn phải lọc / làm sạch dữ liệu trước khi gửi về server để xử lý, tránh tin tặc lợi dụng.

VII.5. SESSION trong PHP

Session (phiên làm việc), sử dụng session giúp bạn có thể lưu trữ thông tin trong các biến, được sử dụng trên nhiều trang.(name, value, expire, path, domain, secure, httponly);
 

Tuy nhiên, t

  • heo mặc định, các biến session tồn tại cho đến khi người dùng đóng trình duyệt.
  • Và thông tin session không được lưu trữ trên máy tính của người dùng, giống như với cookie.
  • Bắt đầu một session
  • Một session được bắt đầu bằng cách sử dụng hàm echo04.php và tất cả các thư mục con của php. Giá trị mặc định là thư mục hiện tại mà cookie đang được thiết lập.
  • Sử dụng mảng siêu cấp echo05 của PHP để đặt các biến session.
  • // Bắt đầu sessionHTTPS hay không. echo25 chỉ định rằng cookie sẽ chỉ được đặt nếu tồn tại một kết nối an toàn. Mặc định là echo26.
  • echo27: Nếu được đặt thành echo25, cookie sẽ chỉ có thể truy cập được thông qua giao thức HTTP (cookie sẽ không thể truy cập được đối với các ngôn ngữ kịch bản). Sử dụng echo27 giúp giảm hành vi trộm cắp danh tính bằng cách sử dụng các cuộc tấn công XSS. Mặc định là echo26.HTTP (cookie sẽ không thể truy cập được đối với các ngôn ngữ kịch bản). Sử dụng echo27 giúp giảm hành vi trộm cắp danh tính bằng cách sử dụng các cuộc tấn công XSS. Mặc định là echo26.

> Lưu ý: Tham số name là bắt buộc. Các tham số khác là tùy chọnLưu ý: Tham số name là bắt buộc. Các tham số khác là tùy chọn

Ví dụ thiết lập cookie có tên là echo31, với giá trị là echo32. Cookie hết hạn sau 30 ngày và có sẵn tên toàn bộ website:

$value = "Ngọc Anh"; = "Ngọc Anh";

// Thiết lập cookie

setcookie("user", $value, time() + (86400 * 30), '/');("user"$valuetime() + (86400 * 30), '/');

?>  >
 

Bây giờ, chúng ta có thể sử dụng dữ liệu từ cookie bằng cách truy cập mảng echo33:

$value = "Ngọc Anh"; = "Ngọc Anh";

// Thiết lập cookie

setcookie("user", $value, time() + (86400 * 30), '/');("user"$valuetime() + (86400 * 30), '/');

?>  >
 

Bây giờ, chúng ta có thể sử dụng dữ liệu từ cookie bằng cách truy cập mảng echo33:DOCTYPE html>

Bây giờ, chúng ta có thể sử dụng dữ liệu từ cookie bằng cách truy cập mảng echo33:html>

Bây giờ, chúng ta có thể sử dụng dữ liệu từ cookie bằng cách truy cập mảng echo33:body>

Bây giờ, chúng ta có thể sử dụng dữ liệu từ cookie bằng cách truy cập mảng echo33:

if(isset($_COOKIE['user'])) {(isset($_COOKIE['user'])) {

// Truy cập value của cookie

// Truy cập value của cookie "Tên người dùng: "$_COOKIE['user'];

echo "Tên người dùng: ". $_COOKIE['user'];

}>

Bây giờ, chúng ta có thể sử dụng dữ liệu từ cookie bằng cách truy cập mảng echo33:body>

html>
 

// Truy cập value của cookie Lưu ý: Hàm setcookie() phải được thiết lập trước bất kỳ thẻ HTML nào.

echo "Tên người dùng: ". $_COOKIE['user'];ĐỪNG BAO GIỜ lưu trữ thông tin nhạy cảm trong cookie.

}

?>

 

Để tránh lỗi, chúng ta sử dụng hàm isset() để kiểm tra xem cookie có tồn tại hay không, sau đó mới lấy dữ liệu.> Lưu ý: Hàm setcookie() phải được thiết lập trước bất kỳ thẻ HTML nào.echo34 cho phép tạo hoặc mở một tệp. Nếu bạn sử dụng echo34 với một tệp không tồn tại, tệp sẽ được tạo, cho rằng tệp đã được mở để ghi (echo36) hoặc thêm (echo37).

Giá trị của cookie được mã hóa tự động khi cookie được gửi đi và tự động được giải mã khi nhận được. Tuy nhiên, ĐỪNG BAO GIỜ lưu trữ thông tin nhạy cảm trong cookie.

VIII. LÀM VIỆC VỚI FILE TRONG PHP = fopen("file.txt""w");
 

Làm việc với file là một trong những công việc phổ biến nhất trong lập trình, vì vậy PHP cung cấp cho chúng ta các phương thức hỗ trợ Create, Read, Upload và Edit file.

  • VIII.1. Ghi vào một file
  • Hàm echo34 cho phép tạo hoặc mở một tệp. Nếu bạn sử dụng echo34 với một tệp không tồn tại, tệp sẽ được tạo, cho rằng tệp đã được mở để ghi (echo36) hoặc thêm (echo37).
  • Ví dụ: Mở tệp echo38 để ghi. Xóa nội dung của tệp cũ để ghi hoặc tạo tệp mới nếu chưa tồn tại.
  • $myfile = fopen("file.txt", "w");  
  • Sử dụng một trong các chế độ sau để mở tệp:
  • r: Mở tệp để chỉ đọc.
  • echo36: Chỉ mở tệp để ghi. Xóa nội dung của tệp hoặc tạo tệp mới nếu nó không tồn tại.
  • echo37: Mở tệp chỉ để ghi. Tạo tệp mới nếu tệp không tồn tại

echo41: Tạo tệp mới chỉ để ghi.

echo42: Mở tệp để đọc / ghi.

echo43: Mở tệp để đọc / ghi. Xóa nội dung của tệp hoặc tạo tệp mới nếu nó không tồn tại.

$myfile = fopen("sinh-vien.txt", "w"); = fopen("sinh-vien.txt""w");

echo44: Mở tệp để đọc / ghi. Tạo tệp mới nếu tệp không tồn tại

echo45: Tạo tệp mới để đọc / ghi. = "Ngọc Anh\n";

fwrite($myfile, $txt);($myfile$txt);

Khi bạn đã có mở được file và cho phép ghi, bạn có thể sử dụng hàm echo46 để ghi nội dung vào file đó. = "Vũ Hà\n";

fwrite($myfile, $txt);($myfile$txt);

Ví dụ dưới đây ghi một vài tên vào một tệp mới có tên echo47.

// Mở file và cho phép ghi($myfile);
 

// Viết vào file vừa mở

$txt = "Ngọc Anh\n";

Hướng dẫn php in one day - php trong một ngày

$txt = "Vũ Hà\n";Lưu ý: Để giảm thiểu các vấn đề về bảo mật, luôn luôn đóng file bằng echo49 sau khi thao tác xong. echo49 trả về echo25 nếu thành công hoặc echo26 nếu thất bại

// Đóng file

fclose($myfile);  append.

Ký hiệu echo48 được sử dụng khi viết các dòng mới.

echo43: Mở tệp để đọc / ghi. Xóa nội dung của tệp hoặc tạo tệp mới nếu nó không tồn tại.

$myfile = fopen("sinh-vien.txt", "a"); = fopen("sinh-vien.txt""a");

echo44: Mở tệp để đọc / ghi. Tạo tệp mới nếu tệp không tồn tại

echo45: Tạo tệp mới để đọc / ghi. = "Thu Hương\n";

fwrite($myfile, $txt);($myfile$txt);

Ví dụ dưới đây ghi một vài tên vào một tệp mới có tên echo47.

// Mở file và cho phép ghi($myfile);
 

// Viết vào file vừa mở

Hướng dẫn php in one day - php trong một ngày

$txt = "Ngọc Anh\n";

$txt = "Vũ Hà\n";

// Đóng file

fclose($myfile);  

if(isset($_POST['email'])) {(isset($_POST['email'])) {

Ký hiệu echo48 được sử dụng khi viết các dòng mới.

$email = $_POST['email']; = $_POST['email'];

Kết quả, vào thư mục dự án ta thấy có một file mới với nội dung như thế này:

$handle = fopen('contact.txt', 'a'); = fopen('contact.txt''a');

> Lưu ý: Để giảm thiểu các vấn đề về bảo mật, luôn luôn đóng file bằng echo49 sau khi thao tác xong. echo49 trả về echo25 nếu thành công hoặc echo26 nếu thất bại

VIII.2. Thêm vào một file($handle$email."\n");

Ví dụ dưới đây ghi một vài tên vào một tệp mới có tên echo47.

// Mở file và cho phép ghi($handle);

}

?>  >
 

<form method="post">

Email: <input type="text" name="email" />

<input type="submit" name="submit" value="Đăng ký liên hệ" />

 form>
 

Chạy file echo56 trên trình duyệt, điền email và nhấn Đăng ký liên hệ:

Hướng dẫn php in one day - php trong một ngày

Kết quả, mở thư mục dự án ta thấy có một file mới tên là echo55 được tạo ra, với nội dung như sau:

Hướng dẫn php in one day - php trong một ngày

VIII.3. Đọc file trong PHP

Hàm file() đọc toàn bộ tệp thành một mảng. Mỗi phần tử trong mảng tương ứng với một dòng trong tệp.file() đọc toàn bộ tệp thành một mảng. Mỗi phần tử trong mảng tương ứng với một dòng trong tệp.

Ví dụ: Đọc file echo53 và in ra màn hình

File echo60

// Đọc file và gán mảng trả về

// cho biến $read

$read = file('sinh-vien.txt'); = file('sinh-vien.txt');

// Lặp qua từng phần tử của mảng và nối

// từng phần tử lại với nhau

foreach ($read as $line) { ($read as $line) {

echo $line . ", ";  $line . ", ";

}  
 

Kết quả ta được:

Hướng dẫn php in one day - php trong một ngày

Trong ví dụ này chúng ta thấy ở cuối còn có 1 dấu phẩy bị thừa. Để kết quả đẹp hơn, chúng ta sẽ chỉ in dấu phẩy ở các hàng trước, trừ hàng cuối cùng:

File echo60

// Đọc file và gán mảng trả về

// cho biến $read

$read = file('sinh-vien.txt'); = file('sinh-vien.txt');

// Lặp qua từng phần tử của mảng và nối

$count = count($read); = count($read);

$i = 1; = 1;

// Lặp qua từng phần tử của mảng và nối

// từng phần tử lại với nhau

foreach ($read as $line) { ($read as $line) {

echo $line; $line;

echo $line . ", ";

}  

if ($i  ($i < $count) {

echo ", "; ", ";

}

$i++;++;

}  
 

Kết quả ta được:

Hướng dẫn php in one day - php trong một ngày

Trong ví dụ này chúng ta thấy ở cuối còn có 1 dấu phẩy bị thừa. Để kết quả đẹp hơn, chúng ta sẽ chỉ in dấu phẩy ở các hàng trước, trừ hàng cuối cùng:

// Tính số phần tử của mảng

// Thêm phân tách mỗi phần tử (OOP - Object Oriented Programming) là một phương pháp lập trình nhằm làm cho lập trình giống với thế giới thực hơn, mô hình hóa đối tượng thực tế vào trong máy tính.

// trừ phần tử cuối

Như vậy, trong phần này bạn đã biết cơ bản về cách thao tác đọc file, ghi file với PHP. Tuy nhiên, còn có rất nhiều vấn đề trong thao tác với file mà mình không thể đi sâu hết, bạn hãy tự tìm hiểu thêm nhé.

IX. LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG (OOP) VỚI PHP

Lập trình hướng đối tượng (OOP - Object Oriented Programming) là một phương pháp lập trình nhằm làm cho lập trình giống với thế giới thực hơn, mô hình hóa đối tượng thực tế vào trong máy tính.

Các đối tượng (Object) được tạo bằng cách sử dụng các lớp (Class), là trọng tâm trong phương pháp OOP.

Hướng dẫn php in one day - php trong một ngày

Lớp mô tả đối tượng sẽ là gì, nhưng tách biệt với chính đối tượng.

IX.1. Class trong PHPproperties) để xác định các thuộc tính của một đối tượng và các hàm, trong lớp thì gọi là phương thức (methods), để xác định hành vi của một đối tượng.

Một lớp (Class) trong PHP được coi là bản thiết kế (blueprint), mô tả hoặc định nghĩa của một đối tượng.

Hãy xem các ví dụ minh họa sau:

class SinhVien { SinhVien {

Như bạn thấy, lớp là một bản thiết kế, từ lớp đó, ta có thể tạo ra các đối tượng khác nhau với các thuộc tính, phương thức khác nhau. $ten// Thuộc tính

Trong PHP, một lớp có thể bao gồm các biến thành viên được gọi là thuộc tính (properties) để xác định các thuộc tính của một đối tượng và các hàm, trong lớp thì gọi là phương thức (methods), để xác định hành vi của một đối tượng. $tuoi// Thuộc tính

Định nghĩa lớp bắt đầu bằng từ khóa echo62, theo sau là tên lớp. Dấu ngoặc nhọn ?>04 bao quanh các thuộc tính và phương thức thuộc lớp. function hocBai () { // Phương thức

// Ví dụ tạo class trong PHP "Đang học bài...";

}

}  
 

  • Kết quả ta được:
  • Trong ví dụ này chúng ta thấy ở cuối còn có 1 dấu phẩy bị thừa. Để kết quả đẹp hơn, chúng ta sẽ chỉ in dấu phẩy ở các hàng trước, trừ hàng cuối cùng:
  • // Tính số phần tử của mảng: Thông thường tên lớp được viết theo kiểu PascalCase (Các từ liền nhau, chữ cái đầu viết HOA)

// Thêm phân tách mỗi phần tử

// trừ phần tử cuối

Như vậy, trong phần này bạn đã biết cơ bản về cách thao tác đọc file, ghi file với PHP. Tuy nhiên, còn có rất nhiều vấn đề trong thao tác với file mà mình không thể đi sâu hết, bạn hãy tự tìm hiểu thêm nhé.Note: Có những từ khóa chỉ định phạm vi truy cập (hiển thị) khác và chúng ta sẽ tìm hiểu về chúng trong phần sau.

IX. LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG (OOP) VỚI PHP

Lập trình hướng đối tượng (OOP - Object Oriented Programming) là một phương pháp lập trình nhằm làm cho lập trình giống với thế giới thực hơn, mô hình hóa đối tượng thực tế vào trong máy tính.

Các đối tượng (Object) được tạo bằng cách sử dụng các lớp (Class), là trọng tâm trong phương pháp OOP.

Lớp mô tả đối tượng sẽ là gì, nhưng tách biệt với chính đối tượng.

IX.1. Class trong PHP

Một lớp (Class) trong PHP được coi là bản thiết kế (blueprint), mô tả hoặc định nghĩa của một đối tượng.

Hãy xem các ví dụ minh họa sau:

Như bạn thấy, lớp là một bản thiết kế, từ lớp đó, ta có thể tạo ra các đối tượng khác nhau với các thuộc tính, phương thức khác nhau.

Hãy xem các ví dụ minh họa sau:

class SinhVien { SinhVien {

Như bạn thấy, lớp là một bản thiết kế, từ lớp đó, ta có thể tạo ra các đối tượng khác nhau với các thuộc tính, phương thức khác nhau. $ten// Thuộc tính

public $tuoi; // Thuộc tính $tuoi// Thuộc tính

public function hocBai () { // Phương thức function hocBai () { // Phương thức

echo $this -> ten . " đang học bài..."; $this -> ten . " đang học bài...";

}

}

// Tạo đối tượng mới

$sv1 = new SinhVien(); = new SinhVien();

// Gán giá trị cho thuộc tính

// của đối tượng sv1

$sv1 -> ten = "Ngọc Anh"; -> ten = "Ngọc Anh";

// Truy cập thuộc tính

echo $sv1 -> ten; $sv1 -> ten;

echo ""; "
"
;

// Gọi phương thức

$sv1 -> hocBai();   -> hocBai();
 

Kết quả:

Ngọc Anh Ngọc Anh đang học bài  
Ngọc Anh đang học bài
 

Bạn thấy từ echo73 là lạ đúng không?

Ở đây echo73 là một biến giả là một tham chiếu đến đối tượng đang gọi.

Khi làm việc bên trong một phương thức, hãy sử dụng echo73 giống như cách bạn sử dụng tên đối tượng bên ngoài lớp.

Ví dụ:

// Ví dụ tạo class trong PHP

class SinhVien { SinhVien {

public $ten; // Thuộc tính $ten// Thuộc tính

public $tuoi; // Thuộc tính $tuoi// Thuộc tính

public function hocBai () { // Phương thức function hocBai () { // Phương thức

echo $this -> ten . " đang học bài..."; $this -> ten . " đang học bài...";

}

}

// Tạo đối tượng mới

// Gán giá trị cho thuộc tính = new SinhVien();

$sv2 = new SinhVien(); = new SinhVien();

// của đối tượng sv1

$sv1 -> ten = "Ngọc Anh"; -> ten = "Ngọc Anh";

// Truy cập thuộc tính -> ten = "Vũ Hà";

// Gọi phương thức

$sv1 -> hocBai(); -> hocBai();

$sv1 -> hocBai();   "
"
;

Kết quả:

Ngọc Anh Ngọc Anh đang học bài   -> hocBai();
 

Kết quả:

Ngọc Anh Ngọc Anh đang học bài  

Bạn thấy từ echo73 là lạ đúng không?

Ở đây echo73 là một biến giả là một tham chiếu đến đối tượng đang gọi.

Khi làm việc bên trong một phương thức, hãy sử dụng echo73 giống như cách bạn sử dụng tên đối tượng bên ngoài lớp.

Ví dụ:

// Ví dụ tạo class trong PHPLưu ý: echo79 bắt đầu bằng hai dấu gạch dưới

public $ten; // Thuộc tính

class SinhVien { SinhVien {

public function hocBai () { // Phương thức

// Tạo 2 đối tượng mới function __construct () {

$sv1 = new SinhVien();  "Đã tạo đối tượng mới";

}

}

// Tạo đối tượng mới = new SinhVien();
 

// Gán giá trị cho thuộc tính

// của đối tượng sv1

Ví dụ:

// Ví dụ tạo class trong PHP $ten;

public $tuoi; $tuoi;

public $ten; // Thuộc tính

public function __construct ($ten, $tuoi) { function __construct ($ten$tuoi) {

$this -> ten = $ten; -> ten = $ten;

$this -> tuoi = $tuoi; -> tuoi = $tuoi;

}

}

public function hocBai () { // Phương thức

// Tạo 2 đối tượng mới = new SinhVien("Ngọc Anh"18);

$sv1 = new SinhVien();  = new SinhVien("Vũ Hà"19);

// Gán tên cho các sinh viên

$sv2 -> ten = "Vũ Hà"; $sv1 -> ten . " " . $sv1 -> tuoi . " tuổi";

echo ""; "";

// Gọi phương thức của $sv1 $sv2 -> ten . " " . $sv2 -> tuoi . " tuổi";
 

Kết quả:

Ngọc Anh Ngọc Anh đang học bài  

Bạn thấy từ echo73 là lạ đúng không? = new SinhVien("Ngọc Anh"18);
 

Ở đây echo73 là một biến giả là một tham chiếu đến đối tượng đang gọi.Lưu ý: Bạn không thể tạo nhiều phương thức echo84 với các số lượng tham số khác nhau giống như constructor trong Java.

Khi làm việc bên trong một phương thức, hãy sử dụng echo73 giống như cách bạn sử dụng tên đối tượng bên ngoài lớp.destructor là phương thức tự động được gọi khi đối tượng bị hủy.

class SinhVien { SinhVien {

Ví dụ:

public function __destruct() { function __destruct() {

// Ví dụ tạo class trong PHP "Đối tượng đã bị hủy";

}

}

public function hocBai () { // Phương thức

// Tạo đối tượng mới = new SinhVien();
 

Kết quả:

Ngọc Anh Ngọc Anh đang học bài  

Bạn thấy từ echo73 là lạ đúng không?

Ở đây echo73 là một biến giả là một tham chiếu đến đối tượng đang gọi.

Khi làm việc bên trong một phương thức, hãy sử dụng echo73 giống như cách bạn sử dụng tên đối tượng bên ngoài lớp.($sv1);
 

Ví dụ: rất hữu ích để thực hiện các tác vụ nhất định khi đối tượng kết thúc vòng đời của nó.

Ví dụ: Giải phóng tài nguyên, log file, đóng kết nối cơ sở dữ liệu, v.v.

Theo mặc định, PHP sẽ giải phóng tất cả các tài nguyên khi một tập lệnh kết thúc quá trình thực thi của nó.

IX.3. Kế thừa lớp trong PHP

Các lớp có thể kế thừa các phương thức và thuộc tính của một lớp khác.

Lớp kế thừa các phương thức và thuộc tính được gọi là lớp con (sub-class). Lớp cho kế thừa và lớp cha (parent-class).lớp con (sub-class). Lớp cho kế thừa và lớp cha (parent-class).

Để đạt được kế thừa, chúng ta sử dụng từ khóa echo87

Ví dụ: Chúng ta tạo lớp cha la echo88 kế thừa từ lớp echo89 và thử gọi phương thức của lớp echo89 (lớp cha)

File echo91

class DongVat { DongVat {

public $ten; $ten;

public function an() {  function an() {

echo "Đang ăn..."; "Đang ăn...";

}

}

// Class con

class Cho extends DongVat { Cho extends DongVat {

//

}

//

$milu = new Cho(); = new Cho();

// Khởi tạo đối tượng từ class con

// Gọi phương thức an() -> an();
 

$milu -> an();  

Kết quả:

Như vậy, lớp echo88 (lớp con) đã kế thừa thành công từ lớp echo89 (lớp cha).

Phương thức khởi tạo cha là không được gọi ngầm nếu lớp con định nghĩa một phương thức khởi tạo riêng.

Tuy nhiên, nếu con không định nghĩa một phương thức khởi tạo thì nó sẽ được kế thừa từ lớp cha nếu nó không được khai báo là echo94Lưu ý: Để tăng thêm kiểm soát đối tượng, bạn có thể chỉ định các từ khóa chỉ định mức độ truy cập.

> Lưu ý: Để tăng thêm kiểm soát đối tượng, bạn có thể chỉ định các từ khóa chỉ định mức độ truy cập.

Mức độ truy cập cũng như khả năng hiển thị (visibility), các phương thức, thuộc tính hiển thị đến đầu thì được truy cập đến đó.

Cho đến lúc này, chúng ta đã sử dụng từ khóa echo64 để chỉ định rằng một thuộc tính / phương thức có thể truy cập từ bất kỳ đâu.

  • Ngoài ra, PHP còn hỗ trợ hai từ khóa khác để khai báo khả năng hiển thị:
  • echo96: Chỉ định các thành viên (của lớp cha) có thể được truy cập ở một lớp con thông qua kế thừa

echo94: Chị định rằng các thành viên chỉ có thể truy cập ở lớp mà nó được khai báo

Thuộc tính lớp phải luôn phải được chỉ định mức độ hiển thị (truy cập).

Nhưng các phương thức lại không bắt buộc.

Tuy nhiên, phương thức không được chỉ định echo64 / echo96 hay echo94 thì mặc định sẽ là echo64.Interface.

Trong kế thừa chúng ta có một khái niệm rất quan trọng, đó là Interface.Interface chỉ định danh sách các phương thức mà một lớp phải triển khai.

Một Interface chỉ định danh sách các phương thức mà một lớp phải triển khai.

Tuy nhiên, bản thân interface không triển khai cụ thể phương thức nào (chỉ có tên và mức độ truy cập phải là public).

  • Đây là một khía cạnh quan trọng của Interface vì nó cho phép một phương thức được xử lý khác nhau trong mỗi lớp sử dụng giao diện.
  • Từ khóa Hello World!02 sử dụng để định nghĩa một Interface.

Từ khóa Hello World!03 được sử dụng trong một lớp để triển khai một Interface.

Ví dụ: Interface Hello World!04 định nghĩa phương thức Hello World!05 nhưng không có triển khai cụ thể.

interface IDongVat { IDongVat {

public function an(); function an();

File Hello World!06
 

}  

Các phương thức của Interface chỉ được triển khai cụ thể khi có class triển khai Interface đó.

Lưu ý là phương thức Hello World!05 của interface không có dấu ngoặc nhọn ?>04

File Hello World!06

interface IDongVat { IDongVat {

public function an(); function an();

}

// Cho implements IDongVat {

// Khởi tạo đối tượng từ class con

public function an() { function an() {

// Gọi phương thức an() "Đang gặm xương 
"
;

}

}

class Meo implements IDongVat { Meo implements IDongVat {

// Khởi tạo đối tượng từ class con

public function an() { function an() {

// Gọi phương thức an() "Đang ăn cá 
"
;

}

}

//

$milu = new Cho(); = new Cho();

// Khởi tạo đối tượng từ class con

$milu -> an(); -> an();

// Gọi phương thức an()

$mimi = new Meo(); = new Meo();

// Khởi tạo đối tượng từ class con

// Gọi phương thức an() -> an();
 

$milu -> an();  

Kết quả:Lưu ý: Class triển khai một interface bắt buộc phải triển khai cụ thể cho các phương thức của interface hoặc biến nó thành phương thức trừu tượng

Như vậy, lớp echo88 (lớp con) đã kế thừa thành công từ lớp echo89 (lớp cha).

Phương thức khởi tạo cha là không được gọi ngầm nếu lớp con định nghĩa một phương thức khởi tạo riêng.

class MeoNha implements IDongVat, IMeoRung, IHo, IBao { MeoNha implements IDongVatIMeoRungIHoIBao {

Tuy nhiên, nếu con không định nghĩa một phương thức khởi tạo thì nó sẽ được kế thừa từ lớp cha nếu nó không được khai báo là echo94

> Lưu ý: Để tăng thêm kiểm soát đối tượng, bạn có thể chỉ định các từ khóa chỉ định mức độ truy cập.

// ở đây

}  
 

Ngoài việc kế thừa từ lớp, Interface như thông thường, chúng ta còn có thể kế thừa từ lớp trừu tượng (hay còn gọi là abstract class).lớp trừu tượng (hay còn gọi là abstract class).

Trong đó:

  • Các lớp trừu tượng có thể được kế thừa nhưng chúng không thể được khởi tạo.
  • Chúng mang lại lợi thế là có thể chứa cả hai phương thức đã được triển khai cụ thể và phương thức trừu tượng chưa được triển khai.
  • Một lớp kế thừa từ một lớp trừu tượng phải triển khai tất cả các phương thức trừu tượng.
  • Và, từ khóa Hello World!13 được sử dụng để tạo một lớp trừu tượng hoặc một phương thức trừu tượng.

File Hello World!14

abstract class Cho { class Cho {

private $mauLong; $mauLong;

// Phương thức trừu tượng

abstract public function an(); public function an();

// Phương thức thiết lập màu lông cho chó

public function setMauLong($mauSac) { function setMauLong($mauSac) {

$this -> mauLong = $mauSac; -> mauLong = $mauSac;

}

// Phương thức lấy màu lông

public function getMauLong() {  function getMauLong() {

return $this -> mauLong; $this -> mauLong;

}

// Phương thức lấy màu lông

public function getMauLong() {

class ChoCo extends Cho { ChoCo extends Cho {

public function an() { function an() {

} "Ăn cơm chan canh";

}

// Phương thức lấy màu lông

public function getMauLong() {

$cauVang = new ChoCo(); = new ChoCo();

}

// Kế thừa lớp trừu tượng -> setMauLong("Vàng");

echo "Ăn cơm chan canh";

echo $cauVang -> getMauLong(); $cauVang -> getMauLong();

echo ""; "
"
;

// Khởi tạo đối tượng mới từ class ChoCo

// Thiết lập màu lông -> an();
 

$cauVang -> setMauLong("Vàng");

// In ra màu lôngLưu ý: Các phương thức trừu tượng chỉ có thể xuất hiện trong lớp trừu tượng.

// Gọi phương thức an()

$cauVang -> an();  

Kết quả khi chạy chương trình ta được:

> Lưu ý: Các phương thức trừu tượng chỉ có thể xuất hiện trong lớp trừu tượng.

IX.4. Từ khóa stactic và final trong PHP

Từ khóa Hello World!15 trong PHP định nghĩa các thuộc tính Hello World!15 và phương thức Hello World!15.

static $tuoi = 18; $tuoi = 18;

// Phương thức lấy màu lông

public function getMauLong() {

}

// Kế thừa lớp trừu tượng SinhVien::$tuoiToiThieu;
 

echo "Ăn cơm chan canh";

// Khởi tạo đối tượng mới từ class ChoCo

// Thiết lập màu lông

Từ khóa Hello World!15 trong PHP định nghĩa các thuộc tính Hello World!15 và phương thức Hello World!15.

static $tuoiToiThieu = 18; $tuoiToiThieu = 18;

Một thuộc tính / phương thức static của một lớp có thể được truy cập mà không cần tạo một đối tượng của lớp đó.

static function thongBao() { function thongBao() {

public function getMauLong() {

}

echo self::$tuoiToiThieu; self::$tuoiToiThieu;

}

// Phương thức lấy màu lông

public function getMauLong() {

}

// Kế thừa lớp trừu tượng::thongBao();
 

echo "Ăn cơm chan canh";

// Khởi tạo đối tượng mới từ class ChoCoLưu ý: Đối tượng của lớp không thể truy cập thuộc tính static. Tuy nhiên, nó có thể truy cập phương thức static.

// Thiết lập màu lôngfinnal trong PHP định nghĩa các phương thức không thể bị ghi đè trong các lớp con. Các lớp được định nghĩa là final cũng không thể được kế thừa.

$cauVang -> setMauLong("Vàng");

// In ra màu lông

// Gọi phương thức an()

final function thongBao () { function thongBao () {

$cauVang -> an();   "Đây là một sinh viên";

}

// Phương thức lấy màu lông

public function getMauLong() {  SinhVienNamNhat extends SinhVien {

}

// Kế thừa lớp trừu tượng

public function thongBao () { function thongBao () {

echo "Ăn cơm chan canh"; "Đây là một sinh viên năm nhất";

}

}  
 

// Phương thức lấy màu lông

final class SinhVien {} class SinhVien {}

public function getMauLong() {

} SinhVienNamNhat extends SinhVien {}
 

// Kế thừa lớp trừu tượngLưu ý: Có một điểm đặc biệt, trong PHP các thuộc tính không thể được đánh dấu là Hello World!23

echo "Ăn cơm chan canh";

// Khởi tạo đối tượng mới từ class ChoCotự học Lập trình PHP cơ bản này mình đã giúp bạn tìm hiểu về những khái niệm quan trọng và căn bản nhất của ngôn ngữ PHP.

Điểm đặc biệt ở series này không phải giúp bạn làm chủ ngôn ngữ PHP mà là giúp bạn làm quen với ngôn ngữ này và thoải mái khi tiếp tục học sâu hơn, học lập trình web với PHP.

Nếu bạn chịu khó code lại mỗi ví dụ ít nhất 1, 2 lần thì mình tin chắc là nền tảng PHP của bạn cũng khá ổn.

Giờ đây bạn hoàn toàn có đủ kiến thức, tự tin để tham dự các KHÓA HỌC PHP chuyên sâu ở các trung tâm đào tạo lập trình hay các khóa học Online trên Udemy, Coursera, Edumall...KHÓA HỌC PHP chuyên sâu ở các trung tâm đào tạo lập trình hay các khóa học Online trên Udemy, Coursera, Edumall...

Nếu bạn muốn học PHP chuyên sâu với chuyên gia doanh nghiệp thì...học PHP chuyên sâu với chuyên gia doanh nghiệp thì...

LIÊN HỆ TƯ VẤN NGAY!


Chúc bạn thành công với ngôn ngữ PHP này!

---

HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI

Học Lập trình chất lượng cao (Since 2002). Học thực tế + Tuyển dụng ngay!

Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội

SĐT: 02435574074 - 0383.180086

Email:

Fanpage: https://facebook.com/NIIT.ICT/

#niit #icthanoi #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python