Hướng dẫn php main - php chính

Khái niệm về php

PHP (Hypertext Preprocessor) là ngôn ngữ script trên server được thiết kế để xây dựng các trang Web động. Mã PHP có thể thực thi trên Webserver để tạo ra mã HTML và xuất ra trình duyệt web. (Hypertext Preprocessor) là ngôn ngữ script trên server được thiết kế để xây dựng các trang Web động. Mã PHP có thể thực thi trên Webserver để tạo ra mã HTML và xuất ra trình duyệt web.

Show

PHP là mã nguồn mở, miễn phí và theo như đánh giá của người dùng thì nó là 1 ngôn ngữ dễ học và dễ sử dụng và mã nguồn khi chạy trên các hệ điều hành khác nhau thì không phải sửa lại nhiều. là mã nguồn mở, miễn phí và theo như đánh giá của người dùng thì nó là 1 ngôn ngữ dễ học và dễ sử dụng và mã nguồn khi chạy trên các hệ điều hành khác nhau thì không phải sửa lại nhiều.

Về kết nối với các cơ sở dữ liệu(Mysql, Sql Server, Oracle) thì rất đơn giản

Cài đặt

Để chạy một ứng dụng của PHP bạn cần phải cài PHP, Apache, và 1 hệ quản trị CSDL.PHP bạn cần phải cài PHP, Apache, và 1 hệ quản trị CSDL.

Bạn có thể cài riêng lẻ từng phần và cũng có thể cài một gói tích hợp sẵn cả 3 phần.

 sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin

Sau khi cài đặt xong chúng ta cần khởi động lại apache bằng lệnh sau:

sudo /etc/init.d/apache2 restart

Cần config servername

vi /etc/apache2/httpd_conf
ServerName localhost

kiểm tra apache2 có làm việc không

localhost:8080/index

Màn hình thông báo thành công sẽ như sau:

Hướng dẫn php main - php chính

File index sẽ tự động được tạo ra khi chúng ta cài đặt xong PHPPHP

Chúng ta kiểm tra xem cấu hình của PHP bằng cách vào thư mụcPHP bằng cách vào thư mục

sudo cd /var/www

Tạo file vi info.PHP và paste dòng sau vào file đóPHP và paste dòng sau vào file đó


Và chạy

sudo /etc/init.d/apache2 restart
3

Hình ảnh:

Hướng dẫn php main - php chính

Các lỗi thường gặp khi cài đặt PHPPHP

Lỗi bị chiếm mất cổng default 80

Xem cổng 80 đã bị dùng chưa

Hình ảnh:

Hướng dẫn php main - php chính

Do cài đặt apache2 mạc định cổng 80 nhưng khi máy bạn cổng 80 đã bị ứng dụng khác dùng thì khi chạy localhost sẽ có thông báo lỗi như sau:

Để khắc phục lỗi này thì ta cần config lại cổng khác cho apache2 ví dụ như cổng 8080

Vào file

sudo /etc/init.d/apache2 restart
4 sửa lại

Listen 80 thành
Listen 8080

Vào file

sudo /etc/init.d/apache2 restart
5 sửa tất cả 80 thành 8080

Trong file

sudo /etc/init.d/apache2 restart
6 ta include thêm 2 dòng sau

Include /etc/apache2/sites-enabled/
Include /etc/apache2/sites-available/

Sau khi sửa xong ta restart lại apache2

Lỗi tiếp theo là lỗi và quyền permission

Hình ảnh:

Hướng dẫn php main - php chính

Do cài đặt apache2 mạc định cổng 80 nhưng khi máy bạn cổng 80 đã bị ứng dụng khác dùng thì khi chạy localhost sẽ có thông báo lỗi như sau:

  1. Để khắc phục lỗi này thì ta cần config lại cổng khác cho apache2 ví dụ như cổng 8080
Vào file
sudo /etc/init.d/apache2 restart
4 sửa lại

Listen 80 thành
Listen 8080
PHP như sau

sudo /etc/init.d/apache2 restart
8

Vào file

sudo /etc/init.d/apache2 restart
5 sửa tất cả 80 thành 8080

sudo /etc/init.d/apache2 restart
9

Trong file

sudo /etc/init.d/apache2 restart
6 ta include thêm 2 dòng sau


Sau khi sửa xong ta restart lại apache2PHP để kết thúc một dọng lệnh thì phải có dấu ";" ở cuối Ví dụ


  • Lỗi tiếp theo là lỗi và quyền permission
sudo /etc/init.d/apache2 restart
0

Thông thường ta xét quền to nhất cho tất cả các thư mục bằng lệnh sau:

sudo /etc/init.d/apache2 restart
7

  • Những kiến thức căn bản về PHP
  • Cú pháp
sudo /etc/init.d/apache2 restart
1

Cú pháp chính của PHP như sau

Cách ngắn ngọn như sau

sudo /etc/init.d/apache2 restart
2

vi /etc/apache2/httpd_conf ServerName localhost 0 // cú pháp này giống với ruby và ASP

Mặc dù có nhiều cách thể hiện mã lệnh nhưng thường người sử dụng dùng cách 1 và đặc biệt trong PHP để kết thúc một dọng lệnh thì phải có dấu ";" ở cuối Ví dụ

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.

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 main - php chính

> 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

vi /etc/apache2/httpd_conf
ServerName localhost
1 và kết thúc bằng
vi /etc/apache2/httpd_conf
ServerName localhost
2

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à

vi /etc/apache2/httpd_conf
ServerName localhost
3 (đọc là ê cô) để xuất ra đoạn text
vi /etc/apache2/httpd_conf
ServerName localhost
4 đến một trang web.

File

vi /etc/apache2/httpd_conf
ServerName localhost
5

<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

vi /etc/apache2/httpd_conf
ServerName localhost
6

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!

Vì thế, mình khuyên bạn chỉ nên sử dụng

vi /etc/apache2/httpd_conf
ServerName localhost
9 để viết code PHP

Bạn cũng có thể sử dụng các thẻ PHP viết tắt

localhost:8080/index
0 miễn là chúng được hỗ trợ bởi máy chủ (Tuy nhiên cách chuẩn nhất vẫn là
vi /etc/apache2/httpd_conf
ServerName localhost
9)

Và nếu bạn viết trong file có đuôi là

localhost:8080/index
2 ví dụ file
localhost:8080/index
3 thì bạn có thể không viết thẻ đóng
vi /etc/apache2/httpd_conf
ServerName localhost
2

Ví dụ như thế này:

II.3. Echo

Không sử dụng phương thức 

localhost:8080/index
5 giống như với JAVA hay Python, PHP có một hàm đặc trưng là 
vi /etc/apache2/httpd_conf
ServerName localhost
3, thường được được sử dụng để xuất văn bản.JAVA hay Python, PHP có một hàm đặc trưng là 
vi /etc/apache2/httpd_conf
ServerName localhost
3, thường được được sử dụng để xuất văn bản.

Trong thực tế, echo cũng không hoàn toàn là một hàm, nó là một cấu trúc ngôn ngữ. Vì thế, nó không yêu cầu bắt buộc phải có dấu ngoặc đơn

localhost:8080/index
7

Dĩ nhiên, nếu nội dung cần xuất ra phức tạp, dấu ngoặc đơn

localhost:8080/index
7 cũng rất hữu ích.

Thử xuất một đoạn text:

echo "Học PHP Cơ bản";  "Học PHP Cơ bản";

?>  >
 

> Lưu ý: Đoạn text phải nằm trong dấu nháy đơn

localhost:8080/index
9 hoặc dấu nháy kép
sudo cd /var/www
0Lưu ý: Đoạn text phải nằm trong dấu nháy đơn
localhost:8080/index
9 hoặc dấu nháy kép
sudo cd /var/www
0

Mỗi câu lệnh php đều phải kết thúc bằng một dấu chấm phảy ;

echo "Học PHP Cơ bản"; "Học PHP Cơ bản";

echo "Lập trình PHP"; "Lập trình PHP";

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

?>  >
 

> Lưu ý: Đoạn text phải nằm trong dấu nháy đơn

localhost:8080/index
9 hoặc dấu nháy kép
sudo cd /var/www
0

Mỗi câu lệnh php đều phải kết thúc bằng một dấu chấm phảy ;

echo "Học PHP Cơ bản";copy > paste đoạn code sau vào:

echo "Lập trình PHP";html lang="en">

echo "Lập trình PHP";head>

echo "Tự học PHP"; title>Tự học PHPtitle>

echo "Lập trình PHP";head>

echo "Lập trình PHP";body>

echo "Lập trình PHP";div>

echo "Lập trình PHP";

echo "Hello World"; "

Hello World

";

echo "Tự học PHP"; >

echo "Lập trình PHP";div>

echo "Lập trình PHP";body>

echo "Tự học PHP"; html>
 

Nếu không câu lệnh đó sẽ tạo ra lỗi.Lưu ý:

sudo cd /var/www
8 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
sudo cd /var/www
2 là thư mục dự án chứa file
vi /etc/apache2/httpd_conf
ServerName localhost
5 và được đặt trong thư mục

1 (Như thế này: 

2)

Bạn cũng có thể nhét code HTML vào trong câu lệnh

vi /etc/apache2/httpd_conf
ServerName localhost
3.

Hướng dẫn php main - php chính

Ví dụ: Tạo thư mục dự án

sudo cd /var/www
2 trong
sudo cd /var/www
3. Sau đó, trong
sudo cd /var/www
2 ta tạo file
vi /etc/apache2/httpd_conf
ServerName localhost
5, copy > paste đoạn code sau vào: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

3
 hoặc chạy thẳng file
localhost:8080/index
2
đều được.

Ngoài ra, trước đây chúng ta có thể nhúng PHP thông qua thẻ vi /etc/apache2/httpd_conf ServerName localhost 7

Tự học PHP

?>

 

Chạy file trên web theo đường dẫn

sudo cd /var/www
6hoặc
sudo cd /var/www
7> Lưu ý:
sudo cd /var/www
8 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
sudo cd /var/www
2 là thư mục dự án chứa file
vi /etc/apache2/httpd_conf
ServerName localhost
5 và được đặt trong thư mục

1 (Như thế này: 

2)

Kết quả ta được như sau:

> 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


3 hoặc chạy thẳng file
localhost:8080/index
2 đều được.

I.4. Comment trong PHP "

Tự học PHP

";

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

echo "niithanoi.edu.vn"; "

niithanoi.edu.vn

";

?>  >
 

> Lưu ý: Đoạn text phải nằm trong dấu nháy đơn

localhost:8080/index
9 hoặc dấu nháy kép
sudo cd /var/www
0

Hướng dẫn php main - php chính

Mỗi câu lệnh php đều phải kết thúc bằng một dấu chấm phảy ;

I.4. Comment trong PHP "

Tự học 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.

        trong PHP

    */

echo "niithanoi.edu.vn"; "

niithanoi.edu.vn

";

?>  >
 

> Lưu ý: Đoạn text phải nằm trong dấu nháy đơn

localhost:8080/index
9 hoặc dấu nháy kép
sudo cd /var/www
0Mẹo #1: Thông thường, chúng ta cũng thường xuyên comment code để tìm và gỡ lỗi:

Mỗi câu lệnh php đều phải kết thúc bằng một dấu chấm phảy ;

echo "niithanoi.edu.vn"; "

niithanoi.edu.vn

";

?>  >
 

> Lưu ý: Đoạn text phải nằm trong dấu nháy đơn

localhost:8080/index
9 hoặc dấu nháy kép
sudo cd /var/www
0

Mỗi câu lệnh php đều phải kết thúc bằng một dấu chấm phảy ;Mẹo #2: Chọn đoạn code cần comment và nhấn Ctrl + ? để comment code.

echo "Học PHP Cơ bản";

echo "Lập trình PHP";

echo "Tự học PHP";

Nếu không câu lệnh đó sẽ tạo ra lỗi.

Bạn cũng có thể nhét code HTML vào trong câu lệnh

vi /etc/apache2/httpd_conf
ServerName localhost
3.

Ví dụ: Tạo thư mục dự án

sudo cd /var/www
2 trong
sudo cd /var/www
3. Sau đó, trong
sudo cd /var/www
2 ta tạo file
vi /etc/apache2/httpd_conf
ServerName localhost
5, copy > paste đoạn code sau vào:

  • echo "Lập trình PHP";chữ cái hoặc dấu gạch dưới
    Listen 80 thành
    Listen 8080
    
    1
  • Tự học PHPkhông được bắt đầu bằng số
  • ?>chữ, số và dấu gạch dưới (A-z, 0-9 và _)
  •  phân biệt chữ hoa chữ thường (
    Listen 80 thành
    Listen 8080
    
    2 và
    Listen 80 thành
    Listen 8080
    
    3 là khác nhau)

Chạy file trên web theo đường dẫn

sudo cd /var/www
6hoặc
sudo cd /var/www
7> Lưu ý:
sudo cd /var/www
8 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
sudo cd /var/www
2 là thư mục dự án chứa file
vi /etc/apache2/httpd_conf
ServerName localhost
5 và được đặt trong thư mục

1 (Như thế này: 

2)

Kết quả ta được như sau: = "Ngọc Anh";

$tuoi = 18; = 18;

> 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


3 hoặc chạy thẳng file
localhost:8080/index
2 đều được. $ten;
 

I.4. Comment trong PHP

Trong code PHP, comment (chú tích) là một dòng không được thực thi.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ó.

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"constant) tương tự như các biến. Nhưng chúng không thể thay đổi hoặc

Listen 80 thành
Listen 8080
5 sau khi chúng đã được định nghĩa.

Comment một dòng bắt đầu bằng


5

Ví dụ: Tạo file


6 trong thư mục
sudo cd /var/www
2, dán đoạn code sau vào

echo "Tự học PHP";

// Đây là comment 1 dòng(name, value, case-insensitive);
 

Chạy file với đường dẫn


8, kết quả ta được: 

  • Còn comment nhiều dòng trong PHP thì bạn sử dụng /* và */, ví dụ:
  • Listen 80 thành
    Listen 8080
    
    8: Chỉ định giá trị của hằng số
  • Listen 80 thành
    Listen 8080
    
    9: 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à
    Include /etc/apache2/sites-enabled/
    Include /etc/apache2/sites-available/
    
    0

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

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

echo DOMAIN_NAME; DOMAIN_NAME;

// Kết quả: niithanoi.edu.vn  
 

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

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

echo domain_name; domain_name;

// Kết quả: niithanoi.edu.vn  
 

Ví dụ, định nghĩa hằng số không phân biệt chữ hoa, chữ thường:Lưu ý: Không cần ký hiệu $ trước tên hằng số

// Đị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ố

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.

Các kiểu dữ liệu được PHP hỗ trợ: String, Integer, Float, Boolean, Array, Object, NULL, Resource. là một chuỗi các ký tự, chẳng hạn như

Include /etc/apache2/sites-enabled/
Include /etc/apache2/sites-available/
1

Kiểu dữ liệu String

String là một chuỗi các ký tự, chẳng hạn như

Include /etc/apache2/sites-enabled/
Include /etc/apache2/sites-available/
1

Một chuỗi có thể là bất kỳ văn bản nào trong một tập hợp các dấu nháy kép

Include /etc/apache2/sites-enabled/
Include /etc/apache2/sites-available/
2 hoặc dấu nháy đơn
Include /etc/apache2/sites-enabled/
Include /etc/apache2/sites-available/
3. = "Học PHP";

// Sử dụng nháy kép " " để tạo chuỗi

$chuoi1 = "Học PHP"; = ' niithanoi.edu.vn';
 

// Sử dụng nháy đơn ' ' để tạo chuỗi

$chuoi2 = ' niithanoi.edu.vn';  

Để nối hai chuỗi trong PHP thì bạn có thể sử dụng dấu chấm

Include /etc/apache2/sites-enabled/
Include /etc/apache2/sites-available/
4, ví dụ:

Kết quả: 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:

  • Kiểu dữ liệu Int
  • Int 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:
  • int không được chứa dấu phẩy hoặc khoảng trống

int không được có dấu thập phân = 42// Số nguyên dương

int có thể là âm hoặc dương = -42// Số nguyên âm
 

$soNguyen1 = 42; // Số nguyên dươngLưu ý: Trong PHP, các biến có thể chứa các kiểu dữ liệu khác nhau.

$soNguyen2 = -42; // Số nguyên âm  

> Lưu ý: Trong PHP, các biến có thể chứa các kiểu dữ liệu khác nhau. 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 Float

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à kiểu dữ liệu logic, nó có hai trạng thái:

Include /etc/apache2/sites-enabled/
Include /etc/apache2/sites-available/
5 hoặc
Include /etc/apache2/sites-enabled/
Include /etc/apache2/sites-available/
0

Kiểu dữ liệu Boolean

Boolean là kiểu dữ liệu logic, nó có hai trạng thái:

Include /etc/apache2/sites-enabled/
Include /etc/apache2/sites-available/
5 hoặc
Include /etc/apache2/sites-enabled/
Include /etc/apache2/sites-available/
0

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

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

$x = 10; = 10;

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

// Số nguyên = $input + $x;

// Tính tổng

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

// Xuất tổngLư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

Include /etc/apache2/sites-enabled/
Include /etc/apache2/sites-available/
7 thành kiểu
Include /etc/apache2/sites-enabled/
Include /etc/apache2/sites-available/
8 và tính tổng.

echo $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

Include /etc/apache2/sites-enabled/
Include /etc/apache2/sites-available/
7 thành kiểu
Include /etc/apache2/sites-enabled/
Include /etc/apache2/sites-available/
8 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 đó. = "Ngọc Anh";

Ví dụ:

function getTen() { getTen() {

echo $ten; $ten;

$ten = "Ngọc Anh";

// Tạo một hàm

}();
 

// Gọi hàm

getTen();  

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

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

Ví dụ:

function getTen() { getTen() {

$ten = "Ngọc Anh";

global $ten; $ten;

echo $ten; $ten;

$ten = "Ngọc Anh";

// Tạo một hàm

}();
 

$chuoi2 = ' niithanoi.edu.vn';  

Để nối hai chuỗi trong PHP thì bạn có thể sử dụng dấu chấm Include /etc/apache2/sites-enabled/ Include /etc/apache2/sites-available/ 4, ví dụ:

Kết quả:

Kiểu dữ liệu Int

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

int không được chứa dấu phẩy hoặc khoảng trống = "Tự học PHP";

int không được có dấu thập phân $$a;
 

$chuoi2 = ' niithanoi.edu.vn';  

Để nối hai chuỗi trong PHP thì bạn có thể sử dụng dấu chấm

Include /etc/apache2/sites-enabled/
Include /etc/apache2/sites-available/
4, ví dụ:

Kết quả:

Kiểu dữ liệu Int

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

Hướng dẫn php main - php chính

int không được chứa dấu phẩy hoặc khoảng trống

int không được có dấu thập phân

int có thể là âm hoặc dương

Hướng dẫn php main - php chính

Một biến được khai báo bên ngoài một hàm có phạm vi toàn cục.

$b = 2; = 2;

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ụ: $a + $b// Kết quả: 7

$ten = "Ngọc Anh";

echo $a - $b; // Kết quả: 3 $a - $b// Kết quả: 3

// Phép nhân

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

// Phép chia

echo $a / $b; // Kết quả: 2.5 $a / $b// Kết quả: 2.5

// Phép chia lấy phần dư

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

Ở đây, chỉ có toán tử


4 là hơi khác một chút. Toán tử

4 được sử dụng để tính phép chia lấy phần dư.

Tăng ++ và Giảm --

Trong lập trình, hoạt động tăng, giảm một đơn vị được sử dụng rất phổ biến. Nhưng thay vì viết là


6 thì chúng ta sử dụng toán tử

7

  • Các toán tử
    
    
    7 được sử dụng để tăng giá trị của một biến.
  • Các toán tử
    
    
    9 được sử dụng để giảm giá trị của một biến.

Chúng ta có thể đặt trước hoặc sau tùy theo nhu cầu:

$b = 2; = 2;

// Đặt sau

$a++;++;

$a--;--;

// Đặt trước

++$b;$b;

--$b;  $b;
 

Vậy đặt trước, đặt sau thì có gì khác nhau?

Cũng rất đơn giản thôi, ví dụ


0 được hiểu là tăng sau:tăng sau:

  • Đầu tiên, trả về giá trị hiện tại của
    
    
    1 và sử dụng nó để tính toán biểu thức (nếu có)
  • Sau đó mới tăng
    
    
    1 lên 
    
    
    3

Ví dụ:

echo $a++ + 2; // Kết quả: 7 $a++ + 2// Kết quả: 7

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

Bạn thấy không trong câu lệnh


4 PHP Engine vẫn lấy giá trị

1 là

6 để tính toán biểu thức.

Sau đó nó mới tăng


1 lên

3 đơn vị và trả về cho biến

1.

Tương tự như vậy,

sudo /etc/init.d/apache2 restart
00 có nghĩa là tăng trước:tăng trước:

echo ++$a + 2; // Kết quả: 8 ++$a + 2// Kết quả: 8

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

Bạn thấy không trong câu lệnh


4 PHP Engine vẫn lấy giá trị

1 là

6 để tính toán biểu thức.

Sau đó nó mới tăng 1 lên 3 đơn vị và trả về cho biến 1.

Tương tự như vậy,

sudo /etc/init.d/apache2 restart
00 có nghĩa là tăng trước:

$b = a; = a;

echo ++$a + 2; // Kết quả: 8 $a// Kết quả: 5

Toán tử


9 thì cũng tương tự thôi. Đặt trước biến
sudo /etc/init.d/apache2 restart
02 thì là giảm trước, đặt sau biến
sudo /etc/init.d/apache2 restart
03 thì là giảm sau. $b// Kết quả: 5
 

III.2. Toán tử gán

Hướng dẫn php main - php chính

Ví dụ:

echo $a++ + 2; // Kết quả: 7

$a *= 2; *= 2;

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

Bạn thấy không trong câu lệnh 4 PHP Engine vẫn lấy giá trị 1 là 6 để tính toán biểu thức.

Sau đó nó mới tăng


1 lên

3 đơn vị và trả về cho biến

1.

Tương tự như vậy,

sudo /etc/init.d/apache2 restart
00 có nghĩa là tăng trước:

Hướng dẫn php main - php chính

echo ++$a + 2; // Kết quả: 8

Toán tử


9 thì cũng tương tự thôi. Đặt trước biến
sudo /etc/init.d/apache2 restart
02 thì là giảm trước, đặt sau biến
sudo /etc/init.d/apache2 restart
03 thì là giảm sau.

  • III.2. Toán tử gán

  • Toán tử gán là toán tử được sử dụng gán giá trị cho biến:

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

Hướng dẫn php main - php chính


echo $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 main - php chính

// Sử dụng *=

$b = 3; = 3;

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

echo $a; // Kết quả: 10   "Đúng";

III.3. Toán tử so sánhelse {

echo "Sai"; "Sai";

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ề

Include /etc/apache2/sites-enabled/
Include /etc/apache2/sites-available/
5 và ngược lại sẽ trả về
Include /etc/apache2/sites-enabled/
Include /etc/apache2/sites-available/
0

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

Tuy nhiên, cần chú ý là toán tử sudo /etc/init.d/apache2 restart 06 và sudo /etc/init.d/apache2 restart 07

Trong khi

sudo /etc/init.d/apache2 restart
06 so sánh giá trị, không quan tâm đến kiểu dữ liệu. Nghĩa là
sudo /etc/init.d/apache2 restart
09 sẽ trả về
Include /etc/apache2/sites-enabled/
Include /etc/apache2/sites-available/
5

Nhưng

sudo /etc/init.d/apache2 restart
07 so sánh cả giá trị và kiểu dữ liệu,
sudo /etc/init.d/apache2 restart
12 sẽ trả về
Include /etc/apache2/sites-enabled/
Include /etc/apache2/sites-available/
0

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

III.4. Toán tử Logic = "Thu Hương";

Toán tử logic được sử dụng để kết hợp các câu lệnh điều kiện = "Vũ Hà";
 

Ví dụ: Kiểm tra xem, nếu


1 lớn hơn
sudo /etc/init.d/apache2 restart
15 và

1 lớn hơn
sudo /etc/init.d/apache2 restart
17 thì in ra
sudo /etc/init.d/apache2 restart
18. Ngược lại thì in ra
sudo /etc/init.d/apache2 restart
19

echo "Đúng";

} else {

}  

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 ( ) = array("A""B""C""D""E");
 

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.

Hướng dẫn php main - php chính

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

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

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

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

$sinhVien3 = "Vũ Hà";  [3] = "D";

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.[4] = "E";
 

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

IV.1. Mảng chỉ số $arr[1]; // Kết quả: B
 

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

IV.2. Mảng liên kết

Mảng liên kết trong PHP cũng là một mảng nhưng mảng liên kết chứa các cặp

sudo /etc/init.d/apache2 restart
22 trong PHP cũng là một mảng nhưng mảng liên kết chứa các cặp
sudo /etc/init.d/apache2 restart
22

Cũng có hai cách để tạo mảng liên kết:

$arr = array("Ngọc Anh" => 18, "Thu Hương" => 19, "Vũ Hà" => 20);   = array("Ngọc Anh" => 18"Thu Hương" => 19"Vũ Hà" => 20);
 

Hoặc:

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

$arr["Thu Hương"] = 19;["Thu Hương"] = 19;

$arr["Vũ Hà"] = 20;  ["Vũ Hà"] = 20;
 

> Lưu ý: Trong mảng liên kết, chúng ta sử dụng ký hiệu

sudo /etc/init.d/apache2 restart
23 để gán giá trị cho keyLưu ý: Trong mảng liên kết, chúng ta sử dụng ký hiệu
sudo /etc/init.d/apache2 restart
23 để gán giá trị cho key

Và để truy cập giá trị đó, chúng ta sử dụng key thay vì index như mảng chỉ số.

$arr = array("Ngọc Anh" => 18, "Thu Hương" => 19, "Vũ Hà" => 20);  = array("Ngọc Anh" => 18"Thu Hương" => 19"Vũ Hà" => 20);

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

  • Đối với mảng hai chiều, bạn cần hai chỉ số để chọn một phần tử
  • Đối với mảng ba chiều, bạn cần ba chỉ số để chọn một phần tử

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

Kết quả:

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

if ($age  ($age < 14)

"Giảng viên" => array("Thành Luân", "Trọng Triều", "Văn Quyết"),  "Chưa đủ tuổi yêu";

else

"Khánh" => 20, "Lớn rồi";
 

Kết quả:

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

Trong PHP, bạn cũng có thể sử dụng câu lệnh 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.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ú pháp if elseif else:

// Code thực thi

// Nếu điều kiện đánh giá là true

} elseif (condition) {elseif (condition) {

// Code thực thi

// Nếu điều kiện đánh giá là true

} elseif (condition) {else {

// Code thực thi

// Nếu điều kiện đánh giá là true

} elseif (condition) {
 

// Nếu điều kiện trên đánh giá là true

if ($age  ($age < 14) {

} else { "Chưa đủ tuổi yêu";

// Nếu điều kiện trên đánh giá là falseelseif ($age >= 14 && $age < 18) {

}   "Thanh niên";

} elseif (condition) {else {

// Nếu điều kiện trên đánh giá là true "Trưởng thành";

} elseif (condition) {
 

Kết quả:

// Nếu điều kiện trên đánh giá là true

} else {

// Nếu điều kiện trên đánh giá là false

  • while
  • }  
  • for
  • Ví dụ: Kiểm tra tuổi để xem là Trưởng thành, Thanh niên hay chưa đủ tuổi yêu

echo "Chưa đủ tuổi yêu";

} elseif ($age >= 14 && $age while thực thi một khối code miễn là điều kiện vẫn được đánh giá là đúng (true)

echo "Thanh niên";

echo "Trưởng thành";

Ở ví dụ trên, chúng ta sử dụng toán tử

sudo /etc/init.d/apache2 restart
26 để đánh giá tuổi nằm trong khoảng >=14 tuổi và < 18 tuổi.

} elseif (condition) {
 

// Nếu điều kiện trên đánh giá là trueLư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!

} else {Vòng lặp while chạy với điều kiện 

sudo /etc/init.d/apache2 restart
27 nhỏ hơn 
sudo /etc/init.d/apache2 restart
28 (
sudo /etc/init.d/apache2 restart
29). Vòng chạy đầu tiên biến 
sudo /etc/init.d/apache2 restart
27 là 

3 (
sudo /etc/init.d/apache2 restart
32). .

// Nếu điều kiện trên đánh giá là false

while($i ($i < 7) {

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

$i++;++;

} elseif (condition) {
 

Kết quả:

// Nếu điều kiện trên đánh giá là true
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
 

} else {

// Nếu điều kiện trên đánh giá là falsedo 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.

}  

Ví dụ: Kiểm tra tuổi để xem là Trưởng thành, Thanh niên hay chưa đủ tuổi yêu

echo "Chưa đủ tuổi yêu";

} elseif ($age >= 14 && $age 

echo "Thanh niên";while (condition);
 

echo "Trưởng thành";

  • Ở ví dụ trên, chúng ta sử dụng toán tử
    sudo /etc/init.d/apache2 restart
    
    26 để đá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.

do { {

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

$i++;++;

Ví dụ: Kiểm tra tuổi để xem là Trưởng thành, Thanh niên hay chưa đủ tuổi yêuwhile ($i < 7);
 

echo "Chưa đủ tuổi yêu";

// Nếu điều kiện trên đánh giá là true
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
 

} else {

// Nếu điều kiện trên đánh giá là false

do { {

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

$i++;++;

Ví dụ: Kiểm tra tuổi để xem là Trưởng thành, Thanh niên hay chưa đủ tuổi yêuwhile ($i < 0);
 

echo "Chưa đủ tuổi yêu";

} elseif ($age >= 14 && $age 

echo "Thanh niên";

echo "Trưởng thành";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í dụ trên, chúng ta sử dụng toán tử sudo /etc/init.d/apache2 restart 26 để đá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.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.

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

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

// Code thực thi

} elseif (condition) {
 

echo "Trưởng thành";

  • Ở ví dụ trên, chúng ta sử dụng toán tử
    sudo /etc/init.d/apache2 restart
    
    26 để đá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ư:

do whileLư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

vi /etc/apache2/httpd_conf
ServerName localhost
6.

foreach

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

V.3. Vòng lặp while "Vòng lặp thứ: $i
"
;

} elseif (condition) {
 

Kết quả:

// Nếu điều kiện trên đánh giá là true
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
 

} else {

  • // Nếu điều kiện trên đánh giá là false
  • }  
  • Sau đó, bắt đầu vòng lặp tiếp theo... cho đến khi điều kiện đánh giá là sai.
  • Nếu sai, thoát vòng 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ả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.

V.6. Vòng lặp foreach trong PHP

Vòng lặp foreach 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. 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.

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

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

// Code thực thi

}

// Lặp qua mảng liên kết

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

// Code thực thi

}
 

// Lặp qua mảng liên kết

  • }  
  • Trong đó:
  • sudo /etc/init.d/apache2 restart
    
    47 là mảng bạn muốn lặp qua

sudo /etc/init.d/apache2 restart
48 là đại diện cho giá trị (phần tử) trong mảng chỉ số

  • sudo /etc/init.d/apache2 restart
    
    49 là đại diện cho cặp
    sudo /etc/init.d/apache2 restart
    
    50 trong mảng liên kết

Sử dụng foreach lặp qua mảng chỉ số:

Trên mỗi lần lặp, giá trị của phần tử hiện tại được gán cho

sudo /etc/init.d/apache2 restart
48 và con trỏ mảng được di chuyển qua từng phần tử cho đến phần tử mảng cuối cùng.
$sinhVien = array("Ngọc Anh""Hà""Hương");

Ví dụ sau minh họa một vòng lặp xuất ra các giá trị của mảng

sudo /etc/init.d/apache2 restart
52.

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

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

}
 

// Lặp qua mảng liên kết

  • }  

Trong đó:

$sinhVien = array( = array(

sudo /etc/init.d/apache2 restart
47 là mảng bạn muốn lặp qua => 18,

sudo /etc/init.d/apache2 restart
48 là đại diện cho giá trị (phần tử) trong mảng chỉ số => 19,

sudo /etc/init.d/apache2 restart
49 là đại diện cho cặp
sudo /etc/init.d/apache2 restart
50 trong mảng liên kết => 22

Sử dụng foreach lặp qua mảng chỉ số:

Ví dụ sau minh họa một vòng lặp xuất ra các giá trị của mảng

sudo /etc/init.d/apache2 restart
52.

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

// Mảng chỉ số$sinhVien = array("Ngọc Anh", "Hà", "Hương");  "$ten$tuoi tuổi"."
"
;

}
 

// Lặp qua mảng liên kết
Hà: 19 tuổi
Hương: 22 tuổi
 

}  

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

sudo /etc/init.d/apache2 restart
47 là mảng bạn muốn lặp qua

case value1: value1:

sudo /etc/init.d/apache2 restart
48 là đại diện cho giá trị (phần tử) trong mảng chỉ số

break;;

case value2: value2:

sudo /etc/init.d/apache2 restart
49 là đại diện cho cặp
sudo /etc/init.d/apache2 restart
50 trong mảng liên kết

break;;

Sử dụng foreach lặp qua mảng chỉ số:

default::

Trên mỗi lần lặp, giá trị của phần tử hiện tại được gán cho

sudo /etc/init.d/apache2 restart
48 và con trỏ mảng được di chuyển qua từng phần tử cho đến phần tử mảng cuối cùng.

Ví dụ sau minh họa một vòng lặp xuất ra các giá trị của mảng

sudo /etc/init.d/apache2 restart
52.

}
 

// Lặp qua mảng liên kết

}  

Trong đó:

sudo /etc/init.d/apache2 restart
47 là mảng bạn muốn lặp qua

switch ($today) { ($today) {

case "Mon": "Mon":

sudo /etc/init.d/apache2 restart
48 là đại diện cho giá trị (phần tử) trong mảng chỉ số "Thứ Hai";

break;;

case "Tue": "Tue":

sudo /etc/init.d/apache2 restart
49 là đại diện cho cặp
sudo /etc/init.d/apache2 restart
50 trong mảng liên kết "Thứ Ba";

break;;

Sử dụng foreach lặp qua mảng chỉ số: "Wed":

Trên mỗi lần lặp, giá trị của phần tử hiện tại được gán cho

sudo /etc/init.d/apache2 restart
48 và con trỏ mảng được di chuyển qua từng phần tử cho đến phần tử mảng cuối cùng. "Thứ Tư";

break;;

case "Thu": "Thu":

Ví dụ sau minh họa một vòng lặp xuất ra các giá trị của mảng

sudo /etc/init.d/apache2 restart
52. "Thứ Năm";

break;;

case "Fri": "Fri":

// Mảng chỉ số$sinhVien = array("Ngọc Anh", "Hà", "Hương");  "Thứ Sáu";

break;;

case "Sat": "Sat":

// Lặp qua từng phần tử với foreach "Thứ Bảy";

break;;

Sử dụng lặp foreach trên mảng liên kết: "Sun":

Mỗi lần lặp, mỗi cặp 

sudo /etc/init.d/apache2 restart
50 tương ứng của mảng sẽ được gán cho biến 
sudo /etc/init.d/apache2 restart
54 và 
sudo /etc/init.d/apache2 restart
48, lặp lại qua từng phần tử cho đến cuối mảng. "Chủ Nhật";

break;;

default::

Còn đây là ví dụ sử dụng vòng lặp foreach để lặp qua mảng liên kết: "Thứ không hợp lệ";

}
 

// Lặp qua mảng liên kết

}  

Trong đó:

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

switch ($today) { ($today) {

case "Mon": "Mon":

sudo /etc/init.d/apache2 restart
48 là đại diện cho giá trị (phần tử) trong mảng chỉ số "Thứ Hai";

break;;

case "Tue": "Tue":

sudo /etc/init.d/apache2 restart
49 là đại diện cho cặp
sudo /etc/init.d/apache2 restart
50 trong mảng liên kết "Thứ Ba";

break;;

case "Wed": "Wed":

Sử dụng foreach lặp qua mảng chỉ số: "Thứ Tư";

break;;

case "Thu": "Thu":

Ví dụ sau minh họa một vòng lặp xuất ra các giá trị của mảng

sudo /etc/init.d/apache2 restart
52. "Thứ Năm";

break;;

case "Fri": "Fri":

// Mảng chỉ số$sinhVien = array("Ngọc Anh", "Hà", "Hương");  "Thứ Sáu";

break;;

case "Sat": "Sat":

// Lặp qua từng phần tử với foreach "Thứ Bảy";

Sử dụng lặp foreach trên mảng liên kết:

case "Sun": "Sun":

Mỗi lần lặp, mỗi cặp 

sudo /etc/init.d/apache2 restart
50 tương ứng của mảng sẽ được gán cho biến 
sudo /etc/init.d/apache2 restart
54 và 
sudo /etc/init.d/apache2 restart
48, lặp lại qua từng phần tử cho đến cuối mảng. "Chủ Nhật";

break;;

default::

Còn đây là ví dụ sử dụng vòng lặp foreach để lặp qua mảng liên kết: "Thứ không hợp lệ";

}
 

// Lặp qua mảng liên kếtNote: Mình không có thêm thẻ

sudo /etc/init.d/apache2 restart
61 để 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.

}  

Trong đó:

switch ($today) { ($today) {

case "Mon": "Mon":

case "Tue": "Tue":

case "Wed": "Wed":

case "Thu": "Thu":

case "Fri": "Fri":

echo "Ngày làm việc";  "Ngày làm việc";

break;;

case "Sat": "Sat":

case "Sun": "Sun":

echo "Cuối tuần"; "Cuối tuần";

break;;

default::

echo "Lỗi dữ liệu"; "Lỗi dữ liệu";

}  
 

Còn trường hợp

sudo /etc/init.d/apache2 restart
57 trong switch sẽ được thực thi khi không có case khớp, ví dụ:

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ệ";

}  
 

Còn trường hợp

sudo /etc/init.d/apache2 restart
57 trong switch sẽ được thực thi khi không có case khớp, ví dụ:Lưu ý: Trường hợp
sudo /etc/init.d/apache2 restart
57 là tùy chọn, bạn có thể bỏ qua nó.

switch ($today) {

echo "Thứ Hai";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.

echo "Thứ Ba";

echo "Thứ Tư";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ứ Năm";

echo "Thứ Sáu"; ($i 0$i <= 5$i++) {

echo "Thứ Bảy"; $i."
"
;

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

echo "Chủ Nhật"; "i = $i. Thoát vòng lặp for";

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

break;;

> Lưu ý: Trường hợp

sudo /etc/init.d/apache2 restart
57 là tùy chọn, bạn có thể bỏ qua nó.

}  
 

Còn trường hợp

sudo /etc/init.d/apache2 restart
57 trong switch sẽ được thực thi khi không có case khớp, ví dụ:
1
2
3
i = 3. Thoát vòng lặp for
 

switch ($today) {

echo "Thứ Hai";

echo "Thứ Ba";break, chúng ta còn có từ khóa continue.

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

echo "Thứ Năm";

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

echo "Thứ Sáu";

echo "Thứ Bảy";

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

continue;;

> Lưu ý: Trường hợp

sudo /etc/init.d/apache2 restart
57 là tùy chọn, bạn có thể bỏ qua nó.

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

}  
 

V.8. Câu lệnh break và continueLưu ý: Bạn có thể sử dụng từ khóa

sudo /etc/init.d/apache2 restart
73 trong tất cả các cấu trúc lặp.

Ý nghĩa của câu lệnh 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.

Tuy nhiên, không phải chỉ có thể sử dụng ở trong switch case.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 break cũng có thể sử dụng trong vòng lặp for, while, do while, foreach. 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.

Chúng ta sẽ làm ví dụ đơn giản như ở bên dưới: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.

for ($i = 0; $i 

echo $i."";

echo "i = $i. Thoát vòng lặp for";

// Thoát khỏi vòng lặp forheader thì bạn chỉ cần vào file

sudo /etc/init.d/apache2 restart
76 để thay đổi và PHP tự động áp dụng trên toàn bộ trang web.

}

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

Học lập trình PHP

';

Như bạn thấy, chương trình không in ra

sudo /etc/init.d/apache2 restart
67 mà thoát ngay khỏi vòng lặp từ lúc
sudo /etc/init.d/apache2 restart
27 bằng
sudo /etc/init.d/apache2 restart
69.>
 

Nếu bạn đặt ở bên ngoài tập lệnh (Không đặt trong vòng lặp, switch...), lệnh

sudo /etc/init.d/apache2 restart
58 sẽ dừng tập lệnh ngay (không thực thi các câu lệnh bên dưới nữa)

Ngoài break, chúng ta còn có từ khóa continue.body>

Ngoài break, chúng ta còn có từ khóa continue.

Ngoài break, chúng ta còn có từ khóa continue. include 'header.php'?>

Ý nghĩa như tên của nó, continue giúp nhảy ngay sang vòng lặp tiếp theop>Học PHP cơ bảnp>

Ví dụ: Cũng sử dụng ví dụ trên, nhưng khi

sudo /etc/init.d/apache2 restart
71 bằng
sudo /etc/init.d/apache2 restart
69, chúng ta sẽ sử dụng
sudo /etc/init.d/apache2 restart
73 để bỏ qua lần lặp đó để sang ngay lần lặp tiếp theo.p>Học PHP OOPp>

Ngoài break, chúng ta còn có từ khóa continue.body>

Ý nghĩa như tên của nó, continue giúp nhảy ngay sang vòng lặp tiếp theohtml>
 

Ví dụ: Cũng sử dụng ví dụ trên, nhưng khi

sudo /etc/init.d/apache2 restart
71 bằng
sudo /etc/init.d/apache2 restart
69, chúng ta sẽ sử dụng
sudo /etc/init.d/apache2 restart
73 để bỏ qua lần lặp đó để sang ngay lần lặp tiếp theo.

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

// nhảy sang vòng lặp tiếp theoLưu ý: Các tệp được include dựa trên đường dẫn tệp.

Như bạn thấy đó, kết quả là

sudo /etc/init.d/apache2 restart
69 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
sudo /etc/init.d/apache2 restart
73 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ó.include, 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 includerequire, 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.

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.

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

sudo /etc/init.d/apache2 restart
76,
sudo /etc/init.d/apache2 restart
77 hoặc
sudo /etc/init.d/apache2 restart
78 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
    sudo /etc/init.d/apache2 restart
    
    76 để thay đổi và PHP tự động áp dụng trên toàn bộ trang web.
    : Hàm được dựng sẵn, chúng ta chỉ việc gọi để sử dụng nó (Ví dụ: array(), asort()...)

  • Giả sử, chúng ta tạo một file
    sudo /etc/init.d/apache2 restart
    
    76 như sau:
    : 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 đó:

  • sudo /etc/init.d/apache2 restart
    
    84: Là từ khóa để thông báo rằng chúng ta đang tạo ra một hàm
  • sudo /etc/init.d/apache2 restart
    
    85: 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

sudo /etc/init.d/apache2 restart
86.

// Code của hàm

echo "Chào bạn"; "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ó:

// Code của hàm

echo "Chào bạn"; "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ố

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

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

Các tham số được truyền vào hàm như các biến. = $x * $x;

echo $x; $x;

}  
 

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

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

// Gọi hàm(5); // Kết quả: 25
 

chaoHoi();  

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

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

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

VI.2. Hàm có tham số "Vận tốc bằng: $van_toc m/s";

}  
 

Đế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(100060);
 

chaoHoi();  

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

VI.2. Hàm có tham 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).

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

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ố. setThongTin($ten$tuoi = "không rõ") {

Các tham số được truyền vào hàm như các biến. "Tên: $ten - Tuổi $tuoi";

}  
 

Đế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ó:

}("Ngọc Anh"18);
 

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ố.("Vũ Hà");
 

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

$x = $x * $x;

Bây giờ, chúng ta có thể sử dụng hàm

sudo /etc/init.d/apache2 restart
87 để tính bình phương các số mà chúng ta muốn.

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

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

VI.2. Hàm có tham số "Vận tốc bằng: $van_toc m/s";

}  
 

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

chaoHoi();  

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

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

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

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ố. = $quang_duong / $thoi_gian;

VI.2. Hàm có tham số "Vận tốc bằng: $van_toc m/s";

}  

Đế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.("1000 mét"60);
 

Để sử dụng hàm, chúng ta phải gọi đến nó:

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.

Điều này sẽ dẫn tới kích hoạt lỗi nghiêm trọng, dừng thực thi chương trình nếu dữ liệu truyền vào không khớp. declare(strict_types=1);
 

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

Điều này sẽ dẫn tới kích hoạt lỗi nghiêm trọng, dừng thực thi chương trình nếu dữ liệu truyền vào không khớp. declare(strict_types=1);

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

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

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

tinhVanToc("1000 mét", 60);  

Dữ liệu truyền vào không khớp dẫn tới một lỗi nghiêm trọng.("1000 mét"60);
 

Điều này, bắt buộc lập trình viên phải lưu ý trong việc xử lý dữ liệu đầu vào để tránh các ngoại lệ không mong muốn, buộc mọi thứ phải hoạt động theo cách đã định.

VI.5. Return trong PHP7

Trong PHP, Một hàm có thể trả về một giá trị bằng cách sử dụng câu lệnh sudo /etc/init.d/apache2 restart 90.

Câu lệnh

sudo /etc/init.d/apache2 restart
90 sẽ dừng thực thi hàm và gửi giá trị trở lại lệnh gọi.

echo tinhVanToc(1000, 60);  

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;

tinhVanToc("1000 mét", 60);  

Dữ liệu truyền vào không khớp dẫn tới một lỗi nghiêm trọng. tinhVanToc(100060);
 

Điều này, bắt buộc lập trình viên phải lưu ý trong việc xử lý dữ liệu đầu vào để tránh các ngoại lệ không mong muốn, buộc mọi thứ phải hoạt động theo cách đã định.

VI.5. Return trong PHP7Lưu ý: Nếu bỏ qua

sudo /etc/init.d/apache2 restart
90, hàm về sẽ trả về giá trị
sudo /etc/init.d/apache2 restart
93. 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ự.

Trong PHP, Một hàm có thể trả về một giá trị bằng cách sử dụng câu lệnh

sudo /etc/init.d/apache2 restart
90.

Câu lệnh

sudo /etc/init.d/apache2 restart
90 sẽ dừng thực thi hàm và gửi giá trị trở lại lệnh gọi.

echo tinhVanToc(1000, 60);  

Điều này sẽ dẫn tới kích hoạt lỗi nghiêm trọng, dừng thực thi chương trình nếu dữ liệu truyền vào không khớp. declare(strict_types=1);

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

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;

tinhVanToc("1000 mét", 60);  

Dữ liệu truyền vào không khớp dẫn tới một lỗi nghiêm trọng. tinhVanToc(100060);
 

Điều này, bắt buộc lập trình viên phải lưu ý trong việc xử lý dữ liệu đầu vào để tránh các ngoại lệ không mong muốn, buộc mọi thứ phải hoạt động theo cách đã định.

VI.5. Return trong PHP7

Điều này sẽ dẫn tới kích hoạt lỗi nghiêm trọng, dừng thực thi chương trình nếu dữ liệu truyền vào không khớp. declare(strict_types=1);

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

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;

tinhVanToc("1000 mét", 60);  

Dữ liệu truyền vào không khớp dẫn tới một lỗi nghiêm trọng. tinhVanToc(100060);
 

Điều này, bắt buộc lập trình viên phải lưu ý trong việc xử lý dữ liệu đầu vào để tránh các ngoại lệ không mong muốn, buộc mọi thứ phải hoạt động theo cách đã định.

VI.5. Return trong PHP7

Trong PHP, Một hàm có thể trả về một giá trị bằng cách sử dụng câu lệnh

sudo /etc/init.d/apache2 restart
90.

Câu lệnh

sudo /etc/init.d/apache2 restart
90 sẽ dừng thực thi hàm và gửi giá trị trở lại lệnh gọi.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.

echo tinhVanToc(1000, 60);  

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

$value += 3; += 3;

tinhVanToc("1000 mét", 60);  

$diem = 4; = 4;

congDiem($diem);($diem);

Dữ liệu truyền vào không khớp dẫn tới một lỗi nghiêm trọng.

Điều này, bắt buộc lập trình viên phải lưu ý trong việc xử lý dữ liệu đầu vào để tránh các ngoại lệ không mong muốn, buộc mọi thứ phải hoạt động theo cách đã định.

VI.5. Return trong PHP7 $diem;
 

Điều này, bắt buộc lập trình viên phải lưu ý trong việc xử lý dữ liệu đầu vào để tránh các ngoại lệ không mong muốn, buộc mọi thứ phải hoạt động theo cách đã định.

VI.5. Return trong PHP7

Trong PHP, Một hàm có thể trả về một giá trị bằng cách sử dụng câu lệnh

sudo /etc/init.d/apache2 restart
90.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.

Câu lệnh

sudo /etc/init.d/apache2 restart
90 sẽ dừng thực thi hàm và gửi giá trị trở lại lệnh gọi.superglobals trong PHP thông qua bất kỳ hàm, lớp hoặc tệp nào.

echo tinhVanToc(1000, 60);  $_SERVER, $GLOBALS, $_REQUEST, $_POST, $_GET, $_FILES, $_ENV, $_COOKIE, $_SESSION.

Kết quả:

> Lưu ý: Nếu bỏ qua

sudo /etc/init.d/apache2 restart
90, hàm về sẽ trả về giá trị
sudo /etc/init.d/apache2 restart
93. 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à 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.

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

sudo /etc/init.d/apache2 restart
90.

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

Ví dụ:
 

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

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

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

Include /etc/apache2/sites-enabled/
Include /etc/apache2/sites-available/
8, như sau:
 

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.

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

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

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

sudo /etc/init.d/apache2 restart
96:>
 

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

// có giá trị là: 'config.php';

echo $diem;   '

Hướng dẫn php main - php chính
';
 

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

sudo /etc/init.d/apache2 restart
96:>
 

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

// có giá trị là:tại đây)

echo $diem;  

VII. Siêu biến trong PHP$_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 đã.

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.input và một nút submit.

File

vi /etc/apache2/httpd_conf
ServerName localhost
5

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 đã.form action="welcome.php" method="post">

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

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

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 đã.p><input type="submit" name="submit" value="Gửi" />p>

Tên: form>
 

Tuổi: 

Hướng dẫn php main - php chính

 Gửi, trong trường hợp này nó gửi đến file

vi /etc/apache2/httpd_conf
ServerName localhost
06

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

Hãy chú ý thuộc tính

vi /etc/apache2/httpd_conf
ServerName localhost
04 trong phần tử
vi /etc/apache2/httpd_conf
ServerName localhost
05 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
vi /etc/apache2/httpd_conf
ServerName localhost
06

Và các phần tử trong form HTML có thuộc tính

Listen 80 thành
Listen 8080
7, nó sẽ được sử dụng khi truy cập dữ liệu bằng 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 đã.body>

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

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

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 đã.body>

Tên: html>
 

Tuổi: Gửi, kết quả chương trình điều hướng chúng ta đến trang

vi /etc/apache2/httpd_conf
ServerName localhost
06

Hướng dẫn php main - php chính

 $_POST chứa các cặp

vi /etc/apache2/httpd_conf
ServerName localhost
15 /
Listen 80 thành
Listen 8080
8. Trong đó,
vi /etc/apache2/httpd_conf
ServerName localhost
15 là
Listen 80 thành
Listen 8080
7 của trường tương ứng và
Listen 80 thành
Listen 8080
8 là giá trị mà người dùng nhập vào.

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

Hãy chú ý thuộc tính vi /etc/apache2/httpd_conf ServerName localhost 04 trong phần tử vi /etc/apache2/httpd_conf ServerName localhost 05 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 vi /etc/apache2/httpd_conf ServerName localhost 06

Và các phần tử trong form HTML có thuộc tính

Listen 80 thành
Listen 8080
7, nó sẽ được sử dụng khi truy cập dữ liệu bằng PHP.GETPOST.

Bây giờ, khi chúng ta có một biểu mẫu HTML với thuộc tính

vi /etc/apache2/httpd_conf
ServerName localhost
04 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
vi /etc/apache2/httpd_conf
ServerName localhost
09.

File

vi /etc/apache2/httpd_conf
ServerName localhost
06

Chào bạn  

Tuổi: 

Bây giờ, trong file

vi /etc/apache2/httpd_conf
ServerName localhost
5 chúng ta thử điền tên
vi /etc/apache2/httpd_conf
ServerName localhost
12 và tuổi
vi /etc/apache2/httpd_conf
ServerName localhost
13 và nhấn nút Gửi, kết quả chương trình điều hướng chúng ta đến trang
vi /etc/apache2/httpd_conf
ServerName localhost
06

Mảng siêu cấp $_POST chứa các cặp vi /etc/apache2/httpd_conf ServerName localhost 15 / Listen 80 thành Listen 8080 8. Trong đó, vi /etc/apache2/httpd_conf ServerName localhost 15 là Listen 80 thành Listen 8080 7 của trường tương ứng và Listen 80 thành Listen 8080 8 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

Listen 80 thành
Listen 8080
7 để có thể sử dụng PHP để gọi đến.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).

VII.3. POST trong PHP

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

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.

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

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 đã.p><input type="submit" name="submit" value="Gửi" />p>

Tên: form>
 

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

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 đã.body>

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

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

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 đã.body>

Tên: html>
 

Tuổi: 

Hướng dẫn php main - php chính

 

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

Hãy chú ý thuộc tính
vi /etc/apache2/httpd_conf
ServerName localhost
04 trong phần tử
vi /etc/apache2/httpd_conf
ServerName localhost
05 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
vi /etc/apache2/httpd_conf
ServerName localhost
06Lư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.

Và các phần tử trong form HTML có thuộc tính Listen 80 thành Listen 8080 7, nó sẽ được sử dụng khi truy cập dữ liệu bằng PHP.

Bây giờ, khi chúng ta có một biểu mẫu HTML với thuộc tính

vi /etc/apache2/httpd_conf
ServerName localhost
04 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
vi /etc/apache2/httpd_conf
ServerName localhost
09.
(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.

File

vi /etc/apache2/httpd_conf
ServerName localhost
06

Chào bạn  

Tuổi: 

Bây giờ, trong file

vi /etc/apache2/httpd_conf
ServerName localhost
5 chúng ta thử điền tên
vi /etc/apache2/httpd_conf
ServerName localhost
12 và tuổi
vi /etc/apache2/httpd_conf
ServerName localhost
13 và nhấn nút Gửi, kết quả chương trình điều hướng chúng ta đến trang
vi /etc/apache2/httpd_conf
ServerName localhost
06

Mảng siêu cấp $_POST chứa các cặp

vi /etc/apache2/httpd_conf
ServerName localhost
15 /
Listen 80 thành
Listen 8080
8. Trong đó,
vi /etc/apache2/httpd_conf
ServerName localhost
15 là
Listen 80 thành
Listen 8080
7 của trường tương ứng và
Listen 80 thành
Listen 8080
8 là giá trị mà người dùng nhập vào.session được bắt đầu bằng cách sử dụng hàm
vi /etc/apache2/httpd_conf
ServerName localhost
25.

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

Listen 80 thành
Listen 8080
7 để có thể sử dụng PHP để gọi đến.

VII.3. POST trong PHP

session_start();();

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

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

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

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ủ.Lưu ý: Hàm

vi /etc/apache2/httpd_conf
ServerName localhost
25 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.

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.

// Start the session

session_start();();

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

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 đã.DOCTYPE html>

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 đã.html>

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 đã.body>

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

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). "Chào bạn " . $_SESSION["name"];

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

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 đã.body>

Tên: html>
 

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

Hướng dẫn php main - php chính

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

vi /etc/apache2/httpd_conf
ServerName localhost
21 thì chúng ta đổi thành
vi /etc/apache2/httpd_conf
ServerName localhost
22 xem sao nhé, file
vi /etc/apache2/httpd_conf
ServerName localhost
5:

  • Trong file
    vi /etc/apache2/httpd_conf
    ServerName localhost
    
    06 thì ta truy cập mảng siêu cấp $_GET để lấy dữ liệu:
  • 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
  • vi /etc/apache2/httpd_conf
    ServerName localhost
    
    38: Chỉ định đường dẫn máy chủ của cookie. Nếu được đặt thành
    vi /etc/apache2/httpd_conf
    ServerName localhost
    
    39, cookie sẽ có sẵn trong toàn trang web. Nếu được đặt thành
    vi /etc/apache2/httpd_conf
    ServerName localhost
    
    40, cookie sẽ chỉ có sẵn trong thư mục 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.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.
  • vi /etc/apache2/httpd_conf
    ServerName localhost
    
    41: Chỉ định tên miền của cookie. Ví dụ, để làm cho cookie có sẵn trên tất cả các miền phụ của
    vi /etc/apache2/httpd_conf
    ServerName localhost
    
    42, hãy thiết lập giá trị của tham số 
    vi /etc/apache2/httpd_conf
    ServerName localhost
    
    41 thành
    vi /etc/apache2/httpd_conf
    ServerName localhost
    
    44.
  • vi /etc/apache2/httpd_conf
    ServerName localhost
    
    45: Chỉ định xem cookie có chỉ được truyền qua kết nối an toàn HTTPS hay không.
    vi /etc/apache2/httpd_conf
    ServerName localhost
    
    46 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à
    vi /etc/apache2/httpd_conf
    ServerName localhost
    
    47.HTTPS hay không.
    vi /etc/apache2/httpd_conf
    ServerName localhost
    
    46 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à
    vi /etc/apache2/httpd_conf
    ServerName localhost
    
    47.
  • vi /etc/apache2/httpd_conf
    ServerName localhost
    
    48: Nếu được đặt thành
    vi /etc/apache2/httpd_conf
    ServerName localhost
    
    46, 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
    vi /etc/apache2/httpd_conf
    ServerName localhost
    
    48 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à
    vi /etc/apache2/httpd_conf
    ServerName localhost
    
    47.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
    vi /etc/apache2/httpd_conf
    ServerName localhost
    
    48 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à
    vi /etc/apache2/httpd_conf
    ServerName localhost
    
    47.

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

vi /etc/apache2/httpd_conf
ServerName localhost
52, với giá trị là
vi /etc/apache2/httpd_conf
ServerName localhost
53. 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

vi /etc/apache2/httpd_conf
ServerName localhost
54:

$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

vi /etc/apache2/httpd_conf
ServerName localhost
54: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

vi /etc/apache2/httpd_conf
ServerName localhost
54: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

vi /etc/apache2/httpd_conf
ServerName localhost
54: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

vi /etc/apache2/httpd_conf
ServerName localhost
54:

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

vi /etc/apache2/httpd_conf
ServerName localhost
54: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.

vi /etc/apache2/httpd_conf
ServerName localhost
55 cho phép tạo hoặc mở một tệp. Nếu bạn sử dụng
vi /etc/apache2/httpd_conf
ServerName localhost
55 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 (
vi /etc/apache2/httpd_conf
ServerName localhost
57) hoặc thêm (
vi /etc/apache2/httpd_conf
ServerName localhost
58).

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
    vi /etc/apache2/httpd_conf
    ServerName localhost
    
    55 cho phép tạo hoặc mở một tệp. Nếu bạn sử dụng
    vi /etc/apache2/httpd_conf
    ServerName localhost
    
    55 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 (
    vi /etc/apache2/httpd_conf
    ServerName localhost
    
    57) hoặc thêm (
    vi /etc/apache2/httpd_conf
    ServerName localhost
    
    58).
  • Ví dụ: Mở tệp
    vi /etc/apache2/httpd_conf
    ServerName localhost
    
    59 để 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.
  • vi /etc/apache2/httpd_conf
    ServerName localhost
    
    57: 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.
  • vi /etc/apache2/httpd_conf
    ServerName localhost
    
    58: Mở tệp chỉ để ghi. Tạo tệp mới nếu tệp không tồn tại

vi /etc/apache2/httpd_conf
ServerName localhost
62: Tạo tệp mới chỉ để ghi.

vi /etc/apache2/httpd_conf
ServerName localhost
63: Mở tệp để đọc / ghi.

vi /etc/apache2/httpd_conf
ServerName localhost
64: 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");

vi /etc/apache2/httpd_conf
ServerName localhost
65: Mở tệp để đọc / ghi. Tạo tệp mới nếu tệp không tồn tại

vi /etc/apache2/httpd_conf
ServerName localhost
66: 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

vi /etc/apache2/httpd_conf
ServerName localhost
67 để 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

vi /etc/apache2/httpd_conf
ServerName localhost
68.

// 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 main - php chính

$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

vi /etc/apache2/httpd_conf
ServerName localhost
70 sau khi thao tác xong.
vi /etc/apache2/httpd_conf
ServerName localhost
70 trả về
vi /etc/apache2/httpd_conf
ServerName localhost
46 nếu thành công hoặc
vi /etc/apache2/httpd_conf
ServerName localhost
47 nếu thất bại

// Đóng file

fclose($myfile);  append.

Ký hiệu

vi /etc/apache2/httpd_conf
ServerName localhost
69 được sử dụng khi viết các dòng mới.

vi /etc/apache2/httpd_conf
ServerName localhost
64: 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");

vi /etc/apache2/httpd_conf
ServerName localhost
65: Mở tệp để đọc / ghi. Tạo tệp mới nếu tệp không tồn tại

vi /etc/apache2/httpd_conf
ServerName localhost
66: 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

vi /etc/apache2/httpd_conf
ServerName localhost
68.

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

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

Hướng dẫn php main - php chính

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

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

vi /etc/apache2/httpd_conf
ServerName localhost
76:

Tạo file

vi /etc/apache2/httpd_conf
ServerName localhost
77 và viết code như sau:

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

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

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

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

// Mở file để ghi

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

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

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

// Đóng file

fclose($handle); ($handle);

}

?>  >
 

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

vi /etc/apache2/httpd_conf
ServerName localhost
76:form method="post">

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

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

vi /etc/apache2/httpd_conf
ServerName localhost
76:input type="submit" name="submit" value="Đăng ký liên hệ" />

 form>
 

Chạy file

vi /etc/apache2/httpd_conf
ServerName localhost
77 trên trình duyệt, điền email và nhấn Đăng ký liên hệ:

Hướng dẫn php main - php chính

Kết quả, mở thư mục dự án ta thấy có một file mới tên là

vi /etc/apache2/httpd_conf
ServerName localhost
76 được tạo ra, với nội dung như sau:

Hướng dẫn php main - php chính

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

vi /etc/apache2/httpd_conf
ServerName localhost
74 và in ra màn hình

File

vi /etc/apache2/httpd_conf
ServerName localhost
81

// Đọ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 main - php chính

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

vi /etc/apache2/httpd_conf
ServerName localhost
81

// Đọ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 main - php chính

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 main - php chính

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

vi /etc/apache2/httpd_conf
ServerName localhost
83, theo sau là tên lớp. Dấu ngoặc nhọn
sudo /etc/init.d/apache2 restart
25 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.

Trong đoạn mã trên,

vi /etc/apache2/httpd_conf
ServerName localhost
88 là một đối tượng của lớp
vi /etc/apache2/httpd_conf
ServerName localhost
89.

Để 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

vi /etc/apache2/httpd_conf
ServerName localhost
90, như trong ví dụ sau:

Câu lệnh này xuất ra giá trị của thuộc tính

vi /etc/apache2/httpd_conf
ServerName localhost
91 cho
vi /etc/apache2/httpd_conf
ServerName localhost
88. 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
vi /etc/apache2/httpd_conf
ServerName localhost
93 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 $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ừ

vi /etc/apache2/httpd_conf
ServerName localhost
94 là lạ đúng không?

Ở đây

vi /etc/apache2/httpd_conf
ServerName localhost
94 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

vi /etc/apache2/httpd_conf
ServerName localhost
94 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ừ

vi /etc/apache2/httpd_conf
ServerName localhost
94 là lạ đúng không?

Ở đây vi /etc/apache2/httpd_conf ServerName localhost 94 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

vi /etc/apache2/httpd_conf
ServerName localhost
94 giống như cách bạn sử dụng tên đối tượng bên ngoài lớp.

Ví dụ:

public function hocBai () { // Phương thứcLưu ý:

localhost:8080/index
00 bắt đầu bằng hai dấu gạch dưới

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

class SinhVien { SinhVien {

$sv1 = new SinhVien();

// Gán tên cho các sinh viên function __construct () {

$sv2 -> ten = "Vũ Hà"; "Đã 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ụ:

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

public $tuoi; $tuoi;

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

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

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

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

}

}

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

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

// của đối tượng sv1 = new SinhVien("Vũ Hà"19);

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

// Truy cập thuộc tính $sv1 -> ten . " " . $sv1 -> tuoi . " tuổi";

echo ""; "";

// Gọi phương thức $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ừ

vi /etc/apache2/httpd_conf
ServerName localhost
94 là lạ đúng không? = new SinhVien("Ngọc Anh"18);
 

Ở đây

vi /etc/apache2/httpd_conf
ServerName localhost
94 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
localhost:8080/index
05 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

vi /etc/apache2/httpd_conf
ServerName localhost
94 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() {

public function hocBai () { // Phương thức "Đối tượng đã bị hủy";

}

}

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

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

Kết quả:

Tập lệnh này tạo một đối tượng

vi /etc/apache2/httpd_conf
ServerName localhost
89 mới là
vi /etc/apache2/httpd_conf
ServerName localhost
88. Khi tập lệnh kết thúc, đối tượng sẽ tự động bị phá hủy, nó gọi hàm hủy và xuất ra thông báo.

Bạn cũng có thể kích hoạt trình hủy một cách rõ ràng, bạn có thể hủy đối tượng bằng cách sử dụng hàm unset() trong một câu lệnh tương tự như:

// Chủ động hủy đối tượng

unset($sv1);  ($sv1);
 

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

localhost:8080/index
08

Ví dụ: Chúng ta tạo lớp cha la

localhost:8080/index
09 kế thừa từ lớp
localhost:8080/index
10 và thử gọi phương thức của lớp
localhost:8080/index
10 (lớp cha)

File

localhost:8080/index
12

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 {

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

}

$sv1 = new SinhVien();  

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

Kết quả:

Tập lệnh này tạo một đối tượng

vi /etc/apache2/httpd_conf
ServerName localhost
89 mới là
vi /etc/apache2/httpd_conf
ServerName localhost
88. Khi tập lệnh kết thúc, đối tượng sẽ tự động bị phá hủy, nó gọi hàm hủy và xuất ra thông báo. -> an();
 

Kết quả:

Tập lệnh này tạo một đối tượng

vi /etc/apache2/httpd_conf
ServerName localhost
89 mới là
vi /etc/apache2/httpd_conf
ServerName localhost
88. Khi tập lệnh kết thúc, đối tượng sẽ tự động bị phá hủy, nó gọi hàm hủy và xuất ra thông báo.

Bạn cũng có thể kích hoạt trình hủy một cách rõ ràng, bạn có thể hủy đối tượng bằng cách sử dụng hàm unset() trong một câu lệnh tương tự như:

// Chủ động hủy đối tượng

unset($sv1);  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.

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

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

localhost:8080/index
08

Ví dụ: Chúng ta tạo lớp cha la

localhost:8080/index
09 kế thừa từ lớp
localhost:8080/index
10 và thử gọi phương thức của lớp
localhost:8080/index
10 (lớp cha)

File

localhost:8080/index
12Interface.

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

echo "Đang ăn...";

//

  • // Khởi tạo đối tượng từ class con
  • // Gọi phương thức an()

$milu -> an();  

Như vậy, lớp

localhost:8080/index
09 (lớp con) đã kế thừa thành công từ lớp
localhost:8080/index
10 (lớp cha).

interface IDongVat { IDongVat {

public function an(); function an();

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à

localhost:8080/index
15

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

File 

localhost:8080/index
27

interface IDongVat { IDongVat {

public function an(); function an();

}

Cho đến lúc này, chúng ta đã sử dụng từ khóa

vi /etc/apache2/httpd_conf
ServerName localhost
85 để chỉ định rằng một thuộc tính / phương thức có thể truy cập từ bất kỳ đâu. Cho implements IDongVat {

Ngoài ra, PHP còn hỗ trợ hai từ khóa khác để khai báo khả năng hiển thị:

public function an() { function an() {

localhost:8080/index
17: 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 "Đang gặm xương 
"
;

}

}

class Meo implements IDongVat { Meo implements IDongVat {

Ngoài ra, PHP còn hỗ trợ hai từ khóa khác để khai báo khả năng hiển thị:

public function an() { function an() {

localhost:8080/index
17: 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 "Đang ăn cá 
"
;

}

}

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

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

Kết quả:

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

Tập lệnh này tạo một đối tượng

vi /etc/apache2/httpd_conf
ServerName localhost
89 mới là
vi /etc/apache2/httpd_conf
ServerName localhost
88. Khi tập lệnh kết thúc, đối tượng sẽ tự động bị phá hủy, nó gọi hàm hủy và xuất ra thông báo.

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

Kết quả:

$mimi -> an();   -> 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ượngLư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

Trong PHP, một lớp có thể triển khai nhiều interface, ví dụ:

// Triển khai nhiều interface

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

// Các phương thức của interface phải được

// triển khai cụ thể (hoặc biến thành abstract)

// ở đâ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
    localhost:8080/index
    
    34 đượ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

localhost:8080/index
35

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

localhost:8080/index
36 trong PHP định nghĩa các thuộc tính
localhost:8080/index
36 và phương thức
localhost:8080/index
36.

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;
 

Kết quả:

echo "Ăn cơm chan canh";

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

Từ khóa

localhost:8080/index
36 trong PHP định nghĩa các thuộc tính
localhost:8080/index
36 và phương thức
localhost:8080/index
36.

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

}

}  
 

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

final class SinhVien {} class SinhVien {}

// Cố gắng kế thừa lớp final sẽ thất bại

class SinhVienNamNhat extends SinhVien {}   SinhVienNamNhat extends SinhVien {}
 

Bởi vì, final là ý nghĩa rằng đây là bản cuối cùng không thể sửa đổi.> Lư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à

localhost:8080/index
44Lư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à
localhost:8080/index
44

TỔNG KẾT TỰ HỌC LẬP TRÌNH PHP

Như vậy, trong bài hướng dẫn tự 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.tự 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