Tìm hiểu về ngôn ngữ lập trình web php •PHP : PHP HyperText Preprocessor •Ra đời vào năm 1995 (Rasmus Lerdorf) •Là ngôn ngữ script dùng để phát triển ứng dụng web •Là ngôn ngữ thông dịch •Là ngôn ngữ serverside như Java, ASP, ... •Là phần mềm opensource
Trang 1http://www.php.net/
Nhóm 4
Trang 2Tổng quan
• PHP : P HP H yperText P reprocessor
web
• Là ngôn ngữ server-side như Java, ASP,
Trang 3Quá trình phát triển
Trang 4Tại sao chọn PHP
• Miễn phí
• Core - PHP free
• Platform - Linux free
• Editor – Eclipse, PHP Coder, jEdit,
“Software is like sex: it's better
when it's free” (Linus
Torvalds)
Trang 5Tại sao chọn PHP
• Đa môi trường
• Web server: Apache , Microsoft IIS, Netscape,
• Hệ điều hành: UNIX , Mac OSX, Windows,
• Hệ QTCSDL: Adabas D, dBase,Empress, FilePro
(read-only), Hyperwave, IBM DB2, Informix, Ingres, InterBase, FrontBase, mSQL, MS-SQL, MySQL ,
ODBC, Oracle (OCI7 and OCI8), Ovrimos,
PostgreSQL, SQLite, Solid, Sybase, Velocis,Unix dbm
Trang 7Một số sản phẩm php
Trang 9Chú ý chung
• Tập tin PHP có phần mở rộng là php
• Cú pháp giống C và Java
• Cuối mỗi câu lệnh nên có dấu ;
• Biến (variables) luôn có dấu $ làm tiền tố
• Khối lệnh phải được đặt trong cặp dấu { }
Trang 11Khai báo biến
Ví dụ :
$foo $$bar $_foobar23
Trang 15Cấu trúc điều khiển
Trang 16Cấu trúc điều khiển - IF
Trang 17Cấu trúc điều khiển - Switch
Trang 18Cấu trúc điều khiển - While
Trang 19Cấu trúc điều khiển - For
Trang 20Cấu trúc điều khiển - Foreach
foreach( array as value){
// do some stuff here
}
Trang 21Array
Trang 22Array là gì?
• Là một tập hợp gồm các giá trị và các khóa (key/value)
• Lập chỉ mục
Trang 26Duyệt mảng với foreach
• Cú pháp
foreach ($array as [$key =>] [&] $value)
• Trong đó
- $key: string hoặc integer
- &: được dùng khi cần thay đổi $value
Trang 27Ví dụ
$players = array ("John", "Barbara", "Bill", "Nancy");
print "The players are:\n";
foreach ($players as $key => $value) {
print “$key = $value\n";
}
Trang 28Ví dụ
$people = array (
array ("name" => "John", "age" => 28),
array ("name" => "Barbara", "age" => 67) );
foreach ($people as & $person) {
Trang 29Duyệt mảng với list() & each()
• Ví dụ
$players = array ("John", "Barbara", "Bill", "Nancy");
reset ($players);
while ( list ($key, $val) = each ($players)) {
print "$key = $val\n";
Trang 30$third = array_merge ( $first, $second );
foreach ( $third as $val ){
print "$val\n";
}
Trang 31Các thao tác trên mảng
• Thêm phần tử vào 1 mảng
array_push ()
• Ví dụ
$arr = array ("a", "b", "c");
$nTotal = array_push ( $arr, 1, 2, 3 );
foreach ( $arr as $val ){
print "$val\n";
}
Trang 32Các thao tác trên mảng
• Remove phần tử đầu khỏi mảng
array_shift()
• Ví dụ
$arr= array ("a", "b", "c");
while ( count ( $arr) ) {
$val = array_shift ( $arr);
print “Removed $val.\n";
print “Array size: " count ($arr).”\n";
}
Trang 33Các thao tác trên mảng
• Remove phần tử ở vị trí bất kỳ
unset()
• Ví dụ
$arr= array (“a”, “b”, “c“,”d”);
unset( $arr[ count ($arr)-1 ]); // remove phần tử cuối
unset ($arr[1]); // remove phần tử thứ 2
print_r ($arr);
Trang 34Các thao tác trên mảng
• Lấy mảng con
array_slice()
• Ví dụ
$first = array ("a", "b", "c", "d", "e", "f");
$second = array_slice ($first, 2, 3);
foreach ( $second as $var ) {
print "$var\n";
}
Trang 35foreach ( $arr as $key => $var ){
print "$key = $var\n";
}
Trang 36foreach ( $ arr as $key => $val ){
print "$key = $val\n";
}
Trang 37foreach ( $arr as $key => $val ) {
print "$key = $val\n";
}
Trang 38Array Operators
Trang 39Array Operators – Ví dụ
• Union
$a= array ("a" => "apple", "b" => "banana");
$b= array ("a" => "pear", "b" => "strawberry", "c" => "cherry");
$c = $a + $b; // Union of $a and $b
var_dump($c);
• So sánh
$a = array ("apple", "banana");
$b = array (1 => "banana", "0" => "apple"); var_dump ($a == $b ); // bool(true) var_dump ($a === $b); // bool(false)
Trang 41Regular Expression
Trang 42Giới thiệu
Trang 43• Được cung cấp bởi gói thư viện PCRE
dụng từ PHP 4.2.0
Trang 44Các hằng số
PREG_PATTERN_ORDER Thứ tự kết quả chuỗi match
$match[0] : match với toàn bộ partern
$match[1] : match với subpartern () đầu tiên Được sử dụng với hàm preg_match_all().
PREG_SET_ORDER Thứ tự tập hợp các chuỗi match.
$matches[0]: tập hợp đầu tiên match
$matches[1]: tập hợp chuỗi tiếp theo match Được sử dụng trong hàm preg_match_all().
PREG_SPLIT_OFFSET_CAPTUR
E Chỉ được sử dụng cho preg_split().
PREG_SPLIT_NO_EMPTY Cờ cho biết hàm preg_split() trả về mảng không trống PREG_SPLIT_DELIM_CAPTURE Cờ cho biết hàm preg_split() giữ lại biểu thức trong dấu
().
PREG_OFFSET_CAPTURE Tương tự PREG_SPLIT_OFFSET_CAPTURE.
Trang 45Meta characters
ngoại trừ kí tự newline / / matches "Z3"
php hoặc ruby[…] Bất kì kí tự nào nằm trong dấu [] /J[aeiou]y/ matches "Joy"
kí tự [a-z] match kí tự từ a đến z[0-9] : kí tự từ 0 đến 9
Trang 46^ Bắt đầu chuỗi (start of string) /^Sally/ matches "Sally says "
$ Kết thúc chuỗi (end of string) /Sally.$/ matches “…hi, Sally."
Trang 47Character classes
\d Số 0-9 /\d\d/ matches "42"
\D Không phải là số /\D\D/ matches "to"
\s Kí tự đơn là khoảng trắng /under\sdog/ matches "under dog"
\S Kí tự đơn không phải khoảng trắng /under\Sdog/ matches "under-dog"
\w Kí tự, số hoặc kí tự gạch dưới /1\w/ matches "1A"
\W Không phải kí tự, số, hay gạch dưới /1\W/ matches "1%"
Trang 48Character classes
\b Chuỗi có đường biên /\bto/ matches "tomorrow”
/\bto\b/ matches "to"
\B Chuỗi không có đường biên /\Bto/ matches "stool"
/to\B/ matches "tomorrow"
\A Phần đầu dòng mới (phụ thuộc vào
Trang 49Number quantifiers
* 0 – nhiều /\d*/ matches "", "5", or "4444444"+ 1 – nhiều /\d+/ matches "5" or "444"
{n,m} Từ n – m lần /\d{2,4}/ matches "5555"
Trang 50Ungreedy
String : "aaaaabbbbb“Pattern : "/^(.*)(b+)$/“
Trang 51Greedy
String : "aaaaabbbbb“Pattern : "/^(.*)(b+)$/U"
Trang 52http://old-domain.com and ftp://old-domain.net
http://new-domain.com and ftp://new-domain.net
Trang 53Pattern Modifiers
Trang 54Pattern Modifiers
Pattern Modifiers Mô tả
comment (#)
qua khi modifier “m“ được set
+ , ?)
Trang 55Pattern Modifiers Example
/ActiveState\.com/ i activestate.com
ActiveState.com ACTIVESTATE.COM
"HelloGoodbye"
/^Hello$\n^Goodbye$/m
Trang 56Ví dụ
something //start
/ xi
Trang 58POSIX Extended Function
Trang 59PCRE vs POSIX
i(case-insensitivity)
ngôn ngữ
Trang 60Lập trình hướng đối tượng OOP
Trang 61Quá trình phát triển
InterfaceAccess Modifier
…
Inheritance
Static MethodSerialization
Trang 62Khai báo
Trang 63Hàm
Trang 64Thuộc tính
Trang 65Thừa kế
Trang 66Access Modifier
public
private
protected
Trang 67Access Modifier
Trang 68Constructor & Destructor
Trang 69Static
Trang 70Chồng hàm
Trang 71Final Function
Trang 72Trừu tượng hóa
Trang 73Final Class
Trang 74Interface
Trang 75Hằng số
Trang 76Kiểm tra
Trang 77So sánh
• $a == $b : so sánh giá trị
• $a === $b : so sánh tham chiếu
Trang 78Sao chép đối tượng
• $a = $b;
• $a = clone $b;
Trang 80Overloading
Trang 83?