Dang Dai Duong
Update to: October 2023
GitHub:
Thuật ngữ PHP là từ viết tắt của Hypertext Preprocessor
.
Nó là một ngôn ngữ kịch bản phía máy chủ hướng đối tượng, mã nguồn mở,
được giải thích, được sử dụng để phát triển web. PHP được Rasmus Lerdorf phát triển vào năm 1994
với phiên bản PHP đầu tiên được thiết kế đơn giản để thiết lập các nhị phân Common Gateway Interface
Giao diện cổng chung (CGI)
,
được viết bằng ngôn ngữ lập trình C. Nó có thể dễ dàng nhúng vào các tệp HTML. Mã HTML cũng có thể được viết bằng tệp PHP.
Mã PHP được thực thi ở phía máy chủ trong khi mã HTML được thực thi trực tiếp trên trình duyệt.
Windows
, Linux
, and macOS
. - Đa nền tảngCơ Sở Dữ Liệu
- Database<html>
<head>
<title>PHP Example</title>
</head>
<body>
<?php echo "Hello, World! This is PHP code";?>
</body>
</html>
> Hello, World! This is PHP code
Ví dụ về PHP
Các bước để thiết lập môi trường PHP trên máy cục bộ: Về cơ bản có hai cách để thiết lập PHP trên máy cục bộ đó là:
<?PHP
Mã PHP
?>
Cú pháp chuẩn của PHP
<? Mã PHP ?>
Cú pháp ngắn gọn (Short Hand)
//
hoặc #
echo "Hello, World!"; # My first PHP statement
echo "Hello world"; // My first PHP statement
/* ~~code~~ */
````php
/* echo “I’ve never thought of PHP as more
than a simple tool to solve problems.”;“The mechanism of separating a normal HTML from PHP code is called the mechanism of Escaping To PHP”
Có 4 thẻ để nhúng vào PHP:
<?php và kết thúc bằng ?>
, mọi thứ bên ngoài cặp thẻ mở và đóng đều bị phân tích cú pháp PHP bỏ qua. Các thẻ mở và thẻ đóng này gọi là dấu phân cách [delimeters
].;
<?php
# Here echo command is used to print
echo "Hello, world!";
?>
SGML
or Short HTML
Tags:<? và kết thúc bằng ?>
php.ini
và setting cho mục short_open_tag
là on
hoặc true
;<?
# Here echo command will only work if
# setting is done as said before
echo "Hello, world!";
?>
<script language="php">
echo "hello world!";
</script>
ASP
được viết tắt của Active Server Pages
để mô tả các khối mã. Đièu này giống với SGML và Short HTML là phải cài đặt trong php.ini
.<% và kết thúc bằng %>
;
<%
# Can only be written if setting is turned on
# to allow %
echo "hello world";
%>
$Variable
) được sử dụng để lưu trữ các giá trị hoặc dữ liệu có thể được sử dụng sau này trong chương trình.Character Values
), số [Numeric Values
], địa chỉ bộ nhớ [Memory Address
], chuỗi [String
].Dollar_sign
$
đằng trước sau đó là tên biến $variable
.TOÁN TỬ GÁN
(assignment operator).$_variable, $Var
);Case-sensitive
phân biệt chữ hoa và chữ thường.Đặc biệt lưu ý,
PHP
KHÔNG cóFLOAT
Phạm vi biến được định nghĩa là phạm vi mà biến có thể truy cập trong một chương trình mà nó có thể truy cập. Trong PHP có loại phạm vi:
biến
bên ngoài nào đó về một biến bên ngoài hàm (function) có cùng TÊN
thì đều là một hàm khác hoàn toàn.
```php
<?php
// Biến $num đầu tiên
$num = 60;function local_var() { // This $num is local (cục bộ) to this function (hàm) // the variable $num outside this function // is a completely different variable // (hoàn toàn khác với biến $num trên) $num = 50; echo “local num = $num \n”; }
local_var();
// $num outside function local_var() is a // completely different Variable than that of // inside local_var() echo “Variable num outside local_var() is $num \n”;
?>
````php
local num = 50
Variable num outside local_var() is 60
global
trước biến toàn cục (refer global variable)
````php
<?php$num = 20;
// function to demonstrate use of global variable function global_var() { // we have to use global keyword before // the variable $num to access within // the function global $num;
echo "Variable num inside function : $num \n"; }
global_var();
echo “Variable num outside function : $num \n”; ?>
````php
Variable num inside function : 20
Variable num outside function : 20
STATIC
trước các biếnStatic Variables
).$sum++;
$num++;
echo $num, "\n";
echo $sum, "\n"; }
// first function call static_var();
// second function call static_var(); ?>
````php
// Output:
6
3
7
3
Variable Variables
, được chuyển hoá đơn giản rằng các biến có tên được tạp động bởi các giá trị của biến khác.<?php
$a = 'hello'; //hello is value of variable $a
$$a = 'World'; //$($a) is equals to $(hello)
echo $hello; //$hello is World i.e.
// $hello is new variable with value 'World'
?>
// Output:
World
.
Operatorecho
dùng để hiển thị đầu ra các tham số được truyền cho nó. Nó hiển thị kết quả đầu ra của một hoặc nhiều chuỗi được phân tách bằng dấu phẩy.print
thường được chấp nhận một đối số tại một thời điểm và không thể sử dụng làm biến cannot be used as a variable function trong PHP
. print
chỉ output các chuỗi.
ECHO && Print
đều là language constructs - Cấu trúc ngôn ngữ.ECHO && Print
đều mang chức năng xuất dữ liệu ra màn hình trình duyệt.
The print statement is an alternative to echo.
echo
: Đây là một cấu trúc ngôn ngữ và không bao giờ hoạt động giống như một hàm - (never behaves like a function)
. Do đó không cần dấu ngoặc đơn.echo
có thể hiển thị chuỗi dưới dạng nhiều đối số - Displaying Strings as multiple arguments
<?php
echo "Multiple ","argument ","string!";
?>
print
trong PHP tương tự như echo và có thể được sử dụng để thay thế cho echo
.ECHO && Print
echo
không hoạt động ngầm giống như một hàm, trong khi print
hoạt động như một hàm.print
chỉ có thể một đối số - [Argument] tại một thời điểm và do đó có thể in ra một chuỗi đơn giản.print
luôn trả về 1 (**).echo
chấp nhận một danh sách các đối số, còn print
thì không.echo
sẽ nhanh hơn các câu lệnh print
.
<?php
print "Hello, world!";
?>
.
- DOT operatorconcatenation
.Như đã nói ở mục {4. Biến trong PHP}(9.) , gồm các kiểu dữ liệu, ở phần này, ta sẽ đi chuyên sâu hơn về các kiểu dữ liệu.
10
loại kiểu dữ liệu khác nhau, được phân thành 3 nhóm kiểu (group-type) và 2 định dạng (specify):
predefined data types
hay Scalar.
user-defined (compound) data types
hay Coumpound.
special data types
hay Special.
Các kiểu dữ liệu trong PHP
5 loại đầu tiên
#1 -> #5
được gọi là kiểu dữ liệu đơn giản -simple data types
3 loại sau
#6 -> #8
được gọi là kiểu dữ liệu phức tạp -compound data types
ℤ = {..., -2, -1, 0, 1, 2, ...}.
.decimal (base 10)
, thập lục phân hexadecimal (base 16)
, thập bát phân octal (base 8)
, nhị phân binary (base 2)
.-2^31 đến 2^31
.
<?php
$a = 1234; // decimal number
$a = 0123; // octal number (equivalent to 83 decimal)
$a = 0o123; // octal number (as of PHP 8.1.0)
$a = 0x1A; // hexadecimal number (equivalent to 26 decimal)
$a = 0b11111111; // binary number (equivalent to 255 decimal)
$a = 1_234_567; // decimal number (as of PHP 7.4.0)
?>
Một số quy tắt viết các số nguyên
Integer
từ PHP 7.4 trở đi
(fractional)
hoặc số thập phân (decimal parts)
, bao gồm số dương và số âm hay số (number in exponential form).
Double
giống như kiểu dữ liệu Float
như là floating-point numbers
or real numbers.
```php
<?php
$val1 = 50.85;
$val2 = 654.26;$sum = $val1 + $val2;
echo $sum; echo “\n\n”;
//returns data type and value var_dump($sum) ?>
```php
// Output:
705.11
float(705.11)
double quotes " "
trong khi khai báo.single quotes ''
, nhưng sẽ được xử lý khác nhau khi in các biến.String
có 4 cách định nghĩa (specified
):
' '
) - nháy đơn." "
) - nháy đôi.<<<END ... END;
-> <<<
Heredocs Syntax
.Heredoc
nhưng không hỗ trợ Escape Sequence
.<?php
$name = "Krishna";
echo "The name of the Geek is $name \n";
// Double Quotes " "
echo 'The name of the geek is $name ';
// Single Quotes ' '
echo "\n\n";
//returns data type, size and value
var_dump($name)
?>
// Output:
The name of the Geek is Krishna
The name of the geek is $name
string(7) "Krishna"
conditional testing
. Chỉ có hai giá trị duy nhất là TRUE(1) hoặc FALSE(0).Successful
sẽ trả về TRUE
, và ngược lại sẽ trả về FALSE
.
String Empty
) cũng được xem xét là NULL.<?php
if(TRUE)
echo "This condition is TRUE";
if(FALSE)
echo "This condition is not TRUE";
?>
This condition is TRUE
Compound
có thể lưu trữ nhiều dữ liệu giá trị của cùng một kiểu dữ liệu.Map
- Ordered Map
. A Map
là một loại dữ liệu kết hợp các giá trị values
với các khoá keys
. (key
=> value
);
A map is a type that associates values to keys. This type is optimized for several different uses;
Array
, List (vector)
, Hash Table
,Dictionary
, Collection
, Stack
, Queue
.Các nguyên tắc áp dụng trong
Array
:
- 1.
String
chứa các số nguyên hợp lệ<decimal ints>
, trừ khi số đó đứng trước dấu +, sẽ chuyển đổi thành kiểu số nguyên (8+ => 8), (“8” -> 8). Tuy nhiên “08” sẽ không được chuyển đổi vì n không phải số nguyên hợp lệ.- 2.Số thực
Float
cũng sẽ được chuyển đổi thành số nguyênInteger
, có nghĩa là số thập phân cũng sẽ bị cất đi. (“8.7” => “8”);- 3.Boolean cũng sẽ bị chuyển đổi thành số nguyên
Integer
, vớitrue
bằng 1 và ‘false’ bằng 0, tuy nhiên ở PHP, false sẽKHÔNG HIỂN THỊ LÊN MÀN HÌNH
.- 4.Null sẽ chuyển thành chuỗi rỗng, nghĩa là Null sẽ được lưu trữ dưới dạng
""
;- 5.
Arrays
&&Object
không thể được chọn làm khoá -keys
. Nếu không sẽ báo lỗiIllegal offset type
.
i.e.
<?php
$intArray = array( 10, 20 , 30);
echo "First Element: $intArray[0]\n";
echo "Second Element: $intArray[1]\n";
echo "Third Element: $intArray[2]\n\n";
//returns data type and value
var_dump($intArray);
?>
// Output:
First Element: 10
Second Element: 20
Third Element: 30
array(3) {
[0]=>
int(10)
[1]=>
int(20)
[2]=>
int(30)
}
Object
là các đối tượng được định nghĩa defined
là các instance
của các lớp do người dùng định nghĩa (user-defined classed
) có thể chứa các values
, functions
& thông tin để xử lý dữ liệu cụ thể cho lớp đó
.properties
và các hành vi behaviours
từ các lớp, các giá trị khác nhau cho tất cả thuộc tính.
Các đối tượng được khởi tạo từ từ khoá
new
.<?php class gfg { var $message; function gfg($message) { $this->message = $message; } function msg() { return "This is an example of " . $this->message . "!"; } } // instantiating a object $newObj = new gfg("Object Data Type"); echo $newObj -> msg(); ?>
This is an example of Object Data Type!
#7 NULL
specials types
chỉ có chứa một giá trị là NULL
. Và không trả về giá trị nào.Resources
trong PHP không phải là một kiểu dữ liệu chính xác. Về cơ bản, chúng được sử dụng cho việc lưu trữ các tham chiếu đến một số lệnh gọi hàm hoặc tài nguyên.type
) và giá trị (value
) trong một biểu thức, sử dụng var_dump()
để xuất thông tin một biến.<?php
// Integer (Số nguyên)
$int = 42;
// Float (Số thực)
$float = 3.14;
// Boolean
$bool = true;
// String (Chuỗi)
$string = "Hello, World!";
// Array.md (Mảng)
$array = [1, 2, 3];
// Object (Đối tượng)
class MyClass {
public $prop = "property value";
}
$obj = new MyClass();
// Null (Rỗng)
$null = null;
// Resource (Tài nguyên)
$resource = fopen('example.txt', 'r');
// Kiểm tra và in ra thông tin các giá trị
var_dump($int, $float, $bool, $string, $array, $obj, $null, $resource);
// Đóng tài nguyên
fclose($resource);
?>
Fixed Value
). Các Constant
tương tự như một biến ngạoi trừ việc chúing không bao gờ có thể thay đổi được.Một khi Constants được định nghĩa, nó không thể được xác định hoặc xác định lại (undefined |
redefined ). |
constant identifiers
) theo quy ước phải được viết IN HOA
(Uppercase
).Case-sensitive
)._
).Để tạo một HẰNG SỐ:
define() func:
- Hàm
define()
trong PHP sử dụng đ tạo một hằng số:define(name, value, case_insensitive)
- Các tham số được định nghĩa như sau:
name
: Tên củaCONSTANTS
.value
: Giá trị được lưu trữ trongCONSTANTS
.case_insensitive
: Xác định xem một hằng số có phân biệt chữ hoa chữ thường hay không. Mặc định làFalse
(phân biệt chữ hoa, chữ thường).
<?php
// This creates a case-sensitive constant
define("OCEAN", 'Ocean', true);
echo OCEAN, "\n";
// This creates a case-insensitive constant
define("hello", "love", false);
echo hello;
?>
constant(name)
define("WELCOME", "Hello World!!!");
echo WELCOME, "\n";
echo constant("WELCOME");
// Output:
Hello World!!! Hello World!!!
Theo mặc định, các hằng số tự động có tính toàn cục (GLOBAL) và có thể được sử dụng trong toàn boọ tập lệnh, có thể truy cập được bên trong và ngoài bất kỳ hàm nào.
define("NICE", "GLOBAL");
function testGlobal(): void
{
echo NICE;
}
testGlobal();
//Output:
GLOBAL
- vd: Constant.php
| CONSTANT | VARIABLE |
|:——————————————-:|:———————————–:|
| Không thể thay đổi khi đã được định nghĩa | Có thể được thay đổi khi định nghĩa |
| Không cần $
để khai báo | CẦN $
mỗi hi khai báo |
| Định nghĩa bằng các hàm func()
và const
| Dùng =
để khai báo và gán |
9
loại Magic CONSTANTS trong PHP và tất cả được giải quyết tại thời điểm compile-time
(các hằng số thường {regular constant} được giải quyết trong run-time
).8
trong 9
loại MAGIC CONSTANT
được bắt đầu và kết thúc bằng dấu gạch kép (double underscorce) __
.
Các ví dụ được đề cập ở file MagicConstant.php
1. __ LINE __
// Syntax:
.__line__
// Example:
<?php
echo "The Line number is : ". __line__;
?>
// Output:
The Line number is : 3
Hằng số này trả về đường dẫn đầy đủ của tệp được thực thi cùng với tên tệp.
// Syntax:
.__file__
<?php
echo "The file name is : ". __file__;
?>
The file name is : /Applications/XAMPP/xamppfiles/htdocs/Website/C01_PhpBasic
Hằng số ma thuật này trả về thư mục của tệp đã thực thi.
note: dir viết tắt của directory (thư mục).
//Syntax: .__dir__
<?php echo "The directory is : ". __dir__; ?>
The directory is : /Applications/XAMPP/xamppfiles/htdocs/Website/C01_PhpBasic
Hằng số này trả về tên hàm (func()
) chứa hằng số này.
//Syntax:
.__function__
Hằng số trả về tên lớp (class) chứa hằng số này.
//Syntax:
.__class__
Hằng số này trả về tên phương thức chứa hằng số này
//Syntax:
.__method__
<?php
class Company
{
public function Ocean(){
return __method__;
}
}
$obj = new Company();
echo $obj->Ocean();
?>
// Output:
Company::Ocean
Hằng số này trả vềg khôgn gian tên hiện tại chứa hằng số này.
//Syntax:
.__namespace__
<?php
namespace OceanMac;
class Company {
public function ocean() {
return __namespace__;
}
}
$obj = new Company();
echo $obj->ocean();
?>
// Output:
OceanMac
Hằng số này trả về tên đặc điểm chứa hằng số này. (return trait
).
//Syntax:
.__trait__
<?php
trait OceanTrait{
function fuc(){
echo __trait__;
}
}
class Company{
use OceanTrait;
}
$a = new Company;
$a->fuc();
?>
// Output:
OceanTrait
Hằng số này trả về tên lớp với tất cả đầy đủ điều kiện.
// Syntax:
ClassName::class
namespace MagicConstant;
class Ocean{ }
echo "9. return {NameSpace\Class} ". Ocean::class;
//Classname::class
//Output:
MagicConstant\Ocean
VÍ DỤ Về 9 loại trong Magic Constant
i.e. MagicConstant.php