PHP Basic PHP Basic

Luong Tran Hy Hien, FIT of HCMUP

1

Nội dung Nội dung

1. Giới thiệu PHP 2. Hoạt động của PHP & Cài đặt 3. Cú pháp 4. Biến 5. Toán tử 6. Chuỗi 7. Mảng 8. Cấu trúc điều khiển 9. Hàm

2

1. Giới thiệu PHP – Lịch sử 1. Giới thiệu PHP – Lịch sử

• PHP : Rasmus Lerdorf in 1994 (được phát triển để phát sinh

các form đăng nhập sử dụng giao thức HTTP của Unix)

• PHP 2 (1995) : Chuyển sang ngôn ngữ script xử lý trên server. Hỗ trợ CSDL, Upload File, khai báo biến, mảng, hàm đệ quy, câu điều kiện, biểu thức, …

• PHP 3 (1998) : Hỗ trợ ODBC, đa hệ điều hành, giao thức email (SNMP, IMAP), bộ phân tích mã PHP (parser) của Zeev Suraski và Andi Gutmans

• PHP 4 (2000) : Trở thành một thành phần độc lập cho các webserver. Parse đổi tên thành Zend Engine. Bổ sung các tính năng bảo mật cho PHP

• PHP 5 (2005) : Bổ sung Zend Engine II hỗ trợ lập trình HĐT,

XML, SOAP cho Web Services, SQLite

• Phiên bản mới nhất

của PHP là version PHP 5.5.4 3

(www.php.net – 19.09.2013)

1. Giới thiệu PHP – PHP là gì? 1. Giới thiệu PHP – PHP là gì? • PHP được phát triển từ ngôn ngữ kịch bản (script) với mục đích xây dựng trang Web cá nhân (Personal Home Page). Sau đó đã được phát triển thành một ngôn ngữ hoàn chỉnh và được ưa chuộng trên toàn thế giới trong việc phát triển các ứng dụng Web. • PHP là một ngôn ngữ thông dịch. • Là ngôn ngữ server-side script, tương tự như

ASP, JSP, … thực thi ở phía Server. • Tập tin PHP có phần mở rộng là .php • Cú pháp tương tự ngôn ngữ C & Perl

4

1. Giới thiệu PHP – Ưu điểm 1. Giới thiệu PHP – Ưu điểm

(Multi - Platform)

• Web Servers: Apache, Microsoft IIS, Caudium, Netscape

Enterprise Server

• Hệ điều hành: UNIX (HP-UX, OpenBSD, Solaris, Linux),

Mac OSX, Windows NT/98/2000/XP/2003/vista

• Hệ QTCSDL: Adabas D, dBase, Empress, FilePro (read- only), Hyperwave, IBM DB2, Informix, Ingres, InterBase, FrontBase, mSQL, Direct MS-SQL, MySQL, ODBC, Oracle (OCI7 and OCI8), Ovrimos, PostgreSQL, SQLite, Solid, Sybase, Velocis, Unix dbm

5

1. Giới thiệu PHP – Ưu điểm 1. Giới thiệu PHP – Ưu điểm

PHP được sử dụng rộng rãi trên môi trường phát triển web

Nguồn: http://php.net/usage.php http://w3techs.com/technologies/overview/programming_language/all

6

Ưu điểm và khuyết điểm của PHP? Ưu điểm và khuyết điểm của PHP?

JSP

(HTML,JSP,..)

(HTML,PHP)

(HTML,.Net,..)

(cid:1)The best DBMS

(cid:1)The best DBMS

(cid:1)The best DBMS

support: Oracle

support : MySQL

support : SQL Server

(cid:1) Code same as: C

(cid:1) Config: easy (cid:1) Community

support: good

(cid:1) Run: slow

(cid:1) Support: poor

KHUYẾT ĐIỂM

(cid:1) Support: poor

(cid:1) IDE: poor

(cid:1) Config: complex

Đánh giá ƯU ĐIỂM (cid:1)Open source (cid:1)Clearly code PHP (cid:1)Open source (cid:2) Mix code .Net (cid:2) Open source (cid:1)Clearly code

Một số website dùng PHP Một số website dùng PHP

8

2. Hoạt động của Web Server 2. Hoạt động của Web Server

CƠ CHẾ HOẠT ĐỘNG

9

2. Hoạt động của Web Server 2. Hoạt động của Web Server • Apache và IIS được xây dựng để đáp ứng các yêu

cầu (request) các tập tin HTML

• Không hiểu cách thực thi mã PHP ở phía server • Apache sử dụng các modules để “hiểu” cách thực

thi các đoạn mã viết bằng PHP

• IIS sử dụng tập lệnh ISAPI - Internet Server Application Programming Interface - để “hiểu” các lệnh của PHP và ASP

• Ngoài ra, cả Apache và IIS đều hỗ trợ nhiều module khác phục vụ cho việc triển khai ứng dụng web một cách hiệu quả

10

2. Hoạt động của Web Server 2. Hoạt động của Web Server

hello.php

PHP Test

Hello World

'; ?>

output

PHP Test

Hello World

11

2. Hoạt động của Web Server 2. Hoạt động của Web Server

12

2. Hoạt động của Web Server 2. Hoạt động của Web Server

Sử dụng phương thức echo "Nội dung" để xuất thông tin lên trình duyệt.

2. Yêu cầu cài đặt 2. Yêu cầu cài đặt

• Download Apache Server

Download Apache for free here:

http://httpd.apache.org/download.cgi

• Download PHP

Download PHP for free here:

http://www.php.net/downloads.php

• Download MySQL Database Download MySQL for free here:

http://www.mysql.com/downloads/index.html

14

2. Yêu cầu cài đặt 2. Yêu cầu cài đặt

PHƯƠNG ÁN 1

http://www.apachefriends.org/en/xampp.html

PHƯƠNG ÁN 2

http://www.wampserver.com/en/

15

PHƯƠNG ÁN 3 Cấu hình manual

2. Yêu cầu cài đặt 2. Yêu cầu cài đặt

Sử dụng giải pháp trọn gói (All in One):

• LAMP – Linux

• WAMP – Windows

• XAMPP – Windows/Linux

16

XAMPP - Tutorial XAMPP - Tutorial

17

XAMPP - Tutorial XAMPP - Tutorial

• Chỉnh port cho Server

18

XAMPP - Tutorial XAMPP - Tutorial

• Chỉnh port cho Server

19

phpMyAdmin phpMyAdmin

20

3. Cú pháp 3. Cú pháp

• Phát biểu:

• Sử dụng để đánh dấu lệnh PHP • Các câu lệnh php cách nhau bởi dấu ‘;’ • Không phân biệt khoảng trắng, tab hay ký tự xuống

dòng. • Ví dụ:

21

3. Cú pháp (tt) – Ghi chú 3. Cú pháp (tt) – Ghi chú

• Ghi chú của PHP tương tự như của

C++ và Perl

• Có 3 loại ghi chú:

– Sử dụng ‘//’ để ghi chú – Sử dụng ‘#’ để ghi chú – Sử dụng /* … */ để ghi chú

• Ví dụ:

print “chào mọi nguời.”; //print dùng để xuất chuỗi

22

?> #tương tự như

3. Cú pháp (tt) – Kiểu dữ liệu 3. Cú pháp (tt) – Kiểu dữ liệu

• boolean • integer • double • string • array • object

Một biến trong PHP có thể lưu bất kỳ kiểu dữ liệu nào

23

3. Kiểu dữ liệu (tt) 3. Kiểu dữ liệu (tt) • Chuyển đổi kiểu dữ liệu – Cách 1 (automatic) $var = “100” + 15; $var = “100” + 15.0; $var = 39. “ Steps”;//Chú ý – Cách 2 (datatype) $var – Cách 3 settype($var, “datatype”)

• VD:

24

3. Kiểu dữ liệu (tt) 3. Kiểu dữ liệu (tt) • Kiểm tra kiểu dữ liệu gettype is_integer is_double

is_string is_array is_object

isset unset empty

• Ví dụ

$var = “test”; if (isset($var))

echo “Variable is Set”;

if (empty($var))

echo “Variable is Empty”;

25

3. Kiểu dữ liệu (tt) 3. Kiểu dữ liệu (tt) • Một số hàm xử lý số abs ceil Floor

decbin bindec dechex

pow sqrt log

srand(seed) rand rand(min, max) …

log10

hexdec

Tra hướng dẫn trong PHP Manual

round • Ví dụ: // Phát sinh một “mầm” ngẫu nhiên

$seed = (float) microtime()*100000000;

// Khởi tạo bộ phát sinh số ngẫu nhiên

srand($seed); // In số ngẫu nhiên

print rand(); // Giá trị ngẫu nhiên từ 0 đến getmaxrand( ) print rand(1, 6); // Giá trị ngẫu nhiên từ 1 đến 6

26

3. Kiểu dữ liệu (tt) 3. Kiểu dữ liệu (tt)

Hàm printf

%b = '10100111101010011010101101' %c = 'A' %d = '43951789' %e = '4.39518e+7' %u = '43951789' %u = '4251015507' %f = '43951789.000000' %o = '247523255' %s = '43951789' %x = '29ea6ad' %X = '29EA6AD' %+d = '+43951789' %+d = '-43951789'

27

printf("%%b = '%b'\n", $n); printf("%%c = '%c'\n", $c); printf("%%d = '%d'\n", $n); printf("%%e = '%e'\n", $n); printf("%%u = '%u'\n", $n); printf("%%u = '%u'\n", $u); printf("%%f = '%f'\n", $n); printf("%%o = '%o'\n", $n); printf("%%s = '%s'\n", $n); printf("%%x = '%x'\n", $n); printf("%%X = '%X'\n", $n); printf("%%+d = '%+d'\n", $n); printf("%%+d = '%+d'\n", $u); ?>

3. Kiểu dữ liệu (tt) 3. Kiểu dữ liệu (tt)

// produces "Alien

Hàm str_pad

STR_PAD_RIGHT : Thêm vào bên phải (mặc định) : Thêm vào bên trái STR_PAD_LEFT STR_PAD_BOTH : Thêm cả hai phía

28

4. Biến 4. Biến • Cú pháp: $ten_bien = value; • Không khai báo kiểu dữ liệu • Biến tự động được khởi tạo khi gán giá trị lần đầu • Tên biến

– Bao gồm các ký tự (A..Z, a..z), ký số(0..9),_ – Không được bắt đầu bằng ký số (0..9) – Phân biệt chữ hoa – chữ thường

• Ví dụ:

– Đúng cú pháp: $hoten, $_pass – Sai cú pháp: $2host

29

4. Biến – Hằng 4. Biến – Hằng • Variable variables

– Cho phép thay đổi tên biến – Vídụ

$varname=“Bien_moi”; $$varname= “xyz”; //$Bien_moi= “xyz”

?>

• Hằng số - Constants

define("MY_CONST", 10); echo MY_CONST;

30

?>

5. Toán tử 5. Toán tử

Toán tử Loại Ghi chú

new .

. [ ] ( )

Toán học + - * / % ++ --

So sánh < > <= >= != == === !==

Luận lý && || ?: ,

Xử lý bit

! ~ << >> >>> AND OR XOR

Gán

= += -= *= /= %= >>= <<= &= |= ^= .=

31

Ép kiểu (kiểu dữ liệu) (int) (double) (string)…

5. Toán tử (tt) 5. Toán tử (tt)

Ex

Name

Result

TRUE if $a is equal to $b.

$a == $b

Equal

TRUE if $a is equal to $b, and they are of the same type. (PHP 4)

$a === $b

Identical

TRUE if $a is not equal to $b.

$a != $b

Not equal

TRUE if $a is not equal to $b.

$a <> $b

Not equal

TRUE if $a is not equal to $b, or they are not of the same type. (PHP 4)

$a !== $b Not identical

TRUE if $a is strictly less than $b.

$a < $b

Less than

TRUE if $a is strictly greater than $b.

$a > $b

Greater than

TRUE if $a is less than or equal to $b.

$a <= $b

Less than or equal to

TRUE if $a is greater than or equal to $b.

$a >= $b

Greater than or equal to

32

6. Chuỗi 6. Chuỗi

• Toán tử nối chuỗi “.”

$str=“Hello “ . ”World!”; //$str = “Hello World!”;

• Phân biệt dấu nháy đơn, dấu nháy kép

$user = “Mr Bean”; print ‘Hi $user’; print “Hi $user”; print “Hi”. $user; print “Hi”. “$user”;

// Hi $user // Hi Mr Bean // ???? // ????

33

6. Chuỗi (tt) 6. Chuỗi (tt)

• Giới hạn bởi nháy đơn (‘) hoặc kép (“) • Chuỗi đặt trong nháy kép bị thay thế và xử lý ký tự thoát. Trong nháy đơn thì không.

• Ví dụ:

$a = “Hello”; $b = “$a world”; //tương đương $b=“Hello

world”

$c = ‘$a world’; //$c=‘$a world’ (không

thay đổi)

34

6. Chuỗi (tt) 6. Chuỗi (tt)

• Để làm rõ các biến trong chuỗi, cần bao

biến vào giữa cặp ngoặc nhọn { } $a = “He”; $b = “$allo”; //lỗi vì PHP hiểu là

$allo

$c = “{$a}llo”; //đúng ($c =

“Hello”)

35

6. Chuỗi (tt) 6. Chuỗi (tt)

• Ký tự thoát: \

– Sử dụng để viết các ký tự đặc biệt trong chuỗi – VD: Cần có chuỗi: Người ta nói “PHP rất tốt” $a = “Người ta nói “PHP rất tốt””; //Sai $a = “Người ta nói \“PHP rất tốt\””;

//Đúng

– Một số ký tự phải sử dụng ký tự thoát: $, \, “ – Ngoài ra:

• \n: Xuống dòng • \r: trở về đầu dòng • \t: dấu tab • …

36

6. Chuỗi (tt) – Kiểu tài liệu (heredoc) 6. Chuỗi (tt) – Kiểu tài liệu (heredoc)

Không cần sử dụng ký tự thoát:

– Cho phép viết 1 chuỗi trên nhiều dòng. – – Cách viết: $biến = <<

nội dung trên nhiều dòng

Ký_hiệu; – Chú ý: Ký_hiệu phải được viết ở ký tự đầu tiên của

dòng – Ví dụ: $a = <<

Đây là chuỗi nằm trên nhiều dòng sử dụng cú pháp kiểu tài liệu ‘heredoc’

37

EOD;

6. Chuỗi (tt) – Kiểu tài liệu (heredoc) 6. Chuỗi (tt) – Kiểu tài liệu (heredoc)

spanning multiple lines
using heredoc syntax.
EOA;//không được có khoảng trắng đầu dòng

echo($str); $name = “mr bean"; $d = date("d/m/y"); $str = << Ngay $d
EOQ;

38

echo($str); ?>

6. Chuỗi (tt) – Hàm xử lý 6. Chuỗi (tt) – Hàm xử lý

• Các xử lý cơ bản

– strlen($chuỗi) – substr($chuỗi, $vị trí, $chiều_dài) – strtoupper ($chuỗi) – strtolower ($chuỗi) – iconv(mã nguồn, mã đích, $chuỗi) – trim($chuỗi, ’ký tự muốn cắt’) – ltrim($chuỗi, ’ký tự muốn cắt’) – rtrim($chuỗi, ’ký tự muốn cắt’)

39

6. Chuỗi (tt) 6. Chuỗi (tt)

• Tìm kiếm

– strpos($chuỗi, $chuỗi_con, $vị_trí_bắt đầu) – strrpos ($chuỗi, $chuỗi_con, $vị_trí_bắt đầu)

• So sánh

– strcmp($chuỗi_1, $chuỗi_2) – strncmp($chuỗi_1, $chuỗi_2, $chiều_dài) – strcasecmp($chuỗi_1, $chuỗi_2) – strncasecmp($chuỗi_1, $chuỗi_2, $chiều_dài) – strnatcmp($chuỗi_1, $chuỗi_2) – strnatcasecmp($chuỗi_1, $chuỗi_2)

40

6. Chuỗi (tt) 6. Chuỗi (tt)

$array = array('lastname', 'email', 'phone'); $comma_separated = implode(",", $array);

echo $comma_separated; // lastname,email,phone

Xử lý chuỗi

= "piece1 piece2 piece3 piece4 piece5 piece6";

41

?>

7. Mảng 7. Mảng

echo "Do you like $color?
";

Do you like blue? Do you like green? Do you like red? Do you like yellow? We have 4 items

} $num = count($colors); echo “We have $num items
”; ?>

42

7. Mảng (tt) 7. Mảng (tt)

$color = strtoupper($color);

} unset($color); /* ensure that following writes to $color will not modify the last array element */

// Workaround for older versions (phiên bản trước PHP 5) foreach ($colors as $key => $color) {

Array (

$colors[$key] = strtoupper($color);

[0] => RED [1] => BLUE [2] => GREEN [3] => YELLOW

}

)

43

print_r($colors); ?>

7. Mảng (tt) 7. Mảng (tt)

"apple", "b" => "banana"); $b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");

$c = $a + $b; // Union of $a and $b echo "Union of \$a and \$b: \n"; var_dump($c);

$c = $b + $a; // Union of $b and $a echo "Union of \$b and \$a: \n"; var_dump($c); ?>

Union of $a and $b: array(3) {

Union of $b and $a: array(3) {

["a"]=> string(5) "apple" ["b"]=> string(6) "banana" ["c"]=> string(6) "cherry"

["a"]=> string(4) "pear" ["b"]=> string(10) "strawberry" ["c"]=> string(6) "cherry"

}

}

44

7. Mảng (tt) 7. Mảng (tt)

wddx_deserialize */

$size = "large"; $var_array = array("color" => "blue",

"size" => "medium", "shape" => "sphere");

extract($var_array, EXTR_PREFIX_SAME, "wddx"); echo "$color, $size, $shape, $wddx_size\n"; ?>

blue, large, sphere, medium

45

7. Mảng (tt) 7. Mảng (tt)

// Listing all the variables list($drink, $color, $power) = $info; echo "$drink is $color and $power makes it special.\n";

// Listing some of them list($drink, , $power) = $info; echo "$drink has $power.\n";

46

// Or let's skip to only the third one list( , , $power) = $info; echo "I need $power!\n";

// list() doesn't work with strings list($bar) = "abcde"; var_dump($bar); // NULL ?>

7. Mảng (tt) – Hàm xử lý 7. Mảng (tt) – Hàm xử lý

Sắp xếp Theo giá trị

// tăng dần // giảm dần

Theo khóa ksort($mảng) krsort($mảng) uksort($mảng, ”hàm_so_sánh”)

– – – – – sort($mảng) / asort($mảng) rsort($mảng) / arsort($mảng) natsort($mảng) / natcasesort($mảng)// tăng dần, dùng cho chuỗi usort($mảng, ”hàm_so_sánh”) uasort($mảng, ”hàm_so_sánh”) // tự định nghĩa thứ tự // tự định nghĩa thứ tự

47

– – – // tăng dần // giảm dần // tự định nghĩa thứ tự

7. Mảng (tt) – Hàm xử lý 7. Mảng (tt) – Hàm xử lý

• Nối ghép hai mảng

array_merge($mảng1, $mảng2) array_combine($mảng1, $mảng2) array_intersect($mảng1, $mảng2)

Tìm kiếm array_search($giá_trị, $mảng)

48

Break

8. Cấu trúc điều khiển 8. Cấu trúc điều khiển

Tương tự như C++

• Điều kiện if • Điều khiển switch • Vòng lặp for • Vòng lặp while • Vòng lặp do.. While • Vòng lặp foreach • Từ khóa break, continue

50

8.1 Câu lệnh if 8.1 Câu lệnh if

if (biểu thức điều kiện)

khối lệnh 1

else

khối lệnh 2

51

8.1 Câu lệnh if (tt) 8.1 Câu lệnh if (tt) if ($a > $b) {

echo "a > b";

$a = $b;

} else {

echo "a <= b"; $b = $a;

}

52

8.2 Câu lệnh switch 8.2 Câu lệnh switch switch (biểu thức) {

case biểu thức 1: khối lệnh 1 case biểu thức 2: khối lệnh 2

... case biểu thức n: khối lệnh n

default:

khối lệnh cuối

}

53

8.2 Câu lệnh switch (tt) 8.2 Câu lệnh switch (tt)

switch ($a) {

case 0:

echo "a = 0"; break; case 1:

echo "a = 1"; break;

}

54

8.3 Vòng lặp while/do...while 8.3 Vòng lặp while/do...while

while (biểu thức điều kiện)

khối lệnh

Hay: do

khối lệnh

while (biểu thức điều kiện);

55

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

Ví dụ:

$i = 1; $j = 9;

while ($i <= 10) {

$temp = $i * $j;

print “$j * $i = $temp
";

$i++;

56

}

8.3 Vòng lặp while/do...while (tt) 8.3 Vòng lặp while/do...while (tt) while ($i++ < 5) { switch ($i) {

case 2:

echo "At 2"; break;

case 5:

echo "At 5"; break 2;

default:

break;

}

}

57

8.4 Vòng lặp for 8.4 Vòng lặp for

for (biểu thức 1; biểu thức 2; biểu thức 3)

khối lệnh;

• •

biểu thức 1: thực hiện 1 lần khi bắt đầu vòng lặp biểu thức 2: điều kiện lặp, được xem xét trước mỗi lần lặp biểu thức 3: thực hiện sau mỗi lần lặp

58

8.4 Vòng lặp for (tt) 8.4 Vòng lặp for (tt)

(cid:1) Ví dụ: print “”;

59

8.5 Lặp với for & foreach 8.5 Lặp với for & foreach for ($i=1, $j=0; $i<=10; $j+=$i, print

$i, $i++);

$arr = array(1, 2, 3, 4); foreach ($arr as &$value) { $value = $value * 2;

}

$arr = array("one", "two", "three"); foreach ($arr as $key => $value) {

echo "Key: $key; Value: $value";

}

60

8.5 Lặp với for & foreach (tt) 8.5 Lặp với for & foreach (tt)

foreach (array as variable) {

statements

}

Ví dụ:

$meal = array('breakfast' => 'Walnut Bun',

'lunch' => 'Cashew Nuts and White Mushrooms', 'dinner' => 'Eggplant with Chili Sauce');

print "

\n"; foreach ($meal as $key => $value) {

61

print "

\n";

} print '

$key$value
';

8.6 Các lệnh ngắt lặp 8.6 Các lệnh ngắt lặp

• break

Ngưng và thoát ra khỏi vòng lặp hiện tại

• continue

Ngưng thực hiện lần lặp hiện hành để chuyển sang lần lặp tiếo theo

62

8.7 Ví dụ 8.7 Ví dụ

} // $arr is now array(2, 4, 6, 8) unset($value); // break the reference with the last element ?>

\n";

}

foreach ($arr as $value) {

echo "Value: $value
\n";

63 } ?>

8.7 Ví dụ (tt) 8.7 Ví dụ (tt)

echo "Key: $key; Value: $value
\n";

}

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

echo "Key: $key; Value: $value
\n";

} ?>

Key: 0; Value: one Key: 1; Value: two Key: 2; Value: three Key: 0; Value: one Key: 1; Value: two Key: 2; Value: three

64

9. Hàm 9. Hàm

echo "$input[0] + $input[1] = ", $input[0]+$input[1];

}

lưu ý: dấu &

$input = array(4,7); takes_array($input); ?>

$string .= 'and something extra.';

} $str = 'This is a string, '; add_some_extra($str); echo $str;// outputs 'This is a string, and something extra.' ?> 65

9. Hàm 9. Hàm

function functionName ([parameter1]...[,parameterN]) {

statement[s] ;

} function functionName ([parameter1]...[,parameterN])

{

statement[s] ;

return ….. ;

} • Gọi hàm

Nhập tên hàm (không phân biệt chữ in hoa-thường) và cung cấp đầy đủ các tham số cần thiết trong cặp dấu ()

66

9. Hàm 9. Hàm • Kết thúc và trả kết quả

Lệnh return dùng để kết thúc và trả kết quả cũng như quyền điều hiển lại cho nơi đã gọi hàm. Nếu không có lệnh return thì mặc định hàm trả về giá trị NULL. Muốn trả về hơn một giá trị thì phải dùng mảng

• Truyền tham số

Mặc định các tham số được truyền vào bên trong hàm theo phương pháp tham trị. Trường hợp muốn thay đổi trực tiếp trên các tham số truyền thì người ta dùng phương pháp tham chiếu, thêm dấu & trước tên tham số (khi định nghĩa) cũng như tên biến được truyền làm tham (khi gọi hàm)

67

9. Hàm 9. Hàm • Tham số có giá trị mặc định

Tương tự cách khai báo và gán giá trị đầu tiên cho biến, thông thường loại tham số này nên đặt cuối trong danh sách tham số Khi gọi hàm nếu bỏ trống tại vị trí tham số có giá trị mặc định thì mặc nhiên giá trị mặc định được dùng cho tham số đó

• Hàm có số lượng tham số không xác định

Khai báo danh sách tham số rỗng () Sử dụng các hàm sau để lấy danh sách các tham số: func_num_args(): số lượng tham số khi hàm được gọi func_get_arg(i): giá trị các tham số thứ i được truyền (bắt đầu từ 0) func_get_args(): danh sách tất cả các tham số

68

9. Hàm 9. Hàm Biến tĩnh Thêm từ khóa static khi khai báo biến Được khởi tạo (và gán giá trị) một lần đầu tiên duy nhất trong suốt quá trình thực thi của script

Sử dụng biến toàn cục Khai báo lại biến toàn cục với từ khóa global (bên trong hàm) để có thể sử dụng được biến toàn cục này bên trong hàm Sử dụng các hàm sau để lấy danh sách các tham số: func_num_args(): số lượng tham số khi hàm được gọi func_get_arg(i): giá trị các tham số thứ i được truyền (bắt đầu từ 0) func_get_args(): danh sách tất cả các tham số

69

9. Hàm 9. Hàm • Phạm vi

Có giá trị sử dụng trong toàn script, ngay cả trước và sau khi định nghĩa

Lồng hàm Cho phép định nghĩa lồng hàm, thậm chí lồng bên trong một cấu trúc điều khiển (if, switch, while/do, while…) Loại hàm này có phạm vi trong toàn script và không thể định nghĩa lại

70

9. Hàm 9. Hàm

return "Making a cup of $type.\n";

} echo makecoffee(); echo makecoffee(null); echo makecoffee("espresso"); ?>

$device = is_null($coffeeMaker) ? "hands" : $coffeeMaker; return "Making a cup of ".join(", ", $types)." with $device.\n";

} echo makecoffee(); echo makecoffee(array("cappuccino", "lavazza"), "teapot"); ?>

71

9. Hàm 9. Hàm

return "Making a bowl of $type $flavour.\n";

}

return "Making a bowl of $type $flavour.\n";

}

// works as expected

echo makeyogurt("raspberry"); ?>

echo makeyogurt("raspberry");// won't work as expected ?>

72

9. Hàm 9. Hàm

return $num * $num; return $someref;

} $newref=&returns_reference(); ?> } echo square (4);//outputs '16‘ ?>

return array (0, 1, 2);

} list($zero,$one,$two)=small_numbers(); ?>

73

9. Hàm 9. Hàm

echo "In foo()
\n";

} function bar($arg = '') {

echo "In bar(); argument was '$arg'.
\n";

} // This is a wrapper function around echo function echoit($string) {

echo $string;

} $func = 'foo'; $func();

// This calls foo()

$func = 'bar'; $func('test'); // This calls bar()

$func = 'echoit'; $func('test'); // This calls echoit() ?>

74

9. Hàm 9. Hàm

function Variable() {

$name = 'Bar'; $this->$name(); // This calls the Bar() method

}

function Bar() {

echo "This is Bar";

}

} $foo = new Foo(); $funcname = "Variable"; $foo->$funcname(); // This calls $foo->Variable() ?>

75

10. Phạm vi của biến 10. Phạm vi của biến

global $a, $b; $b = $a + $b;

3

} Sum(); echo $b; ?>

$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];

76

} Sum(); echo $b; ?>

10. Phạm vi của biến 10. Phạm vi của biến

$a = 1; include "b.inc";

// global scope

?> Phạm vi của biến [a] có tác dụng trong cả b.inc ----------------------------------------------

function Test() {

echo $a;// reference to local scope variable

}

Test(); ?> Biến [a] ở ngoài và trong hàm Test khác nhau

77

10. Phạm vi của biến 10. Phạm vi của biến Tên biến

Mô tả

$GLOBALS

chứa tất cả các biến toàn cục mà đoạn script cục bộ có thể truy cập

chứa thông tin về môi trường của web server

$_SERVER

chứa thông tin của yêu cầu dạng GET

$_GET

chứa thông tin của yêu cầu dạng POST

$_POST

chứa thông tin từ HTTP cookie

$_COOKIE

chứa thông tin từ việc tải tập tin lên kiểu POST

$_FILE

$_ENV

chứa thông tin về môi trường thực thi của đoạn script

$_REQUEST chứa thông tin nhập vào của người dùng

$_SESSION chứa thông tin của các session được đăng ký

78

Ví dụ: Ví dụ:

$a = 0; echo $a; $a++;

static $a = 0; echo $a; $a++;

} Test(); Test(); ?>

} Test(); Test(); ?>

?

79

Tham khảo Tham khảo

• Website W3school • Slide lập trình Web, ĐH KHTN, 2007

80

Q & AQ & A

THE END