I.GIỚI
THIỆU VỀ PHP
1. PHP là gì?
PHP
viết tắt của Hypertext Preprocessor ,là một ngôn ngữ lập trình được kết nối chặt
chẽ với máy chủ .Nói một cách đơn giản không theo thuật ngữ khoa học thì một
quá trình xử lý PHP được thực hiện trên máy chủ ( Windowns hoặc Unix ) .
Khi
một trang Web muốn dùng PHP thì phải đáp ứng được tất cả các quá trình xử lý
thông tin trong trang Web đó ,sau đó đưa ra kết quả như ngôn ngữ HTML
.Vì
quá trình xử lý này diễn ra trên máy chủ nên trang Web được viết bằng PHP sẽ dễ
nhìn hơn ở bất kì hệ điều hành nào.Cũng giống như hầu hết các ngôn ngữ lập
trình khác ,PHP có thể nối trực tiếp với HTML .Mã PHP tách biệt với HTML bằng
các thực thể đầu và cuối . Khi một tài liệu được đưa ra phân tích ,quá trình xử
lý PHP cỉ được thực hiệnở những điểm quan trọng,rồi sau đó đưa ra kết quả .
Nhưng
trớ trêu thay PHP cũng có khả năng tách biệt mã hoàn toàn với HTML. Nói rộng
hơn ,việc đưa ra sự kết hợp này rất chi là lý tưởng bởi vì nó cho phép các nhà
thiết kế có thể làm việc trên trang Web đã được bố trí theo kế hoạch mà không bị
cản trở bởi các mã.
PHP
là một ngôn ngữ lập trình kiểu script , chạy trên Server và trả về mã HTML cho
trình duyệt.
VD:
<html>
<head>
<title>Example</title>
</head>
<body>
<?php echo "Hi, I'm a PHP
script!"; ?>
</body>
</html>
Mã
PHP được đặt trong kiểu tag đặc biệt cho phép ta có thể vào hoặc ra khỏi chế độ
PHP
2. Lịch sử ra đời của PHP
PHP
được giới thiệu năm 1994 như một bộ sư tập của một ngôn ngữ lập
trình
chưa chặt chẽ và dựa vào Perl và các dụng cụ của trang chủ. Tá giả của cuốn
ngôn ngữ lập trình này ,ông R.Lerdoft đã làm cho tất cả phải giật mình bởi đã
sáng tạo ra nó.
Tới
năm 1998 việc công bố phiên bản 3 thi PHP mới chình thức phát triển
theo
hướng tách riêng của mình .giống như C và Perl ,PHP là một ngôn ngữ lập trình
có cấu trúc và tính năng đa dạng .Chính vì những điểm giống nhau này đã khuyến
khích các nhà thiết kế Web chuyên nghiệp chuyển qua sử dụng PHP .Với phiên bản
3 này PHP cũng cung cấp một số lượng cơ sở dữ liệu khá đò sộ gồm cả MySQL
,mSQL,OPBC và Oracle . Nó cũng có thể làm việc với các hình ảnh các file dữ liệu,FTP,XML
và host của các kĩ thuật ứng dụng khác.
Cho
đến nay thì PHP đã được công bố tới phiên bản 4 và càng ngày càng hoàn hảo và dễ
sử dụng.
Đến
nay PHP vẫn là một dịch vụ hàng đâu miễn phí .Tuy nhiên không giống như một số
ngôn ngứ khác càng ngày nó càng trở thành một xu hướng vì rất nhiều các trang
Web hiện nay được làm bằng PHP.
3. Tại sao nên dung PHP ?
a. Mã nguồn mở.
Có
lẽ nhiều bạn cũng biết PHP là một sản phẩm mã nguồn mở (Open source) nên việc
cài đặt và tùy biến PHP là miễn phí và tự do và tùy biến.
Vì
có ưu thế nguồn mở nên PHP có thể được cài đặt trên hầu hết các Web Server
thông dụng hiện nay như Apache, IIS…
b. Tính Cộng đồng của PHP
Là
một ngôn ngữ mã nguồn mở cùng với sự phổ biến của PHP thì cộng đồng PHP được
coi là khá lớn và có chất lượng.
Với
cộng đồng phát triển lớn, việc cập nhật các bản vá lỗi phiên bản hiện tại cũng
như thử nghiệm các phiên bản mới khiến PHP rất linh hoạt trong việc hoàn thiện
mình.
Cộng
đồng hỗ trợ, chia sẽ kinh nghiệm của PHP cũng rất dồi dào. Với rất nhiều diễn
đàn, blog trong và ngoài nước nói về PHP đã khiến cho quá trình tiếp cận của
người tìm hiểu PHP được rút ngắn nhanh chóng.
c. Thư viện phong phú
Ngoài
sự hỗ trợ của cộng đồng, thư viện script PHP cũng rất phong phú và đa dạng. Từ
những cái rất nhỏ như chỉ là 1 đoạn code, 1 hàm (PHP.net…) cho tới những cái lớn
hơn như Framework (Zend, CakePHP, CogeIgniter, Symfony…) ,ứng dụng hoàn chỉnh
(Joomla, WordPress, PhpBB…)
Với
thư viện code phong phú, việc học tập và ứng dụng PHP trở nên rất dễ dàng và
nhanh chóng. Đây cũng chính là đặc điểm khiến PHP trở nên khá nổi bật và cũng
là nguyên nhân vì sao ngày càng có nhiều người sử dụng PHP để phát triển web.
d. Hỗ trợ kết nối nhiều hệ cơ sở dữ liệu
Nhu
cầu xây dựng web có sử dụng cơ sở dữ liệu là một nhu cầu tất yếu và PHP cũng
đáp ứng rất tốt nhu cầu này. Với việc tích hợp sẵn nhiều Database Client trong
PHP đã làm cho ứng dụng PHP dễ dàng kết nối tới các hệ cơ sở dữ liệu thông dụng.
Việc
cập nhật và nâng cấp các Database Client đơn giản chỉ là việc thay thế các
Extension của PHP để phù hợp với hệ cơ sở dữ liệu mà PHP sẽ làm việc.
Một
số hệ cơ sở dữ liệu thông dụng mà PHP có thể làm việc là: MySQL, MS SQL,
Oracle, Cassandra…
e. Lập trình hướng đối tượng
Ngày
nay, khái niệm lập trình hướng đối tượng (OOP) đã không còn xa lạ với lập trình
viên. Với khả năng và lợi ích của mô hình lập trình này nên nhiều ngôn ngữ đã
triển khai để hỗ trợ OOP.
Từ
phiên bản PHP 5, PHP đã có khả năng hỗ trợ hầu hết các đặc điểm nổi bật của lập
trình hướng đối tượng như là Inheritance, Abstraction, Encapsulation,
Polymorphism, Interface, Autoload…
Với
việc ngày càng có nhiều Framework và ứng dụng PHP viết bằng mô hình OOP nên lập
trình viên tiếp cận và mở rộng các ứng dụng này trở nên dễ dàng và nhanh chóng.
f. Tính Bảo mật
Bản
thân PHP là mã nguồn mỡ và cộng đồng phát triển rất tích cực nên có thể nói PHP
khá là an toàn.
PHP
cũng cung cấp nhiều cơ chế cho phép bạn triển khai tính bảo mật cho ứng dụng của
mình như session, các hàm filter dữ liệu, kỹ thuật ép kiểu, thư viện PDO (PHP
Data Object) để tương tác với cơ sở dữ liệu an toàn hơn.
Kết
hợp với các kỹ thuật bảo mật ở các tầng khác thì ứng dụng PHP sẽ trở nên chắc
chắn hơn và đảm bảo hoạt động cho website.
g. Khả năng mở rộng cho PHP
Bằng
việc xây dựng trên nền ngôn ngữ C và là mã nguồn mở nên khả năng mở rộng cho ứng
dụng PHP có thể nói là không có giới hạn.
Với
thư viện phong phú và khả năng mở rộng lớn, ứng dụng PHP có thể tương tác với hầu
hết các loại ứng dụng phổ biến như xử lý hình ảnh, nén dữ liệu, mã hóa, thao
tác file PDF, Office, Email, Streaming…
Bạn
hoàn toàn có thể tự xây dựng cho mình các Extension để tối ưu, bổ sung các chức
năng cho PHP cũng như tối ưu luôn Core của PHP để phục vụ cho các mục đích mở rộng
website của mình.
h. Môi trường làm việc, thị trường & tương
lai của PHP
Như
hầu hết các ngôn ngữ lập trình hiện đại khác, bạn cũng có thể sử dụng các IDE để
phát triển ứng dụng PHP như Zend Studio, Nusphere PhpED, NetBeans…Với các tính
năng nổi bật như là Code & Syntax Highlighting, Auto-Complete, Project
Manager, Code Navigator, Debug…thì việc code PHP sẽ trở nên dễ dàng và nhanh
chóng hơn.
Với
việc ngày càng có nhiều ứng dụng lớn viết bằng PHP, sự đa dạng trong ứng dụng và Framework làm cho
thị trường và tương lai dành cho các bạn yêu thích PHP là rất lớn. Ngoài ra, bạn
có thể thử sức với chứng chỉ ZCE của Zend trong lĩnh vực PHP. Rất nhiều công ty
đang chọn PHP làm ngôn ngữ phát triển website cho khách hàng cũng như sản phẩm
của riêng họ nên việc hiểu biết và chuyên sâu về công nghệ web nói chung và
chuyên sâu về PHP nói riêng sẽ là một lợi thế rất lớn cho các bạn.
4. Tại sao PHP lại là ưu tiên hàng đầu của của bạn
?
Đối
với nhưng người còn xa lạ với chương trình này đây là sự lôi cuốn mạnh mẽ nhất
.Thậm chí là rất ít hoặc không có một chương trình nào có thể tạo ra một tốc độ
đáng kinh ngặc trong việc phát triển bành trướng như PHP .Bởi vì nó đc thiết kế
đặc biệt trong các ứng dụng Web ,PHP xây dựng được rất nhiều tính năng để đáp ứng
những nhu cầu chung nhất.
PHP
là một mã nguồn thông tin mở : Bởi vì mã nguồn của PHP sẵn có nên cộng đồn các
nhà phát triển Web luôn có ý thức cải tiến nó ,nâng cao để khắc phục các lỗi
trong chương trình này .
PHP
rất ổn định và tương hợp ,mới đây PHP đã vận hành khá ổn định trên các hệ điều
hành gồm cả Unix ,windown... Đồng thời nó cũng nối với một số máy chủ như IIS
hay Apache
5. File PHP là gì?
File
PHP có thể chứ text thuần, các thẻ HTML, các đoạn mã script khác.
File
PHP chạy và hiển thị trên trình duyệt ở dạng mã HTML.
Một
file php có thể chứa một trong các phần mở rộng sau: “.php”, “.php3″, “.phtml”
6. Làm thế nào để chạy được PHP?
Để
chạy được PHP thì yêu cầu máy chủ của bạn phải hỗ trợ và cài đặt Apache, MySQL,
PHP.
I. Ngôn
ngữ PHP
1. Có 4 cách để dùng PHP;
a. <? echo ("this is the simplest,
an SGML processing instruction "); ?>
b. <?php echo("if you want to serve
XML documents, do like this "); ?>
c. <script
language="php">
echo ("some editors (like FrontPage)
don't like processing
instructions");
</script>
d. <% echo ("You may optionally use
ASP-style tags"); %>
<%= $variable; # This is a
shortcut for "<%echo .." %>
Cách
1 chỉ có thể sử dụng nếu những tag ngắn được cho phép sử dụng. Có thể sửa
short_open_tag trong cấu hình của php hoặc biên dịch file php với lựa chọn cho
phép dùng các tag ngắn.
Tương
tự như vậy, cách thứ 4 chỉ có tác dụng nếu asp_tag được đặt trong file cáu hình
của PHP
PHP
cho phép hỗ trợ các kiểu chú thích của cả C, C++ và Unix shell.
VD:
<?php
echo "This is a test"; // This is a
one-line c++ style comment
/* This is a multi line comment
yet
another line of comment */
echo "Another Test"; # This is
shell-style style comment
?>
2. Các kiểu dữ liệu:
a. Số nguyên : Được khai báo và sử dụng giá trị
giiống với C:
VD:
$a
= 1234; # decimal number
$a
= -123; # a negative number
$a
= 0123; # octal number (equivalent to 83 decimal)
$a
= 0x12; # hexadecimal number (equivalent to 18 decimal)
b. Số thực:
VD
:
$a
= 1.234; $a = 1.2e3;
Chú
ý: Khi sử dụng các số thực để tính toán , có thể sẽ làm mất giá trị của nó. Vì
vậy, nên sử dụng các hàm toán học trong thư viện chuẩn để tính toán
c. Xâu :
Có
2 cách để xác định 1 xâu: Đặt giữa 2 dấu ngoặc kép (") hoặc giữa 2 dấu ngoặc
đơn ('.
Chú
ý: Các biến giá trị sẽ không được khai triển trong xâu giữa 2 dấu ngoặc đơn.
d. Mảng :
Mảng
thực chất là gồm 2 bảng : bảng chỉ số và bảng liên kết.
- Mảng 1 chiều : Có thể dùng hàm : list()
hoặc array() hoặc liệt kê các giá trị của từng phần tử trong mảng để tạo mảng .
Có thể thêm các giá trị vào mảng để tạo thành 1 mảng. --> Dùng giống trong C
Có
thể dùng các hàm asort(), arsort(), ksort(), rsort(), sort(), uasort(),
usort(), and uksort() để sắp xếp mảng. Tuỳ thuộc vào việc bạn định sắp xếp theo
kiểu gì.
- Mảng nhiều chiều: Tương tự C. bạn có thể dùng như VD sau:
$a[1] = $f; # one dimensional examples
$a["foo"] = $f;
$a[1][0]
= $f; # two dimensional
$a["foo"][2]
= $f; # (you can mix numeric and associative indices)
$a[3]["bar"]
= $f; # (you can mix numeric and
associative indices)
PHP3
không thể tham chiếu trự tiếp từ một mảng nhiều chièu khi ở bên trong 1 xâu:
VD
:
$a[3]['bar']
= 'Bob';
echo
"This won't work: $a[3][bar]";
Kết
quả trả ra sẽ là: This won't work: Array[bar].
Nhưng
với VD sau sẽ chạy đúng:
$a[3]['bar']
= 'Bob';
echo
"This will work: " . $a[3][bar];
Với
PHP4, vấn đề sẽ được giả quyết bằng cách cho mảng vào giữa 2 dấu ngoặc móc { }
VD
:
$a[3]['bar'] = 'Bob';
echo "This will work:
{$a[3][bar]}";
PHP
không yêu cầu phải khai báo trước kiểu dữ liệu cho các biến,
Biểu
dữ liệu của biến sẽ phụ thuộc vào kiểu dữ liệu mà bạn gán cho nó,
VD
:
$foo
= "0"; // $foo là kí tự ASCII
48
$foo++; // $foo is xâu "1" (ASCII 49)
$foo
+= 1; // $foo là số nguyên (2)
$foo
= $foo + 1.3; // $foo là số thực (3.3)
$foo
= 5 + "10 Little Piggies"; // $foo là số nguyên (15)
e. Biến - giá trị:
PHP quy định một biến được biểu diễn bắt đầu
bằng dấu $, sau đó là một chữ cái hoặc dấu gạch dưới.
3. Một số biến đã được tạo sẵn :
argv : Mảng tham số truyền cho script. Khi đoạn
script chạy bằng dòng lệnh, tham số này sẽ được dùng giống như C để truy nhập
các tham số trên dòng lệnh.
argc
: số các tham số đựoc truyền. Dùng với argv;
PHP_SELF
: tên cỷa đoạn mã script đang thực hiện. Nếu PHP đang được chạy từ dòng lệnh
thì tham số này không có giá trj.
HTTP_COOKIE_VARS:
một mảng các giá trị được truyền tới script hiện tại bằng HTTP cookie. Chỉ có
tác dụng nếu "track_vars" trong cấu hình được đặt hoặc chỉ dẫn
<?php_track_vars?>
HTTP_GET_VARS:
Mảng các giá trị truyền tới script thông qua phương thức HTTP GET. Chỉ có tác dụng
nếu "track_vars" trong cấu hình được đặt hoặc chỉ dẫn
<?php_track_vars?>
4. Phạm vi giá trị:
PHP
coi 1 biến có một giới hạn. Để xác định một biến toàn cục (global) có tác dụng
trong một hàm , ta cần khai báo lại. Nếu không giá trị của biến sẽ được coi như
là cục bộ trong hàm.
VD
:
$a = 1;
$b
= 2;
Function
Sum () {
global $a, $b;
$b = $a + $b;
}
Sum
();
echo
$b;
Khi
có khai báo global ở trên, $a và $b được cho biết đó là những biến toàn cục. Nếu không có khai báo global, $a và $b chỉ được
coi là các biến bên trong hàm Sum(). Điều này khác với C
Một
cách khác để dùng biến toàn cục trong 1 hàm là ta dung mảng $GLOBAL của PHP
VD
: ở trên sẽ có thể viết như sau:
$a = 1;
$b
= 2;
Function
Sum () {
$GLOBALS["b"] =
$GLOBALS["a"] + $GLOBALS["b"];
}
Sum
();
echo
$b;
Một
chú ý khác là khai báo static. Với khai báo này bên trong một hàm với 1 biến cục
bộ, giá trị của biến cục bộ đó sẽ không bị mất đi khi ra khỏi hàm.
VD
:
Function
Test () {
static $a = 0;
echo $a;
$a++;
}
Với
khai báo như trên , $a sẽ không mất đi giá trị sau khi thực hiện lơi gọi hàm
Test() mà $a sẽ được tăng lên 1 sau mỗi lần gọi hàm Test().
5. Tên biến:
Một
biến có thể gắn với 1 cái tên .
VD:
$a = "hello";
$$a
= "world";
==>
$hello = "world"
và
echo
"$a ${$a}";
<==>
echo "$a $hello";
Kết
quả ra sẽ là : hello world
6. Các giá trị bên ngoài phạm vi PHP
HTML
Form : khi 1 form gắn với 1 file php qua phương thức POST
VD:
<form action="foo.php3"
method="post">
Name:
<input type="text" name="name"><br>
<input
type="submit">
</form>
PHP
sẽ tạo 1 biến $name bao gồm mọi giá trị trong truờng Name của Form.
PHP
có thể hiểu được một mảng một chiều gồm các giá trị trong 1 form.
Vì
vậy, bạn có thể nhóm những giá trị liên quan lại với nhau hoặc sử dụng đặc tính
này để nhận các giá trị từ 1 đầu vào tuỳ chọn.(multi select input)
Khi
tính chất track_vars được đặt trong cấu hình hoặc có chỉ dẫn
<?php_track_vars?> . các giá trị được submit được lấy ra qua phương thức
GET và POST có thể lấy từ 2 mảng toàn cục $HTTP_POST_VARS và $HTTP_GET_VARS
IMAGE
SUBMIT:
Khi
dùng 1 image để thực hiện submit, có thể dùng tag như sau:
<input
type=image src="image.gif" name="sub">
Khi
người dùng click chuột trên ảnh, form tương ứng sẽ được gửi tới server kèm theo
2 giá trị thêm vào : sub_x và sub_y. Những biến này sẽ lưu giữ toạ đọ mà người
dùng đã click chuột trên ảnh. Người lạp trình có kinh nghiệm sẽ thấy rằng trên
thực tế, trình duyệt gửi các giá trị có chu kỳ thời gian nhưng PHP đã tạo cảm
giãc gần như việc gửi các giá trị đó là liên tục.
HTTP
Cookies :
PHP
hỗ trỡ HTTP cookies theo định dạng của Netscape. Cookies file lưu giữ thông tin
của các trình duyệt từ xa và qua đó có thể theo dõi hay nhận biết người sử dụng.
Có thể dùng Cookies bằng hàm SetCookie(). Hàm này cần được gọi trước khi thông
tin được gửi tới trình duyệt. Bất kỳ cookie nào gửi tới bạn từ máy khách
(client) sẽ tự động chuyển thành dữ liệu của phương thức GET và POST.
Nếu
bạn muốn có nhiều giá trị trong 1 cookie, chỉ cần thêm vào dấu [ ] với tên của
cookie.
VD
:
SetCookie ("MyCookie[]",
"Testing", time()+3600);
Chú
ý rằng cookie sẽ thay thế cho cookie cùng tên, trừ trườg hợp khác đường dẫn hoặc
miền.
BIẾN
MÔI TRƯỜNG:
PHP
tự động tạo biến cho các biến môi trường như 1 biến bình thường của PHP
VD
:
echo $HOME; /* Shows the HOME environment variable, if
set. */
Vì
thông tin tới qua các phương thức GET, POST , Cookie cũng tự đông tạo các biến
PHP, thỉnh thoảng bạn nên đọc 1 biến từ môi trường để chắc chắn rằng bạn có
đúng version. Hàm getenv() và putenv() giúp bạn đọc và ghi với các biến môi trường.
DẤU
CHẤM TRONG TÊN BIẾN:
Bình
thường, PHP không thay đổi tên biến khi biến đó được truyền vào đoạn script.
Tuy nhiên, nên chú ý rằng dáu chấm (.) không phải là một ký hiệu hợp lệ trong
tên biến đối với PHP. Vì vậy, PHP sẽ tự động thay thế các dấu chấm bằng dấu gạch
dưới.(_)
7. Constants
PHP
định nghĩa sẵn một vài hằng số:
_FILE_
: tên của script file đang được thực hiện.
_LINE_
: số dòng của mã script đang được thực hiện trong script file hiện tại.
_PHP_VERSION_
: version của PHP
_PHP_Ó
: tên hệ điều hành mà PHP đang chạy
TRUE
FALSE
E_ERROR
: báo hiệu có lỗi
E_PARSE
: báo lỗi sai khi biên dịch
E_NOTICE
: Một vài sự kiện có thể là lỗi hoặc không.
E_ALL
:
Có
thể định nghĩa một hằng số bằng hàm define()
VD
:
<?php
define("CONSTANT",
"Hello world.");
echo
CONSTANT; // outputs "Hello world."
?>
8. Biểu thức
Biểu
thức là một phần quan trọng trong PHP. Phần lớn mọi thứ ban viết đều được coi
như 1 biểu thức. Điều này có nghĩa là mọi thứ đều có 1 giá trị.
Một
dạng cơ bản nhất của biểu thức bao gồmcác biến và hằng số.
PHP
hỗ trợ 3 kiểu giá trị cơ bản nhất: số nguyên, số thực, và xâu. Ngoài ra còn có mảng và đối tượng. Mỗi kiểu
giá trị này có thẻ gán cho các biến hay làm giá trị trả ra của các hàm.
Bạn
có thể thao tác với các biến trong PHP giống như với trong C.
VD
:
$b
= $a = 5; /* assign the value five into
the variable $a and $b */
$c
= $a++; /* post-increment, assign
original value of $a
(5)
to $c */
$e
= $d = ++$b; /* pre-increment, assign the incremented value of
$b
(6) to $d and $e */
/*
at this point, both $d and $e are equal to 6 */
$f
= double($d++); /* assign twice the
value of $d before
the
increment, 2*6 = 12 to $f */
$g
= double(++$e); /* assign twice the
value of $e after
the
increment, 2*7 = 14 to $g */
$h
= $g += 10; /* first, $g is incremented
by 10 and ends with the
value
of 24. the value of the assignment (24) is
then
assigned into $h, and $h ends with the value
of
24 as well. */
9. Các cấu trúc câu lệnh
a. If
....else....else if:
if
(điều kiện) { do something; }
elseif ( điều kiện )
{ do something;}
else
{ do something;}
b. Vòng lặp :
while
( DK) { ...}
do
{ .....} white ( DK );
for
(bieuthuc1; bieuthuc2; bieu thuc3) {.....}
PHP
4 only :
foreach(array_expression
as $value) statement
foreach(array_expression
as $key => $value) statement
c. Break và Continue:
break
: thoát ra khỏi vòng lặp hiện thời
continue
: bỏ qua vòng lặp hiện tại, tiếp tục vòng tiếp theo.
d. Switch
switch
(tên biến) {
case
trường hợp 1: ..... break;
case
trường hợp 2: ..... break;
case
trường hợp 3: ..... break;
default
:
}
10. Hàm
Dùng
giống với C++. Ngoại trừ bạn không cần phải khai báo kiểu cho tham số của hàm.
a. Tham trị :
VD:
function takes_array($input) {
echo "$input[0] + $input[1] = ",
$input[0]+$input[1];
}
b. Tham biến:
function
add_some_extra(&$string) {
$string
.= 'and something extra.';
}
c. Tham số có giá trị mặc định:
function
makecoffee ($type = "cappucino") {
return
"Making a cup of $type. ";
}
Chú
ý : khi sử dụng hàm có đối số có giá trị mặc định, các biến này sẽ phải nằm về
phía phải nhát trong danh sách đối số.
VD
:
Sai
;
function
makeyogurt ($type = "acidophilus", $flavour) {
return "Making a bowl of $type $flavour.
";
}
Đúng
;
function
makeyogurt ($flavour, $type = "acidophilus") {
return "Making a bowl of $type $flavour.
";
}
d. Giá trị trả lại của hàm:
Có
thể là bất kỳ giá trị nào, Tuy vây, không thể trả lại nhiều giá trị riêng lẻ
nhưng có thể trả lại một mảng các giá trị.
VD
:
function
small_numbers() {
return array (0, 1, 2);
}
Để
trả lại một tham trỏ, bạn cần có dấu & ở cả khai báo của hàm cũng như ở giá
trị trả lại.
VD
:
function
&returns_reference() {
return &$someref;
}
$newref
= &returns_reference();
e. Hàm biến:
PHP
cho phép sử dụng hàm giá trị Nghĩa là
khi một biến được goi có kèm theo dấu ngoặc đơn , PHP sẽ tìm hàm có cùng tên với
giá trị biến đó và thực hiện
VD
:
<?php
function
foo() {
echo "In foo()<br> ";
}
function
bar( $arg = '' ) {
echo "In bar(); argument was
'$arg'.<br> ";
}
$func
= 'foo';
$func();
$func
= 'bar';
$func(
'test' );
?>
11. Các toán tử
PHP
có các toán tử cho các phép số học : + - * / %
Các
toán tử logic : and or xor ! && ||
Toán
tử thao tác với bit : & | ^ ~ << >>
Toán
tử so sánh : ==, != ,< ,> ,<=, >=, ==== (bằng va cùng kiểu - PHP4
only), !== (khác hoặc khác kiểu - PHP4
only)
Toán
tử điều khiển lỗi : @ - khi đứng trước 1 biểu thức thì các lỗi của biểu thức sẽ
bị bỏ qua và lưu trong $php_errormsg
VD:
<?php
/*
Intentional SQL error (extra quote): */
$res
= @mysql_query ("select name, code from 'namelist") or
die ("Query failed: error was
'$php_errormsg'");
?>
Toán
tử thực thi : ` `- PHP sẽ thực hiện nội
dung nằm giữa 2 dấu ` như 1 lệnh shell. Trả ra giá trị là kết quả thực hiện lệnh
VD
:
$output
= `ls -al`; //liệt kê các file bằng lệnh Linux
echo
"<pre>$output</pre>";
12. Lớp và đối tượng
Class:
là tập hợp các biến và hàm làm việc với các biến này. Một lớp có định dạng
như sau:
<?php
class
Cart {
var $items;
// Items in our shopping cart
// Add $num articles of $artnr to the cart
function add_item ($artnr, $num) {
$this->items[$artnr] += $num;
}
// Take $num articles of $artnr out of the
cart
function
remove_item ($artnr, $num) {
if ($this->items[$artnr] > $num) {
$this->items[$artnr] -= $num;
return true;
} else {
return false;
}
}
}
?>
Lớp
Cart ở đây là một kiểu dữ liệu, vì vậy bạn có thể tạo một biến có kiểu này với
toán tử new
VD:
$cart
= new Cart;
$cart->add_item("10",
1);
Lớp
có thể được mở rộng bằng những lớp khác. Lớp mới thu được có tất cả những biến
và hàm của cá lớp thành phần. Thực hiện việc thừa kế này bằng từ khoá "extends". Chú ý : kế thừa nhiều lớp
1 lúc không được chấp nhận.
VD
:
class
Named_Cart extends Cart {
var $owner;
function set_owner ($name) {
$this->owner = $name;
}
}
Các
hàm khởi tạo của lớp được gọi tự động khi bạn gọi toán tử new.
Tuy
nhiên, các hàmkhởi tạo của lớp cha sẽ không được gọi khi hàm khởi tạo của lớp
con được gọi. Hàm khởi tạo có thể có đối số hoặc không,
13. Tham chiếu
Tham
chiếu trong PHP có nghĩa là lấy cùng 1 giá trị bằng nhiều tên biến khác nhau.
Khác với con trỏ trong C, tham chiếu là một bảng các bí danh.
Chú
ý : trong PHP, tên biến và nôi dung của biến là khác nhau. Vì vậy, cùng 1 nội
dugn có thể có nhiều tên khác nhau.
Tham
chiếu PHP cho phép bạn tạo 2 biến có cùng nôi dung.
VD
:
$a
= & $b; -- > $a, $b trỏ tới cùng 1 giá trị.
Tham
chiếu truỳen giá trị bằng tham chiếu. Thực hiện việc này bằng cách tạo một hàm
cục bộ và truyền giá trị được tham chiếu
VD:
function
foo (&$var) {
$var++;
}
$a=5;
foo
($a);
-->
Kết quả : $a = 6;
Giá
trị trả lại của một hàm bằng tham chiếu rất tiện khi bạn muốn sử dụng hàm để
tìm 1 giá trị trong 1 phạm vi nào đó. \
VD
:
function
&find_var ($param) {
...code...
return $found_var;
}
$foo
=& find_var ($bar);
Khi
bạn muốn loại bỏ mối liên kết giữa tên biến và giá trị của biến, sử dụng hàm
unset()
VD
:
$a
= 1;
$b
=& $a;
unset
($a);
14. Thao tác với ảnh
PHP không bị giới hạn với mã HTML được trả
lại cho trình duyệt. Vì vậy, có thể dùng PHP để tạo và thao tác với các file ảnh
có định dạng khác nhau, bao gồm :gif, png, jpg, wbmp, and xpm. PHP có thể đưa
các file ảnh trực tiếp đến các trình duyệt. Bạn sẽ cần biên dịch PHP với thư viện
GD bao gồm các hàm thao tác với ảnh. GD và PHP có thể sẽ cần có thêm 1 số thư
viện khác, tuỳ thuộc vào định dạng của file ảnh cần dùng.
VD
: Tạo ảnh GIF với PHP
<?php
Header("Content-type: image/gif");
$string=implode($argv," ");
$im =
imagecreatefromgif("images/button1.gif");
$orange = ImageColorAllocate($im, 220, 210,
60);
$px = (imagesx($im)-7.5*strlen($string))/2;
ImageString($im,3,$px,9,$string,$orange);
ImageGif($im);
ImageDestroy($im);
?>
giả
sử VD trên trong file button.php . KHi đó, để sử dụng ta dùng tag : <img
src="button.php?text">. ,
15. MySQL và PHP
Để
connect tới 1 CSDL trên MySQL server rất đơn giản. Bạn chỉ cần dùng hàm
mysql_connect(host, user, password) để mở 1 kết nối tới MYSQL server với kết quả
là giá trị trả về của hàm (Giả sử là biến $db).
Sau
đó, dùng hàm mysql_select_db(database_name, link_id) để chọn CSDL bạn muốn kết
nối.
Để
thực hiện một câu lệnh truy vấn, dùng hàm mysql_query(query, link_ID). Giá trị
trả lại của hàm là kết quả của câu truy vấn. Nếu bỏ qua link_ID thì kết nối cuối
cùng tới MySQL server sẽ được thực hiện.
Bạn
có thể xem ví dụ sau sẽ hiểu rõ hơn.
<html>
<body>
<?php
$db
= mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$result
= mysql_query("SELECT * FROM employees",$db);
printf("First
Name: %s<br> ", mysql_result($result,0,"first"));
printf("Last
Name: %s<br> ", mysql_result($result,0,"last"));
printf("Address:
%s<br> ", mysql_result($result,0,"address"));
printf("Position:
%s<br> ", mysql_result($result,0,"position"));
?>
</body>
</html>
Ngoài cách dùng hàm mysql_result() để
lấy kết quả thực hiện , bạn có thể dùng các hàm khác : mysql_fetch_row(),
mysql_fetch_array(), and mysql_fetch_object().
*
mysql_fetch_row($result) : trả về một mảng các dữ liệu lấy từ 1 dòng trong
CSDL. Nếu đã ở cuối CSDL, giá trị trả về là false. Bạn phải dùng chỉ số của các
trường trong CSDL nếu muốn lấy dữ liệu,
VD
:
<html>
<body>
<?php
$db
= mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$result
= mysql_query("SELECT * FROM employees",$db);
echo
"<table border=1> ";
echo
"<tr><td>Name</td><td>Position</tr> ";
while
($myrow = mysql_fetch_row($result)) {
printf("<tr><td>%s
%s</td><td>%s</td></tr> ", $myrow[1], $myrow[2],
$myrow[3]);
}
echo
"</table> ";
?>
</body>
</html>
*
mysql_fetch_array (int result [, int result_type]) : trả về một mảng chứa dữ liệu
lấy từ 1 dòng trong CSDL. Tương tự như mysql_fetch_row() nhưng bạn có thể lấy
trực tiếp tên trường để lấy dữ liệu.
VD
: Cùng một CSDL như trên, bạn có thể thấy
sự khác biệt
<html>
<body>
<?php
$db
= mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$result
= mysql_query("SELECT * FROM employees",$db);
if
($myrow = mysql_fetch_array($result)) {
do {
printf("<a
href="%s?id=%s">%s %s</a><br> ", $PHP_SELF,
$myrow["id"], $myrow["first"], $myrow["last"]);
} while ($myrow = mysql_fetch_array($result));
}
else {
echo "Sorry, no records were
found!";
?>
</body>
</html>
*mysql_fetch_object
: chuyển kết quả thành một đối tượng với các trường là các trường trong CSDL.
VD
:
<?php
mysql_connect
($host, $user, $password);
$result
= mysql_db_query ("database", "select * from table");
while
($row = mysql_fetch_object ($result)) {
echo $row->user_id;
echo $row->fullname;
}
mysql_free_result
($result);
?>
Không có nhận xét nào:
Đăng nhận xét