Lập trình PHP - Chương 2_Làm quen với PHP (tiếp)

 Các lớp ñược khai báo thông qua từ khóa class, các

thuộc tính khai báo dưới dạng các biến còn các

phương thức ñược khai báo dưới dạng các hàm

class tên_lớp {

//danh_sách_các biến, hằng, lớp

//danh_sách_các_hàm

}

pdf47 trang | Chuyên mục: PHP | Chia sẻ: dkS00TYs | Lượt xem: 1606 | Lượt tải: 1download
Tóm tắt nội dung Lập trình PHP - Chương 2_Làm quen với PHP (tiếp), để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ên_ñối_tượng = new tên_lớp();
 ðể gọi hàm trong lớp ta sử dụng toán tử ->
$tên_ñối_tượng->tên_hàm();
 Hoặc dùng toán tử :: ñể gọi ñến một hàm hay
một biến (biến phải ñược khai báo static)
$tên_ñối_tượng::tên_hàm();
$tên_ñối_tượng::$tên_biến;
Hàm tự ñộng gọi __autoload
 Trong trường hợp chúng ta sử dụng một lớp chưa
ñược ñịnh nghĩa thì hàm autoload sẽ tự ñộng
ñược gọi.
function __autoload($class_name)
{
require_once $class_name.’.php’;
}
 ðiều này là chưa từng có trong các phiên bản
PHP trước ñây, chỉ từ PHP 5.x mới có tính năng
này.
Hàm tạo __construct
 Cho phép bạn khai báo hàm tạo theo phương
thức mới
class A
{
function __construct(){
//dòng lệnh
}
}
 Nếu không tìm thấy hàm tạo theo phương thức
mới này, PHP sẽ tìm hàm tạo trong số các hàm
của lớp với tên hàm trùng với tên lớp (cách cũ).
Hàm hủy __destruct
 Ngược lại với hàm tạo, hàm hủy ñược triệu gọi
khi ñối tượng bị hủy
 ðược gọi trong hai tình huống
– Trong lúc thực thi mã lệnh, khi mà tất cả các liên quan
ñến ñối tượng bị không còn nữa.
– Hoặc khi ñến cuối cùng của mã lệnh và PHP kết thúc các
truy vấn.
function __destruct()
{
}
 $tên_ñối_tượng = NULL;
Truy cập phương thức và thuộc tính 
sử dụng con trỏ $this
 Public, protected, private với các thuộc tính
– Public: có thể truy xuất từ bên ngoài hoặc từ bên trong
phương thức thông qua con trỏ ñặc biệt $this
class A {
public $a = “public_member”;
function printHello()
{
print “Xin chao”;
}
function test()
{
print $this->a;
print $this->printHello();
}
}
(tiếp)
– Protected: chỉ có thể truy xuất từ bên trong phương thức
của lớp ñó hoặc từ một lớp kế thừa từ lớp ñó.
class A {
protected $a = “protected_member”;
function printHello()
{
print $this->a;
}
}
class B extends class A {
protected $a = “new protected_member”;
function subprintHello()
{
print $this->a;
}
}
(tiếp)
– Private: chỉ có thể ñược truy xuất từ bên trong lớp ñó,
cũng sử dụng con trỏ $this như protected
class A {
private $a = “private_member”;
function printHello()
{
print $this->a;
}
}
(tiếp)
 Public, protected, private với các phương thức
– Cũng tương tự như với các thuộc tính với các ñịnh nghĩa
và ràng buộc cho các kiểu public, protected và private
– Cách khai báo cũng tương tự như khai báo các thuộc
tính
class A {
public function printHello()
{
}
}
Static
 Biến static có thể coi như một biến toàn cục ñược
ñặt trong 1 lớp nhưng có thể truy xuất từ bất kỳ
ñâu qua lớp ñó, sử dụng toán tử ::
 Khi gọi biến static trong hàm ta sử dụng toán tử
self thay cho con trỏ this
class A {
static $a = 5;
function printHello(){
print self::$a;}
}
print A::$a++;//6
A::printHello();//5
(tiếp)
 Phương thức static: tương tự như biến static
nhưng ngoài việc gọi nó bằng toán tử self nó có
thể ñược truy xuất bằng con trỏ this trong 1 hàm
class A {
static function printHello() {
print “Xin chao”;
}
function show () {
self::printHello();//hoặc $this->printHello();
}
}
A::printHello();//A::show(); sẽ lỗi khi dùng $this
$obj = new A();
$obj->show();//hoặc $obj->printHello();
(tiếp)
 Chú ý ñể tránh sự không rõ ràng giữa toán tử
this và self hay -> và :: người ta thường quy
ước như sau:
– Khi gọi ñến thuộc tính hay ñối tượng kiểu static trong
một lớp hay từ ngoài lớp gọi ñến 1 hàm hay 1 thuộc tính
của lớp nên dùng toán tử self và ::
– Khi gọi ñến thuộc tính hay ñối tượng bình thường trong
một lớp hay từ ngoài lớp gọi ñến 1 hàm hay 1 thuộc tính
của lớp thì dùng toán tử this và ->
Hằng số trong lớp
 Có thể ñịnh nghĩa hằng trên một lớp
 Nó có giá trị không ñổi và khai báo không có $
 Tên hằng không ñược trùng với tên biến, lớp,
hàm hay kết quả của 1 phép toán hay 1 hàm
const myConst = “Const_Value”;
 ðể lấy giá trị của 1 hằng ta chỉ có thể dùng toán
tử :: hoặc thông qua một phương thức
ða hình
 ða hình trong PHP sử dụng các lớp và thừa kế
giữa chúng, làm cho việc miêu tả các tình huống
trong cuộc sống thực ñược dễ dàng hơn.
 Nó cũng làm cho dễ dàng hơn với lập trình viên
khi phát triển 1 dự án bằng cách sử dụng lại
những mã lệnh chính thông qua thừa kế
class child extends class parent {
}
(tiếp)
 PHP không hỗ trợ ña thừa kế như C++
 PHP cung cấp 1 giải pháp khác cho việc tạo ra
nhiều hơn 1 quan hệ của lớp bằng cách sử dụng
interfaces như là Java
parent:: và self::
 PHP hỗ trợ 2 lớp dành riêng ñể dễ dàng hơn trong
việc viết các ứng dụng hướng ñối tượng
– Self:: thường ñược dùng ñể truy cập ñến các ñối tượng,
phương thức kiểu static hay hằng số của lớp hiện tại
– Parent:: gọi ñến lớp cha và thường ñược dùng khi muốn
gọi hàm tạo hay các phương thức của lớp cha
Toán tử instanceof
 Có giá trị trả về kiểu logic (true hay false)
function checkifClass ($shape)
{
if ($shape instanceof Rectangle) {
print $shape->name;
print “ is a Class A ”;
}
}
checkifClass(new Square());
(tiếp)
 Dùng ñể kiểm tra xem một ñối tượng có phải
thuộc về một lớp nào ñó hay không?
 Toán tử này cũng dùng ñể kiểm trả xem một ñối
tượng có implement một interfaces hay không?
Interfaces
 Là một lớp cho phép chỉ ñịnh phương thức nào
của lớp ñó ñược thực thi mà không phải ñịnh
nghĩa phương thức ñó làm việc như thế nào
 Nếu một lớp ñược khai báo là implements từ lớp
interfaces mà không có các phương thức như
lớp interfaces ñã khai báo thì chương trình sẽ
báo lỗi
interface A {
//các_phương_thức (*)
}
class MyClass implements A {
//các_phương_thức (**)
(tiếp)
 Một lớp có thể thực thi nhiều hơn một interfaces
nhưng phải ñảm bảo các phương thức trong các
interfaces ñó không ñược trùng tên nhau
(tiếp)
 Mọi phương thức mô tả trong Interfaces phải
ñược mô tả public
 Interfaces có thể ñược thừa kế từ các
interfaces khác (cho phép ña thừa kế)
interface T1 extends T2, T3, ... {
}
Final
 Final Method: cũng giống như Java, Final
Method trong PHP ñược dùng ñể chắc chắn là
phương thức ñó không thể ñược implement lại
trong các lớp khác xuất phát từ nó.
(tiếp)
 Final Class: tương tự như Final Method, một
lớp ñã ñược khai báo là Final thì mọi lớp extend
từ nó sẽ không ñược thực hiện
Overloading
 Trong PHP chúng ta có thể ñịnh nghĩa lại các hàm
trong lớp cha bằng các hàm cùng tên trong lớp
con với chức năng hoàn toàn khác nhau
 Có thể tham chiếu chính xác các phương thức
hay phương thức ñã bị overload bằng cách dùng
parent và toán tử tham chiếu ::
Exception Handling
 Các mã lệnh ñược bắt exception trong khối try
{...}
 Khi exception ñược ném vào catch nó sẽ ñược bắt
lần lượt qua các khối catch () {...}
 Khi một catch ñã ñược bắt thì những catch ở sau
sẽ bị bỏ qua
(tiếp)
 Throw : chỉ có thể ném ra một object
chứ không phải bất kỳ một loại dữ liệu cơ bản
nào như strings hay integers
 Có một lớp exception ñược ñịnh nghĩa trước ñã
tồn tại gọi là Exception, tất cả các lớp ñều phải
thừa kế từ nó.
 Việc ném một ñối tượng mà không ñược thừa kế
từ lớp này sẽ gây ra lỗi.
Các phương thức truyền dữ liệu trong PHP
Các ñối tượng nhập dữ liệu
 Cho phép người sử dụng nhập dữ liệu trên trang web. Dữ 
liệu này có thể ñược gửi về server ñể xử lý.
 Người sử dụng nhập dữ liệu thông qua các ñiều khiển 
(controls). Có nhiều loại control:
1. Form
2. Oneline Textbox
3. Checkbox
4. Radio Button
5. Button
6. Combo box (drop-down menu)
7. Listbox
8. Hộp nhập văn bản nhiều dòng (TextArea)
9. …
Phương thức truyền dữ liệu
 PHP xử lý dữ liệu qua khái niệm form của HTML
 Form có hai thuộc tính quan trọng:
– action=“...”: ðịa chỉ trang web nhận dữ liệu khi form
ñược submit (thường là ñịa chỉ tương ñối)
– method=“...”; Có hai phương thức là Get (mặc ñịnh) và
Post
(tiếp)
Truyền dữ liệu (biến) qua URL:
– Các biến ñược truyền thành từng cặp 
biến=giá_trị phân cách bởi dấu &
– Phân cách với ñịa chỉ trang ban ñầu bởi dấu 
hỏi chấm (?)
Ví dụ: Truyền 3 biến a, b, c có giá trị lần lượt 
là 1, 2, -3 vào trang 
qua URL:
(tiếp)
 Khi ta Submit 1 form sử dụng phương thức GET, 
dữ liệu ñược truyền qua URL:
– Tên các biến là tên ñối tượng trên form
– Giá trị biến là giá trị NSD nhập vào ñối tượng
– ðể ñọc giá trị các biến trong PHP: Sử dụng mảng $_GET, 
các chỉ số là tên biến.
Ví dụ: Trong trang index.php ở trên ñọc các biến 
a, b, c:
$a = $_GET[“a”];
$b = $_GET[“b”];
$c = $_GET[“c”];
(tiếp)
Truyền dữ liệu qua phương thức Post
– Dữ liệu của Form post ñược truyền trong thân 
của yêu cầu HTTP
– ðể ñọc dữ liệu sử dụng mảng $_POST với các 
chỉ số là tên của ñối tượng trên form gửi ñến.
Các khái niệm nâng cao
Cookie
 Là một ñoạn dữ liệu ñược truyền ñến browser từ
server
 ðược gửi ngược lại server mỗi khi browser tải
website ñó từ server
 Hàm tạo Cookie:
function create_cookie ($name,$value) {
$expires = time() + 60*60*24*365;
setcookie($name,$value,$expires)
}
(tiếp)
 Hàm lấy Cookie
function get_cookie ($name)
{
if (isset($_COOKIE[$name]))
{
return urldecode($_COOKIE[$name]);
}
else 
{
return FALSE;
}
}
(tiếp)
 Xóa một cookie cũng tương tự như tạo một 
cookie nhưng thay giá trị khởi tạo bằng 0
create_cookie(‘tên_cookie’,0);
 Cookie cũng từ ñộng xóa sau khoảng thời gian ñã 
ñược quy ñịnh bởi biến $expires
Session
 Là khoảng thời gian người dùng giao tiếp 
với ứng dụng
Bắt ñầu từ khi người sử dụng truy cập vào 
ứng dụng lần ñầu tiên cho ñến khi thoát 
khỏi ứng dụng
session_start(); //phải ñặt ở trên 
cùng tất cả các dòng lệnh
(tiếp)
Khởi tạo giá trị cho session
$_SESSION[“tên_session”] = “giá_trị”;
 Mỗi session có một ñịnh danh (ID) duy nhất ñược 
tạo ra trên server khi ñược khởi tạo. ðể lấy giá trị 
hiện tại của session_id
$id = session_id();
 Khởi tạo giá trị cho session
$_SESSION[“tên_session”] = “giá_trị”;
(tiếp)
Hủy một session
session_unset(“tên_session”);
Hủy mọi session 
session_destroy();
Thiết kế Web với Netbean và Xampp
PHP Project
Tạo một project mới
Sources Folder
/opt/lampp/htdocs/coursek50/
Configuration
Run as: Local Web Site
THE END

File đính kèm:

  • pdfLập trình PHP - Chương 2_Làm quen với PHP (tiếp).pdf
Tài liệu liên quan