Giới thiệu sơ qua về Classes và Objects


1.     Class: là một tập hợp các biến và các hàm cùng làm việc với các biến này. Một class được định nghĩa theo cú pháp sau:

<?php
class Cart
{
var
$items; // Items in our shopping cart
function add_item ($artnr, $num)
{
$this->items[$artnr] += $num;
}
function
remove_item ($artnr, $num)
{
if (
$this->items[$artnr] > $num) {
$this->items[$artnr] -= $num;
return
true;
} else {
return
false;
}
}
}
?>

Ví dụ trên định nghĩa một class có tên là Cart, chứa các mảng kết hợp của các article trong một cart và hai hàm dùng để thêm và bỏ các thứ ra khỏi cart này.
Chú ý: trong PHP 4, chỉ có các hằng được khởi tạo cho các biến var mới được cho phép Để khởi tạo các biến với các giá trị không phải là hằng số, bạn cần có một hàm khởi tạo được gọi một cách tự động khi object được dựng từ lớp. Chẳng hạn như hàm được gọi trong một hàm dựng như sau:


<?php
class Cart
{
var
$todays_date = date(“Y-m-d”);
var
$name = $firstname;
var
$owner = ‘Fred ‘ . ‘Jones’;
var
$items = array(“VCR”, “TV”);
}
class
Cart
{
var
$todays_date;
var
$name;
var
$owner;
var
$items;
function
Cart()
{
$this->todays_date = date(“Y-m-d”);
$this->name = $GLOBALS[‘firstname’];
/* etc. . . */
}
}
?>

2.     extends: thường thì bạn cần các lớp với các biến và các hàm tương tự cho một lớp tồn tại khác. Thực tế, rất tốt khi bạn định nghĩa một lớp chung mà được sử dụng trong các đồ án của bạn và chỉnh sửa lớp này cho thích nghi với nhu cầu của mỗi đồ án. Để thực hiện điều này, các class có thể được mở rộng từ các class khác.Việc mở rộng hay dẫn xuất một lớp có tất cả các biến và các hàm của lớp cha ( điều này được xem là thừa kế) và những gì bạn thêm vào trong định nghĩa mở rộng. Không giống như các ngôn ngữ lập trình hướng đối tượng khác, PHP không hỗ trợ đa thừa kế, cho nên một lớp mở rộng chỉ luôn luôn phụ thuộc vào một lớp cha riêng rẻ của nó. Các lớp được mở rộng sẽ sử dụng từ khoá extends. Ví dụ:

class Named_Cart extends Cart{
var
$owner;
function
set_owner ($name){
$this->owner = $name;
}
}


Ví dụ trên định nghĩa một lớp Named_Cart mà có tất cả các biến và các hàm của lớp Cart thêm và cộng thêm các biến $owener và hàm set_owner().

3.     Hàm dựng: là những hàm trong một lớp mà được tự động gọi khi bạn tạo ra một minh hoạ mới của một lớp với từ khoá new. Trong PHP4, một lớp được xem là hàm dựng khi nó có cùng tên với tên lớp mà nó được định nghĩa trong đó.Ví dụ:

class Auto_Cart extends Cart
{
function
Auto_Cart()
{
$this->add_item (“10”, 1);
}
}

Ví dụ trên định nghĩa một lớp Auto_Cart mà một Cart có một hàm dựng khởi tạo mỗi khi một Auto_Cart mới được gọi bằng từ khoá new.
Các hàm dựng có thể có các đối số và các đối số này có thể là tuỳ chọn. Để sử dụng lớp mà không có tham số, tất cả các tham số đến hàm dựng nên là tuỳ chọn bằng cách cung cấp các giá trị mặc định. Ví dụ như sau:

<?php
class Cart
{
var
$items; // Items in our shopping cart
function add_item ($artnr, $num)
{
$this->items[$artnr] += $num;
}
function
remove_item ($artnr, $num)
{
if (
$this->items[$artnr] > $num) {
$this->items[$artnr] -= $num;
return
true;
} else {
return
false;
}
}
}
?>

Ví dụ trên định nghĩa một class có tên là Cart, chứa các mảng kết hợp của các article trong một cart và hai hàm dùng để thêm và bỏ các thứ ra khỏi cart này.
Chú ý: trong PHP 4, chỉ có các hằng được khởi tạo cho các biến var mới được cho phép Để khởi tạo các biến với các giá trị không phải là hằng số, bạn cần có một hàm khởi tạo được gọi một cách tự động khi object được dựng từ lớp. Chẳng hạn như hàm được gọi trong một hàm dựng như sau:


<?php
class Cart
{
var
$todays_date = date(“Y-m-d”);
var
$name = $firstname;
var
$owner = ‘Fred ‘ . ‘Jones’;
var
$items = array(“VCR”, “TV”);
}
class
Cart
{
var
$todays_date;
var
$name;
var
$owner;
var
$items;
function
Cart()
{
$this->todays_date = date(“Y-m-d”);
$this->name = $GLOBALS[‘firstname’];
/* etc. . . */
}
}
?>

2.     extends: thường thì bạn cần các lớp với các biến và các hàm tương tự cho một lớp tồn tại khác. Thực tế, rất tốt khi bạn định nghĩa một lớp chung mà được sử dụng trong các đồ án của bạn và chỉnh sửa lớp này cho thích nghi với nhu cầu của mỗi đồ án. Để thực hiện điều này, các class có thể được mở rộng từ các class khác.Việc mở rộng hay dẫn xuất một lớp có tất cả các biến và các hàm của lớp cha ( điều này được xem là thừa kế) và những gì bạn thêm vào trong định nghĩa mở rộng. Không giống như các ngôn ngữ lập trình hướng đối tượng khác, PHP không hỗ trợ đa thừa kế, cho nên một lớp mở rộng chỉ luôn luôn phụ thuộc vào một lớp cha riêng rẻ của nó. Các lớp được mở rộng sẽ sử dụng từ khoá extends. Ví dụ:


class Named_Cart extends Cart{
var
$owner;
function
set_owner ($name){
$this->owner = $name;
}
}


Ví dụ trên định nghĩa một lớp Named_Cart mà có tất cả các biến và các hàm của lớp Cart thêm và cộng thêm các biến $owener và hàm set_owner().

3.     Hàm dựng: là những hàm trong một lớp mà được tự động gọi khi bạn tạo ra một minh hoạ mới của một lớp với từ khoá new. Trong PHP4, một lớp được xem là hàm dựng khi nó có cùng tên với tên lớp mà nó được định nghĩa trong đó.Ví dụ:


class Auto_Cart extends Cart
{
function
Auto_Cart()
{
$this->add_item (“10”, 1);
}
}

Ví dụ trên định nghĩa một lớp Auto_Cart mà một Cart có một hàm dựng khởi tạo mỗi khi một Auto_Cart mới được gọi bằng từ khoá new.
Các hàm dựng có thể có các đối số và các đối số này có thể là tuỳ chọn. Để sử dụng lớp mà không có tham số, tất cả các tham số đến hàm dựng nên là tuỳ chọn bằng cách cung cấp các giá trị mặc định. Ví dụ như sau:

class Constructor_Cart extends Car{
function
Constructor_Cart($item = “10”, $num = 1){
$this->add_item ($item, $num);
}
}
// Shop the same old boring stuff.
$default_cart = new Constructor_Cart;
// Shop for real…
$different_cart = new Constructor_Cart(“20”, 17);


Chú ý: trong PHP4 khi một lớp không có hàm dựng thì hàm dựng của lớp cha sẽ được gọi nếu nó tồn tại.Ví dụ:

class A
{
function
A(){
echo
“I am the constructor of A.
\n”
;
}
function
B() {
echo
“I am a regular function named B in class A.
\n”
;
echo
“I am not a constructor in A.
\n”
;
}
}
class
B extends A{
function
C() {
echo
“I am a regular function.
\n”
;
}
}
// gọi B() như là một hàm dựng
$b = new B;

Hầu hết Class đều có 1 phương thức đặc biệt để khởi động đối tượng  được gọi là “Constructor” .Phương thức Constructors được gọi khi đối tượng tạo ra,nó thường dùng để khởi tạo các chức năng như gán thuộc tính với giá trị hay tạo ra các đối tượng khác từ đối tượng này.Chẳng hạn như phát biểu sau được khai báo với Class có Constructor .Chú ý Constructor : là phương thức có tên là tên của class:


<?php

class classname
{
function
classname($para)
{
echo
“Constructor called with parameter”;
echo
“$para”;
}

}

?>

Sau khi khai báo 1 class ,bạn cần phải tạo ra 1 đối tượng .Đối tượng này là 1 thành viên của class.Khi tạo ra 1 đối tượng mới ,bạn sử dụng từ khóa new và chỉ rõ class mà đối tượng đó trực thuộc

Ví dụ : tạo ra 1 class có tên là keke và trong class này khai báo 1 phương thức cũng có tên là keke với tham số $i:

<?php
class keke{
function
keke($i){
echo
“Contructor goi voi tham so $i .
;

}
}

?>
<html>
<head>
<title> Class va Object</title>
</head>
<body>
<?php
// khai bao su dung class

$a= new keke(“Ruoi”);
$b= new keke(“Muoi”);
$c= new keke(“Ruoi va Muoi”);
?>

</body>
</html>

Bên trong class ,bạn có thể truy cập con trỏ đặc biệt gọi là $this .Một thuộc tính của lớp hiện hành gọi $attribute.bạn có thể tham chiếu đến chúng bằng cách khai báo như sau:


$this->$attribute


Ví dụ : tạo ra 1 class có tên là name và phương thức có tên là name


<?php
class name{
var
$attribute;
function
get_name($name){

$this->attribute=$name;
echo
“Your name is $this->attribute”;

}
}

// tao 1 doi tuong moi

$a= new name();
$a->get_name(“iamhatinh”);

?>

Advertisements
By dbglory Posted in PHP

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s