Hướng dẫn php series - loạt php

PHP là một trong những ngôn ngữ lập trình web phổ biến nhất và khá là dễ học. Điều này chắc chắn bạn cũng biết. là một trong những ngôn ngữ lập trình web phổ biến nhất và khá là dễ học. Điều này chắc chắn bạn cũng biết.

Show

Thế nên bạn và rất nhiều người đang tìm cách học lập trình PHP để cuối cùng hi vọng trở thành PHP Web DEV (hoặc chỉ đơn giản là học để thi tốt hơn ở trên trường)học lập trình PHP để cuối cùng hi vọng trở thành PHP Web DEV (hoặc chỉ đơn giản là học để thi tốt hơn ở trên trường)

Dù cho là lý do gì, mình nghĩ rằng một hướng dẫn tự học lập trình php cơ bản, đầy đủ, rõ ràng, dễ hiểu ở đây sẽ giúp ích cho bạn khi mới bắt đầu.tự học lập trình php cơ bản, đầy đủ, rõ ràng, dễ hiểu ở đây sẽ giúp ích cho bạn khi mới bắt đầu.

Hướng dẫn php series - loạt php

> Note: Video đang update nha...

Dù có khá nhiều thứ cần phải trình bày, nhưng mình sẽ cố gắng làm ngắn gọn các khái niệm, tập trung vào ví dụ để bạn nhanh chóng nắm bắt được cốt lõi về lập trình PHP. (Đảm bảo dễ dàng cả đối với người mới bắt đầu học lập trình)ngắn gọn các khái niệm, tập trung vào ví dụ để bạn nhanh chóng nắm bắt được cốt lõi về lập trình PHP. (Đảm bảo dễ dàng cả đối với người mới bắt đầu học lập trình)

Mục lục:

Để chuẩn bị cho việc học PHP thuận lợi, bạn hãy cài đặt Xampp và một phần mềm soạn thảo có thể là Sublime Text, NetBeans, Eclipse, PHP Storm, ... tùy ý (Mình thì sử dụng VS Code).cài đặt Xampp và một phần mềm soạn thảo có thể là Sublime Text, NetBeans, Eclipse, PHP Storm, ... tùy ý (Mình thì sử dụng VS Code).

Và nên nhớ phải cài đặt Port (cổng) trên Xampp đúng để có thể chạy được code PHP


 

Sau khi đã cài đặt xong, bây giờ thì bắt đầu ngay thôi nào!

I. CÚ PHÁP PHP CƠ BẢN

Phần này chúng ta sẽ đi tìm hiểu nhanh về PHP, PHP tag, cách xuất dữ liệu trong PHP và cách comment code trong PHP.

I.1. Giới thiệu về PHP

PHP (viết tắt của Hypertext Preprocessor) là một ngôn ngữ kịch bản mã nguồn mở miễn phí, rất phổ biến. Các tập lệnh PHP được thực thi trên máy chủ. (viết tắt của Hypertext Preprocessor) là một ngôn ngữ kịch bản mã nguồn mở miễn phí, rất phổ biến. Các tập lệnh PHP được thực thi trên máy chủ.

PHP có thể làm:

  • Tạo nội dung trang web động
  • Tạo, mở, đọc, ghi, xóa và đóng tệp trên máy chủ
  • Thu thập dữ liệu biểu mẫu
  • Thêm, xóa và sửa đổi thông tin được lưu trữ trong cơ sở dữ liệu của bạn
  • Kiểm soát quyền truy cập của người dùng
  • Mã hóa dữ liệu
  • và nhiều hơn nữa!

> Lưu ý: Trước khi bắt đầu tự học PHP, bạn nên học qua về HTML nhé.> ? Có thể bạn chưa biết: Lõi của Wordpress (Hệ thống CMS hàng đầu thế giới) được viết bằng PHP. PHP cũng là một phần của mạng xã hội Facebook!Lưu ý: Trước khi bắt đầu tự học PHP, bạn nên học qua về HTML nhé.> ? Có thể bạn chưa biết: Lõi của Wordpress (Hệ thống CMS hàng đầu thế giới) được viết bằng PHP. PHP cũng là một phần của mạng xã hội Facebook!

Và dĩ nhiên, còn có rất nhiều lý do để chọn học PHP:

  • PHP chạy trên nhiều nền tảng khác nhau: Windows, Linux, Unix, Mac OS X, v.v.
  • PHP tương thích với hầu hết mọi máy chủ hiện đại, chẳng hạn như Apache, IIS, v.v.
  • PHP hỗ trợ nhiều loại cơ sở dữ liệu.
  • PHP là miễn phí!
  • Đặc biệt: PHP rất dễ học và tối ưu cho lập trình website.

I.2. PHP Tag

Một đoạn code PHP phải bắt đầu bằng <?php và kết thúc bằng ?>

PHP có thể nhúng trực tiếp trong thẻ HTML.

Hướng dẫn tạo và chạy dự án PHP với VS Code

Đây là một ví dụ về một tệp PHP đơn giản. Tập lệnh PHP sử dụng một hàm tích hợp sẵn (built-in fucntion) có tên là echo (đọc là ê cô) để xuất ra đoạn text Hello World! đến một trang web.

File index.php

<html lang="en">

<head>

Tự học PHPtitle>Tự học PHPtitle>

head>

<body>

<div>

echo "Hello World"; "

Hello World

";

Tự học PHP>

div>

body>

 html>
 

Sau khi đã cài đặt xong, bây giờ thì bắt đầu ngay thôi nào!Lưu ý: Câu lệnh PHP kết thúc bằng dấu chấm phảy ;

I. CÚ PHÁP PHP CƠ BẢN

<head>

Tự học PHPtitle>Chương trình PHP đầu tiêntitle>

head>

<body>

<script language="php">

echo "Hello World!"; "Hello World!";

script>

body>

 html>
 

Sau khi đã cài đặt xong, bây giờ thì bắt đầu ngay thôi nào!

I. CÚ PHÁP PHP CƠ BẢN

Phần này chúng ta sẽ đi tìm hiểu nhanh về PHP, PHP tag, cách xuất dữ liệu trong PHP và cách comment code trong PHP.

I.1. Giới thiệu về PHP

PHP (viết tắt của Hypertext Preprocessor) là một ngôn ngữ kịch bản mã nguồn mở miễn phí, rất phổ biến. Các tập lệnh PHP được thực thi trên máy chủ.

PHP có thể làm:

Tạo nội dung trang web độngJAVA hay Python, PHP có một hàm đặc trưng là echo, thường được được sử dụng để xuất văn bản.

Tạo, mở, đọc, ghi, xóa và đóng tệp trên máy chủ

Thu thập dữ liệu biểu mẫu

Thêm, xóa và sửa đổi thông tin được lưu trữ trong cơ sở dữ liệu của bạn

Kiểm soát quyền truy cập của người dùng "Học PHP Cơ bản";

Mã hóa dữ liệu>
 

và nhiều hơn nữa!Lưu ý: Đoạn text phải nằm trong dấu nháy đơn ?>8 hoặc dấu nháy kép ?>9

> Lưu ý: Trước khi bắt đầu tự học PHP, bạn nên học qua về HTML nhé.> ? Có thể bạn chưa biết: Lõi của Wordpress (Hệ thống CMS hàng đầu thế giới) được viết bằng PHP. PHP cũng là một phần của mạng xã hội Facebook!

Và dĩ nhiên, còn có rất nhiều lý do để chọn học PHP: "Học PHP Cơ bản";

PHP chạy trên nhiều nền tảng khác nhau: Windows, Linux, Unix, Mac OS X, v.v. "Lập trình PHP";

PHP tương thích với hầu hết mọi máy chủ hiện đại, chẳng hạn như Apache, IIS, v.v. "Tự học PHP";

Mã hóa dữ liệu>
 

và nhiều hơn nữa!

> Lưu ý: Trước khi bắt đầu tự học PHP, bạn nên học qua về HTML nhé.> ? Có thể bạn chưa biết: Lõi của Wordpress (Hệ thống CMS hàng đầu thế giới) được viết bằng PHP. PHP cũng là một phần của mạng xã hội Facebook!

Và dĩ nhiên, còn có rất nhiều lý do để chọn học PHP:copy > paste đoạn code sau vào:

<html lang="en">

<head>

Tự học PHPtitle>Tự học PHPtitle>

head>

<body>

<div>

echo "Hello World"; "

Hello World

";

Tự học PHP>

div>

body>

 html>
 

Tự học PHPLưu ý: echo7 là cổng bạn thiết lập trong Xampp (có thể khác do bạn cấu hình trên xampp), thư mục echo1 là thư mục dự án chứa file index.php và được đặt trong thư mục Hello World!0 (Như thế này: Hello World!1)

?>

Hướng dẫn php series - loạt php

> Lưu ý: Câu lệnh PHP kết thúc bằng dấu chấm phảy ;Lưu ý: Trong các ví dụ trong bài viết này, mình sẽ rất ít đưa code HTML để đảm bảo ví dụ ngắn gọn, rõ ràng. Bạn có test kết quả bằng cách nhét vào file HTML và chạy file Hello World!2 hoặc chạy thẳng file ?>1 đều được.

I.4. Comment trong PHP

Trong code PHP, comment (chú tích) là một dòng không được thực thi.

Comment được sử dụng để nhận xét, mô tả về ý nghĩa của đoạn code giúp người khác đọc hiểu chương trình của bạn.

Hoặc, chính là giúp bạn đọc hiểu code của mình sau một thời gian không đụng vào nó, tránh tình trạng:

"THẰNG CỜ HÓ NÀO CODE NGU THẾ NÀY"

Comment một dòng bắt đầu bằng Hello World!4

Ví dụ: Tạo file Hello World!5 trong thư mục echo1, dán đoạn code sau vào

echo "Tự học PHP"; "

Tự học PHP

";

// Đây là comment 1 dòng

echo "niithanoi.edu.vn"; "

niithanoi.edu.vn

";

?>  >
 

Chạy file với đường dẫn Hello World!7, kết quả ta được: 

Hướng dẫn php series - loạt php

Còn comment nhiều dòng trong PHP thì bạn sử dụng /* và */, ví dụ:

echo "Tự học PHP"; "

Tự học PHP

";

// Đây là comment 1 dòng

?>  

        trong PHP

    */

echo "niithanoi.edu.vn"; "

niithanoi.edu.vn

";

?>  >
 

Chạy file với đường dẫn Hello World!7, kết quả ta được: Mẹo #1: Thông thường, chúng ta cũng thường xuyên comment code để tìm và gỡ lỗi:

Còn comment nhiều dòng trong PHP thì bạn sử dụng /* và */, ví dụ:

echo "niithanoi.edu.vn"; "

niithanoi.edu.vn

";

?>  >
 

Chạy file với đường dẫn Hello World!7, kết quả ta được: 

Còn comment nhiều dòng trong PHP thì bạn sử dụng /* và */, ví dụ:Mẹo #2: Chọn đoạn code cần comment và nhấn Ctrl + ? để comment code.

/*

        Đây là comment nhiều dòng

> Mẹo #1: Thông thường, chúng ta cũng thường xuyên comment code để tìm và gỡ lỗi:

//echo "Tự học PHP";

Câu lệnh echo Hello World!8 trên bị comment, nó sẽ không được thực thi.

> Mẹo #2: Chọn đoạn code cần comment và nhấn Ctrl + ? để comment code.

  • II. BIẾN TRONG PHPchữ cái hoặc dấu gạch dưới index.php0
  • Trong phần này chúng ta sẽ tìm hiểu về biến trong PHP, hằng số, các kiểu dữ liệu và phạm vi của biến... không được bắt đầu bằng số
  • II.1. Khai báo biến trong PHPchữ, số và dấu gạch dưới (A-z, 0-9 và _)
  • Biến được sử dụng làm 'vùng chứa' để chúng ta lưu trữ thông tin.phân biệt chữ hoa chữ thường (index.php1 và index.php2 là khác nhau)

Biến PHP bắt đầu bằng dấu đô la Hello World!9, theo sau là tên của biến:

Nguyên tắc đặt tên biến: = "Ngọc Anh";

$tuoi = 18; = 18;

Tên biến phải bắt đầu bằng chữ cái hoặc dấu gạch dưới index.php0 $ten;
 

Tên biến không được bắt đầu bằng số

Tên biến chỉ có thể chứa các ký tự chữ, số và dấu gạch dưới (A-z, 0-9 và _)Lưu ý: Trong PHP, húng ta không cần khai báo kiểu dữ liệu (int, float, String như Java). PHP tự động chuyển biến thành kiểu dữ liệu chính xác, tùy thuộc vào giá trị của nó.

Tên biến phân biệt chữ hoa chữ thường (index.php1 và index.php2 là khác nhau)

Ví dụ:

$ten = "Ngọc Anh";constant) tương tự như các biến. Nhưng chúng không thể thay đổi hoặc index.php4 sau khi chúng đã được định nghĩa.

echo $ten;  

Kết quả:

> Lưu ý: Trong PHP, húng ta không cần khai báo kiểu dữ liệu (int, float, String như Java). PHP tự động chuyển biến thành kiểu dữ liệu chính xác, tùy thuộc vào giá trị của nó.

> Note: Trong PHP, thông thường tên biến được viết theo kiểu index.php3 (chữ thường, cách nhau bằng dấu gạch dưới)(name, value, case-insensitive);
 

II.2. Hằng số

  • Hằng số (constant) tương tự như các biến. Nhưng chúng không thể thay đổi hoặc index.php4 sau khi chúng đã được định nghĩa.
  • Trong PHP, tên của hằng số bắt đầu bằng một chữ cái hoặc một dấu gạch dưới.
  • Để tạo một hằng số, hãy sử dụng hàm index.php5:

// Cú pháp tạo hằng số trong PHP

define(name, value, case-insensitive);  

define("DOMAIN_NAME", "niithanoi.edu.vn");("DOMAIN_NAME""niithanoi.edu.vn");

echo DOMAIN_NAME; DOMAIN_NAME;

Trong đó:
 

index.php6: Chỉ định tên của hằng số

index.php7: Chỉ định giá trị của hằng số

define("DOMAIN_NAME", "niithanoi.edu.vn", true);("DOMAIN_NAME""niithanoi.edu.vn"true);

echo domain_name; domain_name;

Trong đó:
 

index.php6: Chỉ định tên của hằng sốLưu ý: Không cần ký hiệu $ trước tên hằng số

index.php7: Chỉ định giá trị của hằng số

index.php8: Chỉ định xem tên hằng có nên phân biệt chữ hoa chữ thường hay không. Mặc định là index.php9

Ví dụ dưới đây tạo một hằng số có tên phân biệt chữ hoa chữ thường:

// Định nghĩa hằng số CÓ phân biệt HOA - thường

// Kết quả: niithanoi.edu.vn   là một chuỗi các ký tự, chẳng hạn như ;0

Ví dụ, định nghĩa hằng số không phân biệt chữ hoa, chữ thường:

// Định nghĩa hằng số KHÔNG phân biệt HOA - thường

> Lưu ý: Không cần ký hiệu $ trước tên hằng số = "Học PHP";

II.3. Các kiểu dữ liệu trong PHP

Trong PHP, các biến có thể lưu trữ nhiều kiểu dữ liệu khác nhau. = ' niithanoi.edu.vn';
 

Các kiểu dữ liệu được PHP hỗ trợ: String, Integer, Float, Boolean, Array, Object, NULL, Resource.

Tên biến không được bắt đầu bằng số

Tên biến chỉ có thể chứa các ký tự chữ, số và dấu gạch dưới (A-z, 0-9 và _)

Tên biến phân biệt chữ hoa chữ thường (index.php1 và index.php2 là khác nhau) là một số nguyên (không có số thập phân) phải phù hợp với các tiêu chí sau:

  • Ví dụ:
  • $ten = "Ngọc Anh";
  • echo $ten;  

Kết quả: = 42// Số nguyên dương

> Lưu ý: Trong PHP, húng ta không cần khai báo kiểu dữ liệu (int, float, String như Java). PHP tự động chuyển biến thành kiểu dữ liệu chính xác, tùy thuộc vào giá trị của nó. = -42// Số nguyên âm
 

> Note: Trong PHP, thông thường tên biến được viết theo kiểu index.php3 (chữ thường, cách nhau bằng dấu gạch dưới)Lưu ý: Trong PHP, các biến có thể chứa các kiểu dữ liệu khác nhau.

II.2. Hằng số

Float là một số thập phân, trong PHP thì không cần khai báo kiểu dữ liệu float: là một số thập phân, trong PHP thì không cần khai báo kiểu dữ liệu float:

Kiểu dữ liệu Boolean

Boolean là kiểu dữ liệu logic, nó có hai trạng thái: ;4 hoặc index.php9 là kiểu dữ liệu logic, nó có hai trạng thái: ;4 hoặc index.php9

Kiểu boolean thì thường được dùng trong kiểm tra điều kiện (sẽ học ở phần sau)

Bạn cũng có thể sử dụng kết hợp các loại dữ liệu trong một chương trình mà không xảy ra vấn đề gì.

$input = "10"; = "10";

// Số nguyên

$x = 10; = 10;

// Tính tổng

$tong = $input + $x;  = $input + $x;

// Xuất tổng

echo $tong;   $tong;
 

> Lưu ý: Nếu như ở trong JAVA (các ngôn ngữ chặt chẽ) thì điều này là không thể. Nhưng PHP là ngôn ngữ động (giống JavaScript) nên nó tự động chuyển kiểu dữ liệu của biến ;6 thành kiểu ;7 và tính tổng.Lưu ý: Nếu như ở trong JAVA (các ngôn ngữ chặt chẽ) thì điều này là không thể. Nhưng PHP là ngôn ngữ động (giống JavaScript) nên nó tự động chuyển kiểu dữ liệu của biến ;6 thành kiểu ;7 và tính tổng.

II.4. Phạm vi của biến

Các biến PHP có thể được khai báo ở bất kỳ đâu trong tập lệnh.

Phạm vi của một biến là một phần của tập lệnh, trong đó biến có thể được tham chiếu hoặc sử dụng.

Phạm vi biến được sử dụng nhiều nhất của PHP là cục bộ, toàn cục.

  • Một biến được khai báo bên ngoài một hàm có phạm vi toàn cục.
  • Một biến được khai báo trong một hàm có phạm vi cục bộ và chỉ có thể được truy cập trong hàm đó.

Ví dụ:

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

// Tạo một hàm

function getTen() { getTen() {

echo $ten; $ten;

}

// Gọi hàm

getTen();  ();
 

Kết quả dẫn đến lỗi:

Bởi vì, biến $ten là toàn cục và không thể truy cập được trong hàm getTen().

Để truy cập biến toàn cục từ bên trong hàm. Chúng ta cần sử dụng từ khóa ;8, như ví dụ sau:

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

// Tạo một hàm

function getTen() { getTen() {

}

global $ten; $ten;

echo $ten; $ten;

}

// Gọi hàm

getTen();  ();
 

Kết quả dẫn đến lỗi:

Bởi vì, biến $ten là toàn cục và không thể truy cập được trong hàm getTen().

Để truy cập biến toàn cục từ bên trong hàm. Chúng ta cần sử dụng từ khóa ;8, như ví dụ sau:

// Truy cập biến toàn cục

Kết quả:

II.5. Biến của biến = "Tự học PHP";

Trong PHP, bạn có thể sử dụng một biến để chỉ định tên của biến khác, ví dụ ;9 $$a;
 

Kết quả dẫn đến lỗi:

Bởi vì, biến $ten là toàn cục và không thể truy cập được trong hàm getTen().

Để truy cập biến toàn cục từ bên trong hàm. Chúng ta cần sử dụng từ khóa ;8, như ví dụ sau:

// Truy cập biến toàn cục

Kết quả:

Hướng dẫn php series - loạt php

II.5. Biến của biến

Trong PHP, bạn có thể sử dụng một biến để chỉ định tên của biến khác, ví dụ ;9

Nó sẽ coi giá trị của biến <script>0 như là tên của nó.

Hướng dẫn php series - loạt php

Ví dụ:

$b = 2; = 2;

$ten = "Ngọc Anh";

// Tạo một hàm $a + $b// Kết quả: 7

}

// Gọi hàm $a - $b// Kết quả: 3

getTen();  

Kết quả dẫn đến lỗi: $a * $b// Kết quả: 10

Bởi vì, biến $ten là toàn cục và không thể truy cập được trong hàm getTen().

Để truy cập biến toàn cục từ bên trong hàm. Chúng ta cần sử dụng từ khóa ;8, như ví dụ sau: $a / $b// Kết quả: 2.5

// Truy cập biến toàn cục

Kết quả: $a % $b// Kết quả: 1
 

II.5. Biến của biến

Trong PHP, bạn có thể sử dụng một biến để chỉ định tên của biến khác, ví dụ ;9

Nó sẽ coi giá trị của biến <script>0 như là tên của nó.

  • Ví dụ:
  • $x = "Tự học PHP";

echo $$a;  

$b = 2; = 2;

Bởi vì khi viết ;9 thì PHP Engine sẽ hiểu lấy giá trị của biến <script>0 làm tên cho biến mới này.

$a++;++;

$a--;--;

III. TOÁN TỬ TRONG PHP

Trong phần này, bạn sẽ học về một số loại toán tử phổ biến như toán tử toán học, toán tử gán, toán tử so sánh và toán tử logic.$b;

Có rất nhiều thứ bạn sẽ thấy gần giống trong toán học thế nên mình nghĩ phần này sẽ  khá là đơn giản thôi.$b;
 

III.1. Toán tử toán học

Các toán tử toán học làm việc với các giá trị số để thực hiện các phép toán số học thông thường.tăng sau:

  • Một số toán tử toán học thông thường
  • // Phép cộng

Ví dụ:

$ten = "Ngọc Anh"; $a++ + 2// Kết quả: 7

// Tạo một hàm $a// Kết quả: 6
 

}

// Gọi hàm

getTen();  tăng trước:

Kết quả dẫn đến lỗi: ++$a + 2// Kết quả: 8

// Tạo một hàm $a// Kết quả: 6
 

}

// Gọi hàm

getTen();  

$b = a; = a;

Kết quả dẫn đến lỗi: $a// Kết quả: 5

echo $b; // Kết quả: 5   $b// Kết quả: 5
 

Toán tử gán cũng có thể sử dụng kết hợp với các toán tử toán học.

Hướng dẫn php series - loạt php

Ví dụ:

// Sử dụng *=

$a *= 2; *= 2;

echo $a; // Kết quả: 10   $a// Kết quả: 10
 

III.3. Toán tử so sánh

Toán tử so sánh sẽ so sánh giá trị của hai biến với nhau (Có thể là số hoặc chuỗi)

Nếu đúng thì sẽ trả về ;4 và ngược lại sẽ trả về index.php9

Hướng dẫn php series - loạt php

Toán tử so sánh này cũng không có gì khó. Hầu như là so sánh toán học cơ bản thôi.

Tuy nhiên, cần chú ý là toán tử <?php ?>5 và <?php ?>6

  • Trong khi <?php ?>5 so sánh giá trị, không quan tâm đến kiểu dữ liệu. Nghĩa là <?php ?>8 sẽ trả về ;4

  • Nhưng <?php ?>6 so sánh cả giá trị và kiểu dữ liệu, <? ?>1 sẽ trả về index.php9

Ngoài ra, các toán tử so sánh sau cũng rất hay được sử dụng:

Hướng dẫn php series - loạt php


III.4. Toán tử Logic

Toán tử logic được sử dụng để kết hợp các câu lệnh điều kiện

Hướng dẫn php series - loạt php

Ví dụ: Kiểm tra xem, nếu <script>0 lớn hơn <? ?>4 và <script>0 lớn hơn <? ?>6 thì in ra <? ?>7. Ngược lại thì in ra <? ?>8

$b = 3; = 3;

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

echo "Đúng"; "Đúng";

} else {else {

echo "Sai"; "Sai";

}  
 

Kết quả:

> Lưu ý: Nếu nhiều điều kiện kết hợp thì tốt nhất bạn nên sử dụng thêm các cặp ngoặc tròn ( )Lưu ý: Nếu nhiều điều kiện kết hợp thì tốt nhất bạn nên sử dụng thêm các cặp ngoặc tròn ( )

IV. MẢNG TRONG PHP

Trong phần này, bạn sẽ học về kiểu dữ liệu đặc biệt đó là Mảng.

Một mảng có thể chứa nhiều hơn một giá trị tại một thời điểm.

Bình thường, bạn có một danh sách tên sinh viên, sử dụng biến bạn sẽ lưu trữ tên sinh viên như sau:

$sinhVien2 = "Thu Hương"; = "Thu Hương";

$sinhVien3 = "Vũ Hà";   = "Vũ Hà";
 

Số lượng sinh viên ít thì còn có thể, nhưng 1000 sinh viên thì không thể lưu trữ như thế được.

Do đó, chúng ta cần sử dụng mảng.

IV.1. Mảng chỉ số

Mảng chỉ số là một mảng, trong đó, các giá trị sẽ được đánh dấu vị trí (chỉ mục) tự động từ 0 (Luôn luôn đánh thứ tự từ 0)

Ví dụ, ta có:

$arr = array("A", "B", "C", "D", "E");   = array("A""B""C""D""E");
 

Trong đó:

  • <? ?>9 là tên mảng (bạn đặt tùy ý)
  • ?>00 là từ khóa để tạo mảng trong PHP

Hướng dẫn php series - loạt php

Bạn cũng có thể gán thủ công như sau:

// theo chỉ mục (index)

$arr[0] = "A";[0] = "A";

$arr[1] = "B";[1] = "B";

$arr[2] = "C";[2] = "C";

$arr[3] = "D"; [3] = "D";

$arr[4] = "E";  [4] = "E";
 

Bây giờ, chúng ta có thể truy cập vào giá trị của mảng bằng cách sử dụng index.

echo $arr[1]; // Kết quả: B   $arr[1]; // Kết quả: B
 

Ngoài ra, giá trị của mảng cũng có thể là nhiều kiểu dữ liệu khác nhau:

// Mảng PHP có thể chứ nhiều loại giá trị

$arr = array(0, "Không", false); = array(0"Không"false);

echo $arr[0].$arr[1]; // kết quả: 0Không   $arr[0].$arr[1]; // kết quả: 0Không
 

Chúng ta cũng có thể sử dụng index để gán lại giá trị trong mảng (thay đổi giá trị trong mảng)

$arr = array(1, 2, 3, 4, 5);  = array(12345);

// Thay đổi giá trị đầu tiên của mảng

$arr[0] = 10;[0] = 10;

// In ra giá trị đầu tiên của mảng

echo $arr[0];   $arr[0];
 

Kết quả:

> Lưu ý: Nếu nhiều điều kiện kết hợp thì tốt nhất bạn nên sử dụng thêm các cặp ngoặc tròn ( )

IV. MẢNG TRONG PHP trong PHP cũng là một mảng nhưng mảng liên kết chứa các cặp ?>01

Trong phần này, bạn sẽ học về kiểu dữ liệu đặc biệt đó là Mảng.

Một mảng có thể chứa nhiều hơn một giá trị tại một thời điểm. = array("Ngọc Anh" => 18"Thu Hương" => 19"Vũ Hà" => 20);
 

Bình thường, bạn có một danh sách tên sinh viên, sử dụng biến bạn sẽ lưu trữ tên sinh viên như sau:

$sinhVien2 = "Thu Hương";["Ngọc Anh"] = 18;

$sinhVien3 = "Vũ Hà";  ["Thu Hương"] = 19;

Số lượng sinh viên ít thì còn có thể, nhưng 1000 sinh viên thì không thể lưu trữ như thế được.["Vũ Hà"] = 20;
 

Do đó, chúng ta cần sử dụng mảng.Lưu ý: Trong mảng liên kết, chúng ta sử dụng ký hiệu ?>02 để gán giá trị cho key

IV.1. Mảng chỉ số

Mảng chỉ số là một mảng, trong đó, các giá trị sẽ được đánh dấu vị trí (chỉ mục) tự động từ 0 (Luôn luôn đánh thứ tự từ 0) = array("Ngọc Anh" => 18"Thu Hương" => 19"Vũ Hà" => 20);

Ví dụ, ta có:

$arr = array("A", "B", "C", "D", "E");   $arr["Ngọc Anh"]; // Kết quả: 18
 

Trong đó:

<? ?>9 là tên mảng (bạn đặt tùy ý)

?>00 là từ khóa để tạo mảng trong PHP["Ngọc Anh"] = 20;

Bạn cũng có thể gán thủ công như sau: $arr["Ngọc Anh"]; // Kết quả: 20
 

// theo chỉ mục (index)

$arr[3] = "D";

$arr[4] = "E";  

  • Bây giờ, chúng ta có thể truy cập vào giá trị của mảng bằng cách sử dụng index.
  • echo $arr[1]; // Kết quả: B  

Ngoài ra, giá trị của mảng cũng có thể là nhiều kiểu dữ liệu khác nhau:

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"),

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((

array("Khánh", "Đức") => 20,

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

echo $arr[1][1]; // Kết quả: Trọng Triề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) {

) "Thanh niên";

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 {

// chứa mảng chỉ số và mảng liên kết "Trưởng thành";

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,

"Đức" => 30

  • while
  • )
  • for
  • V. CẤU TRÚC ĐIỀU KHIỂN TRONG PHP

Trong phần này bạn sẽ học về các cấu trúc điều kiện và cá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.

Đối với mỗi điều kiện khác nhau chúng ta sẽ điều khiển chương trình thực thi các quyết định khác nhau.while thực thi một khối code miễn là điều kiện vẫn được đánh giá là đúng (true)

V.1. Câu lệnh IF ELSE trong PHP

Câu lệnh if else được sử dụng để thực thi một hành động nhất định nếu một điều kiện là đúng và một hành động khác khác nếu điều kiện là sai.

Cú pháp câu lệnh if else:

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ếtLư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!

"Giảng viên" => array("Thành Luân", "Trọng Triều", "Văn Quyết"), 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à <script language = "php">2 (?>11). .

"Khánh" => 20,

while($i ($i < 7) {

echo "Vòng lặp thứ: $i "; "Vòng lặp thứ: $i 
"
;

$i++;++;

}  
 

Kết quả:

Vòng lặp thứ: 1 Vòng lặp thứ: 2 Vòng lặp thứ: 3 Vòng lặp thứ: 4 Vòng lặp thứ: 5 Vòng lặp thứ: 6  
Vòng lặp thứ: 2
Vòng lặp thứ: 3
Vòng lặp thứ: 4
Vòng lặp thứ: 5
Vòng lặp thứ: 6
 

V.4. Vòng lặp do while

Vòng lặp do while tương tự như vòng lặp while, nhưng sẽ luôn thực thi khối code một lần cho dù điều kiện đúng hay sai.do while tương tự như vòng lặp while, nhưng sẽ luôn thực thi khối code một lần cho dù điều kiện đúng hay sai.

Từ vòng lặp thứ 2, nếu điều kiện còn đúng thì chương trình vẫn tiếp tục thực hiện vòng lặp.

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

// Code thực thi 1 lần và tiếp tục

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

} while (condition);  while (condition);
 

Trong đó:

  • ?>03 là điều kiện sẽ được đánh giá Đúng / Sai từ vòng lặp thứ 2 trở đi

Ví dụ vòng lặp do while:

do { {

echo "Vòng lặp thứ: $i "; "Vòng lặp thứ: $i 
"
;

$i++;++;

} while ($i while ($i < 7);
 

Kết quả ta được:

Vòng lặp thứ: 1 Vòng lặp thứ: 2 Vòng lặp thứ: 3 Vòng lặp thứ: 4 Vòng lặp thứ: 5 Vòng lặp thứ: 6  
Vòng lặp thứ: 2
Vòng lặp thứ: 3
Vòng lặp thứ: 4
Vòng lặp thứ: 5
Vòng lặp thứ: 6
 

V.4. Vòng lặp do while

Vòng lặp do while tương tự như vòng lặp while, nhưng sẽ luôn thực thi khối code một lần cho dù điều kiện đúng hay sai.

do { {

Từ vòng lặp thứ 2, nếu điều kiện còn đúng thì chương trình vẫn tiếp tục thực hiện vòng lặp. "Vòng lặp thứ: $i 
"
;

$i++;++;

} while ($i while ($i < 0);
 

Kết quả ta được:

Kết quả bạn thấy giống vòng lặp while không?

Để thấy sự khác nhau, chúng ta sửa lại điều kiện một chút:

echo "Vòng lặp thứ: $i "; Chú ý: Vòng lặp while và do while được sử dụng tốt nhất trong trường hợp bạn không biết trước chắc chắn số lần lặp.

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

Bởi vì vòng lặp do while kiểm tra điều kiện sau nên dù điều kiện đúng hay sai nó cũng chạy ít nhất 1 lần.for trong PHP (cũng như các ngôn ngữ khác) được sử dụng khi bạn biết trước số lần lặp.

Sau đó, khi kiểm tra điều kiện thấy sai thì thoát vòng lặp. Do đó, ta được kết quả như trên.

for (init; test; increment) { (init; test; increment) {

> Chú ý: Vòng lặp while và do while được sử dụng tốt nhất trong trường hợp bạn không biết trước chắc chắn số lần lặp.

}  
 

Trong đó:

  • ?>03 là điều kiện sẽ được đánh giá Đúng / Sai từ vòng lặp thứ 2 trở đi
  • Ví dụ vòng lặp do while:
  • } while ($i 

Kết quả ta được:Lưu ý: Mỗi biểu thức tham số của vòng lặp for có thể để trống hoặc chứa nhiều biểu thức được phân tách bằng dấu phẩy ;.

Kết quả bạn thấy giống vòng lặp while không?

for ($i = 0; $i  ($i = 0$i < 7$i++) {

Để thấy sự khác nhau, chúng ta sửa lại điều kiện một chút: "Vòng lặp thứ: $i
"
;

}  
 

Kết quả:

echo "Vòng lặp thứ: $i ";
Vòng lặp thứ: 1
Vòng lặp thứ: 2
Vòng lặp thứ: 3
Vòng lặp thứ: 4
Vòng lặp thứ: 5
Vòng lặp thứ: 6
 

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

  • Bởi vì vòng lặp do while kiểm tra điều kiện sau nên dù điều kiện đúng hay sai nó cũng chạy ít nhất 1 lần.
  • Sau đó, khi kiểm tra điều kiện thấy sai thì thoát vòng lặp. Do đó, ta được kết quả như trên.
  • > Chú ý: Vòng lặp while và do while được sử dụng tốt nhất trong trường hợp bạn không biết trước chắc chắn số lần lặp.
  • V.5. Vòng lặp for trong PHP

Vòng lặp for trong PHP (cũng như các ngôn ngữ khác) được sử dụng khi bạn biết trước số lần lặp.Cảnh báo: Hãy cẩn thận! Nếu bạn bỏ quên điều kiện kiểm tra hoặc điều kiện kiểm tra luôn đúng thì có thể sẽ tạo ra vòng lặp vô hạn.

Cú pháp vòng lặp for:

// Code thực thi trong PHP được tạo ra chỉ để lặp qua các phần tử trong mảng bao gồm cả mảng chỉ số và mảng liên kết.

?>17: Khởi tạo giá trị bộ đếm của vòng lặp

foreach ($array as $value) { ($array as $value) {

> Chú ý: Vòng lặp while và do while được sử dụng tốt nhất trong trường hợp bạn không biết trước chắc chắn số lần lặp.

V.5. Vòng lặp for trong PHP

Vòng lặp for trong PHP (cũng như các ngôn ngữ khác) được sử dụng khi bạn biết trước số lần lặp.

foreach ($array as $key => $value) { ($array as $key => $value) {

> Chú ý: Vòng lặp while và do while được sử dụng tốt nhất trong trường hợp bạn không biết trước chắc chắn số lần lặp.

}  
 

Trong đó:

  • ?>03 là điều kiện sẽ được đánh giá Đúng / Sai từ vòng lặp thứ 2 trở đi
  • Ví dụ vòng lặp do while:
  • } while ($i 

Kết quả ta được:

  • Kết quả bạn thấy giống vòng lặp while không?

Để thấy sự khác nhau, chúng ta sửa lại điều kiện một chút:

echo "Vòng lặp thứ: $i ";
$sinhVien = array("Ngọc Anh""Hà""Hương");

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

foreach ($sinhVien as $sv) { ($sinhVien as $sv) {

echo $sv.""; $sv."
"
;

}  
 

Bởi vì vòng lặp do while kiểm tra điều kiện sau nên dù điều kiện đúng hay sai nó cũng chạy ít nhất 1 lần.

  • Sau đó, khi kiểm tra điều kiện thấy sai thì thoát vòng lặp. Do đó, ta được kết quả như trên.

> Chú ý: Vòng lặp while và do while được sử dụng tốt nhất trong trường hợp bạn không biết trước chắc chắn số lần lặp.

$sinhVien = array( = array(

V.5. Vòng lặp for trong PHP => 18,

Vòng lặp for trong PHP (cũng như các ngôn ngữ khác) được sử dụng khi bạn biết trước số lần lặp. => 19,

Cú pháp vòng lặp for: => 22

// Code thực thi

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

foreach ($sinhVien as $ten => $tuoi) { ($sinhVien as $ten => $tuoi) {

Bởi vì vòng lặp do while kiểm tra điều kiện sau nên dù điều kiện đúng hay sai nó cũng chạy ít nhất 1 lần. "$ten$tuoi tuổi"."
"
;

}  
 

Sau đó, khi kiểm tra điều kiện thấy sai thì thoát vòng lặp. Do đó, ta được kết quả như trên.
Hà: 19 tuổi
Hương: 22 tuổi
 

V.7. Switch Case trong PHP

Câu lệnh switch case là một giải pháp thay thế cho câu lệnh if elseif else.switch case là một giải pháp thay thế cho câu lệnh if elseif else.

Chúng ta sử dụng câu lệnh switch case để đánh giá điều kiện, sau đó chọn một trường hợp thỏa mãn để thực thi. Nếu không thì mặc định thực thi khối lệnh nào đó (nếu có)

case value1: value1:

// Code thực thi nếu n bằng value 1

break;;

case value2: value2:

// Code thực thi nếu n bằng value 2

break;;

...

default::

// Code thực thi nếu không có

// trường hợp nào thỏa mãn

}  
 

Đầu tiên, biểu thức đơn của chúng ta ?>35 (thường là một biến) sẽ được đánh giá 1 lần.

Nếu giá trị nào trong các trường hợp (case) khớp thì chương trình sẽ thực thi khối code bên trong case đó.

Và nếu không trường hợp nào khớp thì chương trình sẽ thực thi khối code bên trong ?>36.

Chúng ta sẽ làm một ví dụ cổ điển để thông báo các ngày trong tuần:

switch ($today) { ($today) {

case "Mon": "Mon":

echo "Thứ Hai"; "Thứ Hai";

break;;

case "Tue": "Tue":

echo "Thứ Ba"; "Thứ Ba";

break;;

case "Wed":  "Wed":

echo "Thứ Tư"; "Thứ Tư";

break;;

case "Thu": "Thu":

echo "Thứ Năm"; "Thứ Năm";

break;;

case "Fri": "Fri":

echo "Thứ Sáu"; "Thứ Sáu";

break;;

case "Sat": "Sat":

echo "Thứ Bảy"; "Thứ Bảy";

break;;

case "Sun":  "Sun":

echo "Chủ Nhật"; "Chủ Nhật";

break;;

default::

echo "Thứ không hợp lệ"; "Thứ không hợp lệ";

}  
 

Đầu tiên, biểu thức đơn của chúng ta ?>35 (thường là một biến) sẽ được đánh giá 1 lần.

Nếu giá trị nào trong các trường hợp (case) khớp thì chương trình sẽ thực thi khối code bên trong case đó.

Và nếu không trường hợp nào khớp thì chương trình sẽ thực thi khối code bên trong ?>36.

$today = "Sat"; = "Sat";

switch ($today) { ($today) {

case "Mon": "Mon":

echo "Thứ Hai"; "Thứ Hai";

break;;

case "Tue": "Tue":

echo "Thứ Ba"; "Thứ Ba";

break;;

case "Wed": "Wed":

case "Wed":  "Thứ Tư";

break;;

case "Thu": "Thu":

echo "Thứ Năm"; "Thứ Năm";

break;;

case "Fri": "Fri":

echo "Thứ Sáu"; "Thứ Sáu";

break;;

case "Sat": "Sat":

echo "Thứ Bảy"; "Thứ Bảy";

case "Sun":

case "Sun": "Sun":

echo "Chủ Nhật"; "Chủ Nhật";

break;;

default::

echo "Thứ không hợp lệ"; "Thứ không hợp lệ";

}  
 

Đầu tiên, biểu thức đơn của chúng ta ?>35 (thường là một biến) sẽ được đánh giá 1 lần.Note: Mình không có thêm thẻ ?>40 để cho bạn dễ nhìn code switch case. Nếu muốn kết quả xuống hàng thì bạn nối vào trong câu lệnh echo là được.

Nếu giá trị nào trong các trường hợp (case) khớp thì chương trình sẽ thực thi khối code bên trong case đó.

Và nếu không trường hợp nào khớp thì chương trình sẽ thực thi khối code bên trong ?>36.

switch ($today) { ($today) {

case "Mon": "Mon":

case "Tue": "Tue":

case "Wed": "Wed":

case "Thu": "Thu":

case "Fri": "Fri":

Chúng ta sẽ làm một ví dụ cổ điển để thông báo các ngày trong tuần: "Ngày làm việc";

break;;

case "Sat": "Sat":

case "Sun": "Sun":

echo "Thứ Hai"; "Cuối tuần";

break;;

default::

echo "Thứ Ba"; "Lỗi dữ liệu";

}  
 

Đầu tiên, biểu thức đơn của chúng ta ?>35 (thường là một biến) sẽ được đánh giá 1 lần.

Nếu giá trị nào trong các trường hợp (case) khớp thì chương trình sẽ thực thi khối code bên trong case đó. ($today) {

case "Mon": "Mon":

echo "Thứ Hai"; "Thứ Hai";

break;;

case "Tue": "Tue":

echo "Thứ Ba"; "Thứ Ba";

break;;

case "Wed": "Wed":

echo "Thứ Tư"; "Thứ Tư";

break;;

case "Thu": "Thu":

echo "Thứ Năm"; "Thứ Năm";

break;;

case "Fri": "Fri":

echo "Thứ Sáu"; "Thứ Sáu";

break;;

case "Sat": "Sat":

echo "Thứ Bảy"; "Thứ Bảy";

break;;

case "Sun": "Sun":

echo "Chủ Nhật"; "Chủ Nhật";

break;;

default::

echo "Thứ không hợp lệ"; "Thứ không hợp lệ";

}  
 

Đầu tiên, biểu thức đơn của chúng ta ?>35 (thường là một biến) sẽ được đánh giá 1 lần.Lưu ý: Trường hợp ?>36 là tùy chọn, bạn có thể bỏ qua nó.

Nếu giá trị nào trong các trường hợp (case) khớp thì chương trình sẽ thực thi khối code bên trong case đó.

Và nếu không trường hợp nào khớp thì chương trình sẽ thực thi khối code bên trong ?>36.break như bạn đã biết ở phần switch case bên trên, nó được sử dụng để thoát khỏi chương trình ngay lập tức.

Chúng ta sẽ làm một ví dụ cổ điển để thông báo các ngày trong tuần:

echo "Thứ Hai";forwhiledo whileforeach. Khi đó câu lệnh sẽ khiến chương trình thoát khỏi vòng lặp ngay lập tức.

echo "Thứ Ba";

case "Wed":  ($i 0$i <= 5$i++) {

echo "Thứ Tư"; $i."
"
;

if ($i == 3) { ($i == 3) {

echo "Thứ Năm"; "i = $i. Thoát vòng lặp for";

echo "Thứ Sáu";

break;;

echo "Thứ Bảy";

}  
 

Đầu tiên, biểu thức đơn của chúng ta ?>35 (thường là một biến) sẽ được đánh giá 1 lần.
1
2
3
i = 3. Thoát vòng lặp for
 

Nếu giá trị nào trong các trường hợp (case) khớp thì chương trình sẽ thực thi khối code bên trong case đó.

Và nếu không trường hợp nào khớp thì chương trình sẽ thực thi khối code bên trong ?>36.

Chúng ta sẽ làm một ví dụ cổ điển để thông báo các ngày trong tuần:break, chúng ta còn có từ khóa continue.

echo "Thứ Hai";continue giúp nhảy ngay sang vòng lặp tiếp theo

Ví dụ: Cũng sử dụng ví dụ trên, nhưng khi ?>50 bằng ?>48, chúng ta sẽ sử dụng ?>52 để bỏ qua lần lặp đó để sang ngay lần lặp tiếp theo.

for ($i = 0; $i  ($i = 0$i <= 5$i++) {

// Nếu i bằng 3 thì

// nhảy sang vòng lặp tiếp theo

if ($i == 3) { ($i == 3) {

continue;;

}

echo $i.""; $i."
"
;

}  
 

Như bạn thấy đó, kết quả là ?>48 không được in ra vì trong lần lặp đó chúng ta đã sử dụng từ khóa continue.> Lưu ý: Bạn có thể sử dụng từ khóa ?>52 trong tất cả các cấu trúc lặp.Lưu ý: Bạn có thể sử dụng từ khóa ?>52 trong tất cả các cấu trúc lặp.

V.9. Incule và Require

Câu lệnh include và require cho phép chèn nội dung của một tệp PHP vào tệp PHP khác, trước khi máy chủ thực thi nó.includerequire cho phép chèn nội dung của một tệp PHP vào tệp PHP khác, trước khi máy chủ thực thi nó.

Câu lệnh include

Trong lập trình web php thực tế việc sử dụng include để chèn nội dung giúp tiết kiệm khá nhiều công việc.lập trình web php thực tế việc sử dụng include để chèn nội dung giúp tiết kiệm khá nhiều công việc.

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

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.

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.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:

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

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:

<body>

 include 'header.php'?>

Học PHP cơ bảnp>Học PHP cơ bảnp>

Học PHP OOPp>Học PHP OOPp>

body>

Học PHP cơ bảnhtml>
 

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.phpLưu ý: Các tệp được include dựa trên đường dẫn tệp.

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.

> Lưu ý: Các tệp được include dựa trên đường dẫn tệp.

  • Câu lệnh requireinclude, nếu không tìm thấy file thì tập lệnh vẫn tiếp tục thực thi.
  • 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.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.

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ó.: Hàm được dựng sẵn, chúng ta chỉ việc gọi để sử dụng nó (Ví dụ: array(), asort()...)

  • Có hai loại hàm trong PHP:: Hàm do người dùng tự định nghĩa, tùy biến theo nhu cầu cụ thể.

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

  • ?>64: Là tên hàm của bạn.
  • Cách đặt tên hàm:
  • Không bắt đầu bằng chữ số hoặc ký tự đặc biệt
  • Có thể bắt đầu bằng dấu gạch dưới
  • Nên bắt đầu bằng một chữ thường là động từ

Các hàm tiêu chuẩn trong PHP được định nghĩa theo kiểu snake_case, nhưng trong PSR-1, tên phương thức phải được định nghĩa theo kiểu camelCase

Tên hàm phân biệt HOA - thường

Trong ví dụ dưới đây, chúng ta định nghĩa một hàm ?>65. "Chào bạn";

}  
 

// Code của hàm

echo "Chào bạn";

Tên hàm phân biệt HOA - thường

Trong ví dụ dưới đây, chúng ta định nghĩa một hàm ?>65. "Chào bạn";

// Code của hàm

echo "Chào bạn";

Đến đây, tạm thời chương trình chưa thực thi cái gì cả, chuỗi "Chào bạn" cũng chưa được in ra. Bởi vì chúng ta mới chỉ định nghĩa, chưa có sử dụng.();
 

Để sử dụng hàm, chúng ta phải gọi đến 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ố

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

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ố. = $x * $x;

echo $x; $x;

}  
 

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.(9); // Kết quả: 81

Ở 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ả:(4); // Kết quả: 16

$x = $x * $x; (5); // Kết quả: 25
 

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

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

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

tinhBinhPhuong(4); // Kết quả: 16 "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

tinhVanToc(1000, 60);  (100060);
 

Kết quả:

Vận tốc bằng: 16.666666666667 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).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).

VI.3. Đối số mặc định của hàm

Trong nhiều trường hợp gọi hàm có đối số, người dùng có thể truyền thiếu đối số, dẫn đến lỗi. Vì thế, đối số mặc định là một giải pháp cho vấn đề này.

  • Nếu truyền đủ đối số, hàm sẽ lấy đối số bạn truyền để tính toán
  • Khi truyền thiếu đối số, hàm sẽ tự động lấy giá trị mặc định để tính toán.

Ví dụ:

// Hàm chứa đối số mặc định

function setThongTin($ten, $tuoi = "không rõ") { setThongTin($ten$tuoi = "không rõ") {

echo "Tên: $ten - Tuổi $tuoi";  "Tên: $ten - Tuổi $tuoi";

}  
 

Bây giờ, chúng ta thử gọi hàm và truyền vào cho nó đầy đủ đối số:

// Gọi hàm có truyền đối số đầy đủ

setThongTin("Ngọc Anh", 18);  ("Ngọc Anh"18);
 

Kết quả:

Vận tốc bằng: 16.666666666667 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).

VI.3. Đối số mặc định của hàm("Vũ Hà");
 

Trong nhiều trường hợp gọi hàm có đối số, người dùng có thể truyền thiếu đối số, dẫn đến lỗi. Vì thế, đối số mặc định là một giải pháp cho vấn đề này.

Nếu truyền đủ đối số, hàm sẽ lấy đối số bạn truyền để tính toán
 

Khi truyền thiếu đối số, hàm sẽ tự động lấy giá trị mặc định để tính toán.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. 

Ví dụ:

// Hàm chứa đối số mặc định

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

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

function setThongTin($ten, $tuoi = "không rõ") { "Vận tốc bằng: $van_toc m/s";

}  
 

echo "Tên: $ten - Tuổi $tuoi";

Kết quả:

Vận tốc bằng: 16.666666666667 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).

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

VI.3. Đối số mặc định của hàm = $quang_duong / $thoi_gian;

function setThongTin($ten, $tuoi = "không rõ") { "Vận tốc bằng: $van_toc m/s";

echo "Tên: $ten - Tuổi $tuoi";

Bây giờ, chúng ta thử gọi hàm và truyền vào cho nó đầy đủ đối số:("1000 mét"60);
 

// Gọi hàm có truyền đối số đầy đủ

Vận tốc bằng: 16.666666666667 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).

VI.3. Đối số mặc định của hàm
 

Trong nhiều trường hợp gọi hàm có đối số, người dùng có thể truyền thiếu đối số, dẫn đến lỗi. Vì thế, đối số mặc định là một giải pháp cho vấn đề này.

Nếu truyền đủ đối số, hàm sẽ lấy đối số bạn truyền để tính toán declare(strict_types=1);
 

Khi truyền thiếu đối số, hàm sẽ tự động lấy giá trị mặc định để tính toán.

Nếu truyền đủ đối số, hàm sẽ lấy đối số bạn truyền để tính toán declare(strict_types=1);

Khi truyền thiếu đối số, hàm sẽ tự động lấy giá trị mặc định để tính toán.

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

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

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

echo "Tên: $ten - Tuổi $tuoi";

Bây giờ, chúng ta thử gọi hàm và truyền vào cho nó đầy đủ đối số:("1000 mét"60);
 

// Gọi hàm có truyền đối số đầy đủ

setThongTin("Ngọc Anh", 18);  

Bây giờ, thử truyền thiếu đối số tuổi xem thế nào nhé:

// Cố tình truyền thiếu đối số

setThongTin("Vũ Hà");  

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 "Tên: $ten - Tuổi $tuoi";

Bây giờ, chúng ta thử gọi hàm và truyền vào cho nó đầy đủ đối số: tinhVanToc(100060);
 

Kết quả:

Vận tốc bằng: 16.666666666667 m/s  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 ý: 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).

VI.3. Đối số mặc định của hàm

Trong nhiều trường hợp gọi hàm có đối số, người dùng có thể truyền thiếu đối số, dẫn đến lỗi. Vì thế, đối số mặc định là một giải pháp cho vấn đề này.

Nếu truyền đủ đối số, hàm sẽ lấy đối số bạn truyền để tính toán declare(strict_types=1);

Khi truyền thiếu đối số, hàm sẽ tự động lấy giá trị mặc định để tính toán.

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 "Tên: $ten - Tuổi $tuoi";

Bây giờ, chúng ta thử gọi hàm và truyền vào cho nó đầy đủ đối số: tinhVanToc(100060);
 

// Gọi hàm có truyền đối số đầy đủ

setThongTin("Ngọc Anh", 18);  

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

}

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);  

Kết quả: tinhVanToc(100060);
 

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.

Để biến đối số hàm thành tham chiếu, chúng ta sử dụng toán tử ?>75: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 $diem hiện tại

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

$value += 3; += 3;

echo tinhVanToc(1000, 60);  

$diem = 4; = 4;

congDiem($diem);($diem);

Kết quả:

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. $diem;
 

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.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.

Để biến đối số hàm thành tham chiếu, chúng ta sử dụng toán tử ?>75:superglobals trong PHP thông qua bất kỳ hàm, lớp hoặc tệp nào.

// Biến $diem hiện tại$_SERVER, $GLOBALS, $_REQUEST, $_POST, $_GET, $_FILES, $_ENV, $_COOKIE, $_SESSION.

// có giá trị là:

echo $diem;   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.

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. $_SERVER["SCRIPT_NAME"];

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.

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

VII.1. $_SERVER trong PHP
 

?>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.

?>77 trả về đường dẫn của tập lệnh hiện tại:

echo $_SERVER["SCRIPT_NAME"];

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

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

// Kết quả (ví dụ): /my-web/test.php  >
 

?>78 trả về Host header từ request hiện tại:

// Kết quả (ví dụ): localhost   'config.php';

Thông tin này rất hữu ích khi bạn có nhiều hình ảnh trên máy chủ của mình và cần phải chuyển trang web sang máy chủ lưu trữ khác. '

Hướng dẫn php series - loạt php
';
 

// Kết quả (ví dụ): /my-web/test.php  >
 

?>78 trả về Host header từ request hiện tại:

// Kết quả (ví dụ): localhost  tại đây)

Thông tin này rất hữu ích khi bạn có nhiều hình ảnh trên máy chủ của mình và cần phải chuyển trang web sang máy chủ lưu trữ khác.

Thay vì thay đổi đường dẫn cho từng hình ảnh, bạn có thể làm như sau:$_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 đã.

Tạo một tệp ?>79, chứa đường dẫn đến hình ảnh của bạn:input và một nút submit.

?>  

// Hàm tính vận tốcform action="welcome.php" method="post">

Sử dụng tệp ?>79 trong các tập lệnh của bạn:p>Tên: <input type="text" name="name" />p>

require 'config.php'; p>Tuổi: <input type="text" name="age" />p>

// Hàm tính vận tốcp><input type="submit" name="submit" value="Gửi" />p>

echo '';  form>
 

Đến đây, đường dẫn đến hình ảnh của bạn bây giờ là động. Nó sẽ tự động thay đổi nếu bạn thay đổi Host.

Hướng dẫn php series - loạt php

Còn có rất nhiều thông tin liên quan đến SERVER mà bạn có thể khai thác thông qua biến ?>76 (Chi tiết tham khảo tại đây)Gửi, trong trường hợp này nó gửi đến file ?>85

VII.2. Form trong PHP

Trong PHP, có hai khái niệm rất quan trọng đó là $_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 đã.

Ví dụ dưới đây cho thấy một biểu mẫu HTML đơn giản bao gồm hai trường input và một nút submit.

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

File index.php echo $_POST["name"]; ?> <br/>

Tên:  echo $_POST["age"]; ?>

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

echo '';  html>
 

Đến đây, đường dẫn đến hình ảnh của bạn bây giờ là động. Nó sẽ tự động thay đổi nếu bạn thay đổi Host.Gửi, kết quả chương trình điều hướng chúng ta đến trang ?>85

Hướng dẫn php series - loạt php

Còn có rất nhiều thông tin liên quan đến SERVER mà bạn có thể khai thác thông qua biến ?>76 (Chi tiết tham khảo tại đây)$_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.

VII.2. Form trong PHP

Trong PHP, có hai khái niệm rất quan trọng đó là $_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 đã.

Ví dụ dưới đây cho thấy một biểu mẫu HTML đơn giản bao gồm hai trường input và một nút submit.GETPOST.

File index.php

Tên: 

Tuổi: 

 

Kết quả ta có form như sau:

Hãy chú ý thuộc tính ?>83 trong phần tử ?>84 chỉ định rằng dữ liệu sẽ được gửi đến đâu khi nhấn Gửi, trong trường hợp này nó gửi đến file ?>85

Và các phần tử trong form HTML có thuộc tính index.php6, nó sẽ được sử dụng khi truy cập dữ liệu bằng PHP.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).

Bây giờ, khi chúng ta có một biểu mẫu HTML với thuộc tính ?>83 chỉ định sau khi submit thì sẽ được chuyển hướng, xử lý ở đâu. Chúng ta có thể truy cập dữ liệu biểu mẫu đã bằng cách sử dụng mảng liên kết ?>88.

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 series - loạt php

 

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>

?>   "Chào bạn " . $_SESSION["name"];

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

body>

Tên: html>
 

Tuổi: 

Hướng dẫn php series - loạt php

 

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.
  • // Lưu dữ liệu sessionHTTP (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.

$_SESSION["name"] = "Ngọc Anh";Lưu ý: Tham số name là bắt buộc. Các tham số khác là tùy chọn

?>  

> 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. = "Ngọc Anh";

Bây giờ, c

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

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. = "Ngọc Anh";

Bây giờ, c

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

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

DOCTYPE html>

<html>

<body>

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

Sử dụng mảng siêu cấp echo05 của PHP để đặt các biến session.

// Bắt đầu session "Tên người dùng: "$_COOKIE['user'];

// Lưu dữ liệu session

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

body>

Tên: html>
 

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

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.ĐỪ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

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).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");   = 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.
  • 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.

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í 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 = fopen("sinh-vien.txt", "w"); = fopen("sinh-vien.txt""w");

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

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

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

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

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

// Đóng file

fclose($myfile);  ($myfile);
 

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

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:

Hướng dẫn php series - loạt php

> 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ạiLư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

Nếu bạn muốn nối nội dung vào một tệp (đã có dữ liệu sẵn), bạn cần mở tệp đó ở chế độ append.append.

Ví dụ:

// Mở file và cho phép ghi

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

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

$txt = "Ngọc Anh\n";  = "Thu Hương\n";

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

// Đóng file

fclose($myfile);  ($myfile);
 

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

Hướng dẫn php series - loạt php

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:

> 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

Nếu bạn muốn nối nội dung vào một tệp (đã có dữ liệu sẵn), bạn cần mở tệp đó ở chế độ append.

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

Ví dụ:

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

// Thêm dữ liệu vào file vừa mở

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

$txt = "Thu Hương\n";

Bây giờ, sau khi chạy chương trình ta mở lại file echo53 lên, kết quả được như sau:($handle$email."\n");

// Đóng file

fclose($myfile);  ($handle);

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

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:>
 

> 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ạiform method="post">

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

> 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ạiinput type="submit" name="submit" value="Đăng ký liên hệ" />

VIII.2. Thêm vào một fileform>
 

Nếu bạn muốn nối nội dung vào một tệp (đã có dữ liệu sẵn), bạn cần mở tệp đó ở chế độ append.

Hướng dẫn php series - loạt php

Ví dụ:

Hướng dẫn php series - loạt php

// Thêm dữ liệu vào file vừa mở

$txt = "Thu Hương\n"; 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.

Bây giờ, sau khi chạy chương trình ta mở lại file echo53 lên, kết quả được như sau:

Về cơ bản, khi thêm vào một tệp bằng chế độ echo54, con trỏ tệp được đặt ở cuối tệp, đảm bảo rằng tất cả dữ liệu mới được thêm vào cuối tệp.

Hãy thử làm một ví dụ thực tế lấy dữ liệu từ form và lưu vào file echo55:

Tạo file echo56 và viết code như sau:

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

// Kiểm tra nếu tồn tại dữ liệu thì lưu vào file

// Lấy email và khách hàng nhập

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

// Mở file để ghi $line . ", ";

// Thêm email vào cuối file
 

fwrite($handle, $email."\n");

Hướng dẫn php series - loạt php

fclose($handle);

Về cơ bản, khi thêm vào một tệp bằng chế độ echo54, con trỏ tệp được đặt ở cuối tệp, đảm bảo rằng tất cả dữ liệu mới được thêm vào cuối tệp.

Hãy thử làm một ví dụ thực tế lấy dữ liệu từ form và lưu vào file echo55:

Tạo file echo56 và viết code như sau:

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

// Kiểm tra nếu tồn tại dữ liệu thì lưu vào file

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

$i = 1; = 1;

// Kiểm tra nếu tồn tại dữ liệu thì lưu vào file

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

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

echo $line; $line;

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

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

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

echo ", "; ", ";

}

$i++;++;

}  
 

Kết quả ta được:

Hướng dẫn php series - loạt php

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. (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:

Hướng dẫn php series - loạt php

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.

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.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.

Đị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.

// 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 "Đang học bài..."; "Đang học bài...";

}

}  
 

  • Kết quả ta được:
  • 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: 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)

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.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.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.

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.

Đị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.

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

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

// 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 "Đang học bài..."; $this -> ten . " đang học bài...";

}

Tên của lớp có thể bắt đầu bằng một chữ cái hoặc một dấu gạch dưới _

Theo sau là chữ cái, số hoặc dấu gạch dưới.

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

Best Pratice: 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)

Chú ý từ khóa echo64 ở phía trước của phương thức echo65 nó là một chỉ định phạm vi hiển thị.

Từ khóa echo64 chỉ định rằng thành viên có thể được truy cập từ bất kỳ đâu trong chương trình. -> ten = "Ngọc Anh";

> 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.

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

echo ""; "
"
;

Như vậy, thông qua lớp, chúng ta đã tạo được bản thiết kế. Bây giờ, để tạo được đối tượng thì chúng ta tiếp tục đi sang phần tiếp theo...

IX.2. Object trong PHP -> hocBai();
 

Quá trình tạo một đối tượng của một lớp được gọi là khởi tạo.

Để khởi tạo một đối tượng của một lớp, hãy sử dụng từ khóa new, như trong ví dụ dưới đây:
Ngọc Anh đang học bài
 

Trong đoạn mã trên, echo67 là một đối tượng của lớp echo68.

Để truy cập các thuộc tính và phương thức của một đối tượng, hãy sử dụng ký hiệu mũi tên echo69, như trong ví dụ sau:

Câu lệnh này xuất ra giá trị của thuộc tính echo70 cho echo67. Nếu bạn muốn gán giá trị cho một thuộc tính, hãy sử dụng toán tử gán echo72 như cách bạn gán giá trị cho biến.

Ví dụ: Ta điều chỉnh lại ví dụ trên như sau:

// 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 "Đang học bài..."; $this -> ten . " đang học bài...";

}

Tên của lớp có thể bắt đầu bằng một chữ cái hoặc một dấu gạch dưới _

Theo sau là chữ cái, số hoặc dấu gạch dưới.

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

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

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

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

$sv2 -> ten = "Vũ Hà"; -> ten = "Vũ Hà";

// Gọi phương thức của $sv1

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

echo "";  "
"
;

// Gọi phương thức của $sv2

$sv2 -> hocBai();   -> hocBai();
 

Kết quả:

Như bạn thấy đó, echo73 tham chiếu đến đối tượng đang gọi, chính vì thế gọi từ đối tượng echo67 và echo78 sẽ cho kết quả khác nhau.

Điều này cũng cho chúng ta thấy rằng, các đối tượng khác nhau sẽ có giá trị thuộc tính khác nhau.

IX.3. Constructor và Destructor

PHP cung cấp cho chúng ta một phương thức sử dụng để khởi tạo các giá trị ban đầu cho lớp, đó là echo79.

Phương thức echo79 được gọi tự động bất cứ khi nào một đối tượng mới được khởi tạo.

> Lưu ý: echo79 bắt đầu bằng hai dấu gạch dướiLưu ý: echo79 bắt đầu bằng hai dấu gạch dưới

File echo82

class SinhVien { SinhVien {

// Phương thưc khởi tạo

public function __construct () {  function __construct () {

echo "Đã tạo đối tượng mới"; "Đã tạo đối tượng mới";

}

}

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

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

Thông thường, phương thức echo79 được sử dụng để khởi tạo giá trị ban đầu mà đối tượng cần. Nó chấp nhận các tham số để nhận các giá trị khi khởi tạo đối tượng.

Ví dụ:

public $ten;  $ten;

public $tuoi; $tuoi;

// Phương thức khởi tạo

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

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

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

}

}

$sv1 = new SinhVien();  

Kết quả khi chạy chương trình trên ta được: = new SinhVien("Ngọc Anh"18);

Thông thường, phương thức echo79 được sử dụng để khởi tạo giá trị ban đầu mà đối tượng cần. Nó chấp nhận các tham số để nhận các giá trị khi khởi tạo đối tượng. = new SinhVien("Vũ Hà"19);

Ví dụ:

public $ten;  $sv1 -> ten . " " . $sv1 -> tuoi . " tuổi";

echo ""; "";

// Phương thức khởi tạo $sv2 -> ten . " " . $sv2 -> tuoi . " tuổi";
 

Kết quả:

Như bạn thấy đó, echo73 tham chiếu đến đối tượng đang gọi, chính vì thế gọi từ đối tượng echo67 và echo78 sẽ cho kết quả khác nhau.

Điều này cũng cho chúng ta thấy rằng, các đối tượng khác nhau sẽ có giá trị thuộc tính khác nhau. = new SinhVien("Ngọc Anh"18);
 

IX.3. Constructor và DestructorLư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.

PHP cung cấp cho chúng ta một phương thức sử dụng để khởi tạo các giá trị ban đầu cho lớp, đó là echo79.destructor là phương thức tự động được gọi khi đối tượng bị hủy.

class SinhVien { SinhVien {

Phương thức echo79 được gọi tự động bất cứ khi nào một đối tượng mới được khởi tạo.

public function __destruct() { function __destruct() {

> Lưu ý: echo79 bắt đầu bằng hai dấu gạch dưới "Đối tượng đã bị hủy";

}

}

$sv1 = new SinhVien();  

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

Kết quả:

Như bạn thấy đó, echo73 tham chiếu đến đối tượng đang gọi, chính vì thế gọi từ đối tượng echo67 và echo78 sẽ cho kết quả khác nhau.

Điều này cũng cho chúng ta thấy rằng, các đối tượng khác nhau sẽ có giá trị thuộc tính khác nhau.

IX.3. Constructor và Destructor

PHP cung cấp cho chúng ta một phương thức sử dụng để khởi tạo các giá trị ban đầu cho lớp, đó là echo79.($sv1);
 

Phương thức echo79 được gọi tự động bất cứ khi nào một đối tượng mới được khởi tạo. 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ó.

> Lưu ý: echo79 bắt đầu bằng hai dấu gạch dưới

File echo82

// Phương thưc khởi tạo

public function __construct () {

echo "Đã tạo đối tượng mới";lớp con (sub-class). Lớp cho kế thừa và lớp cha (parent-class).

}

}

$sv1 = new SinhVien();  

class DongVat { DongVat {

public $ten; $ten;

Kết quả khi chạy chương trình trên ta được: function an() {

Thông thường, phương thức echo79 được sử dụng để khởi tạo giá trị ban đầu mà đối tượng cần. Nó chấp nhận các tham số để nhận các giá trị khi khởi tạo đối tượng. "Đang ăn...";

}

}

// Class con

class Cho extends DongVat { Cho extends DongVat {

$sv1 = new SinhVien();  

}

$sv1 = new SinhVien();  

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

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

Thông thường, phương thức echo79 được sử dụng để khởi tạo giá trị ban đầu mà đối tượng cần. Nó chấp nhận các tham số để nhận các giá trị khi khởi tạo đối tượng. -> an();
 

Kết quả:

Như bạn thấy đó, echo73 tham chiếu đến đối tượng đang gọi, chính vì thế gọi từ đối tượng echo67 và echo78 sẽ cho kết quả khác nhau.

Điều này cũng cho chúng ta thấy rằng, các đối tượng khác nhau sẽ có giá trị thuộc tính khác nhau.

IX.3. Constructor và Destructor

> 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.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.

Trong kế thừa chúng ta có một khái niệm rất quan trọng, đó là Interface.Interface.

Một Interface chỉ định danh sách các phương thức mà một lớp phải triển khai.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ể.

File Hello World!06

interface IDongVat { IDongVat {

public function an(); function an();

}  
 

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

Ví dụ: Ta tiếp tục tạo hai lớp echo88 và Hello World!10 để triển khai Interface Hello World!04

File Hello World!06

interface IDongVat { IDongVat {

public function an(); function an();

}

class Cho implements IDongVat {  Cho implements IDongVat {

// Triển khai cụ thể phương thức của interface

public function an() { function an() {

echo "Đang gặm xương "; "Đang gặm xương 
"
;

}

}

class Meo implements IDongVat { Meo implements IDongVat {

// Triển khai cụ thể phương thức của interface

public function an() { function an() {

echo "Đang gặm xương "; "Đang ăn cá 
"
;

}

}

class Cho implements IDongVat {

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

// Triển khai cụ thể phương thức của interface

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

echo "Đang gặm xương ";

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

// Triển khai cụ thể phương thức của interface

echo "Đang gặm xương "; -> an();
 

}

echo "Đang ăn cá ";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

// Tạo đối tượng từ lớp Cho

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

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

// Tạo đối tượng từ lớp Meo

$mimi -> an();  

Kết quả:

}  
 

Các phương thức của Interface chỉ được triển khai cụ thể khi có class triển khai Interface đó.lớp trừu tượng (hay còn gọi là abstract class).

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

  • Ví dụ: Ta tiếp tục tạo hai lớp echo88 và Hello World!10 để triển khai Interface Hello World!04
  • }
  • class Cho implements IDongVat {
  • // Triển khai cụ thể phương thức của interface

echo "Đang gặm xương ";

abstract class Cho { class Cho {

private $mauLong; $mauLong;

}

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

echo "Đang ăn cá ";

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

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

}

echo "Đang ăn cá ";

// Tạo đối tượng từ lớp Cho function getMauLong() {

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

}

}

class Cho implements IDongVat {

class ChoCo extends Cho { ChoCo extends Cho {

public function an() { function an() {

// Triển khai cụ thể phương thức của interface "Ăn cơm chan canh";

}

}

class Cho implements IDongVat {

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

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

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

// In ra màu lông

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

echo ""; "
"
;

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

$cauVang -> an();   -> 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.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.

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 đó.

Một thuộc tính hoặc phương thức static được truy cập bằng cách sử dụng toán tử phân giải phạm vi Hello World!18 giữa tên lớp và tên thuộc tính / phương thức.

File Hello World!19

// Thuộc tính static

static $tuoi = 18; $tuoi = 18;

}

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

// mà không cần tạo đối tượng

echo SinhVien::$tuoiToiThieu;   SinhVien::$tuoiToiThieu;
 

Kết quả:

Để truy cập thuộc tính static trong một phương thức static, chúng ta sử dụng từ khóa Hello World!20, như sau:

File Hello World!21

// Thuộc tính static

static $tuoiToiThieu = 18; $tuoiToiThieu = 18;

}

static function thongBao() { function thongBao() {

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

// mà không cần tạo đối tượng

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

echo SinhVien::$tuoiToiThieu;  

}

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

// mà không cần tạo đối tượng

echo SinhVien::$tuoiToiThieu;  ::thongBao();
 

Kết quả:

Để truy cập thuộc tính static trong một phương thức static, chúng ta sử dụng từ khóa Hello World!20, như sau:Lư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.

File Hello World!21finnal 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.

// Phương thức static

// trong phương thức static

}

final function thongBao () { function thongBao () {

// Gọi phương thức static "Đây là một sinh viên";

echo SinhVien::$tuoiToiThieu;  

}

// Truy cập thuộc tính static SinhVienNamNhat extends SinhVien {

// mà không cần tạo đối tượng

echo SinhVien::$tuoiToiThieu;  

public function thongBao () { function thongBao () {

Kết quả: "Đây là một sinh viên năm nhất";

echo SinhVien::$tuoiToiThieu;  

Kết quả:
 

Để truy cập thuộc tính static trong một phương thức static, chúng ta sử dụng từ khóa Hello World!20, như sau:

final class SinhVien {} class SinhVien {}

File Hello World!21

// Phương thức static SinhVienNamNhat extends SinhVien {}
 

// trong phương thức staticLư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

}

// Gọi phương thức statictự 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.

SinhVien::thongBao();  

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

Như vậy, chúng ta đã truy cập phương thức static thành công mà không cần tạo đối tượng từ class SinhVien.> Lư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.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...

Từ khóa finnal 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.học PHP chuyên sâu với chuyên gia doanh nghiệp thì...

Ví dụ sau đây chứng minh rằng một phương thức final là không thể bị ghi đè trong lớp con:


File Hello World!22

// Phương thức final

echo "Đây là một sinh viên";

class SinhVienNamNhat extends SinhVien {

// Chương trình sẽ ném ra một lỗi nghiêm trọng

// nếu cố gắng ghi đè phương thức static

echo "Đây là một sinh viên năm nhất";

}  

Chạy chương trình trên, PHP sẽ ném ra một lỗi nghiêm trọng. Không tin thì bạn thử xem!