Nghiên cứu sâu về lập trình hướng đối tượng trong php (Phần 2)

Một đối tượng thường bao gồm trạng thái (thuộc tính) và hành động

1. Xác định đối tượng 
Ví dụ:
– Lập trình viên là 1 đối tượng
– Con chó là 1 đối tượng
2. Xác định trạng thái (thuộc tính) [attribute (property)]
– Các trạng thái (thuộc tính) của lập trình viên là: Họ, tên, ngày sinh, quê quán, giới tính, email, điện thoại, kinh nghiệm, ưu điểm, nhược điểm, kỹ năng, tài khỏan…
– Các trạng thái (thuộc tính) của con chó là: Tên, màu lông , giống, đuôi, chân, tai, màu mắt …..


3. Xác định hành động

– Các hành động (behaviour) của lập trình viên: làm việc, ăn, ngủ, học, nghiên cứu, đi chơi, gửi tiền vào tài khỏan, rút tiền khỏi tài khoản
– Các hành động (behaviour) của con chó: sủa, vẫy tai, chạy, ăn
Ví dụ: Tạo lớp ‘Lập trình viên’
Chúng ta tạo 1 tập tin có tên class.programer.php với nội dung sau:
2.1 Khai báo các thuộc tính của đối tượng

{geshibot lang=”php” head=””}//class.programer.php
<?php
class Programer {
//Dinh nghia cac thuoc tinh cua doi tuong
public $firstName; // Ho
public $lastName; // Ten
public $birthday; // Ngay sinh
public $sex; //Giới tính
public $email;
public $phone; // dien thoai
public $experienced; // Kinh nghiem
public $advantage; // uu diem
public $weakness; // nhuoc diem
public $skill; // Ky nang
}
?>{/geshibot}

2.2 Tạo hàm cấu trúc cho class 

{geshibot lang=”php” head=””}//class.programer.php
<?php
class Programer {
//Dinh nghia cac thuoc tinh cua doi tuong
public $firstName; // Ho
public $lastName; // Ten
public $birthday; // Ngay sinh
public $sex; //Giới tính
public $email;
public $phone; // dien thoai
public $experienced; // Kinh nghiem
public $advantage; // uu diem
public $weakness; // nhuoc diem
public $skill; // Ky nang
// Tao ham cau truc cho class
public function __construct($varLastName, $varBirthday)
{
$this->lastName = $varLastName;
$this->birthday = $varBirthday;
}

// In thông tin member
public function printInfo()
{
$info = ‘<b>Thong tin lap trinh vien:</b>’;
$info .= ‘<br><b>Ten:</b> ‘ . $this->lastName;
$info .= ‘<br><b>Ngay sinh:</b> ‘ . $this->birthday;
return $info;
}
}
?>{/geshibot}

Chúng ta tạo 1 tập tin có tên oop.php với nội dung sau:

{geshibot lang=”php” head=””}//oop.php
<?php
// Nhung file class.programer.php vao trang
include(‘class.programer.php’);

// Goi doi tuong Programer
$objProgramer = new Programer(‘Hoang’,’14-02-1985′);

// In ra thong tin cua lap trinh vien
echo $objProgramer->printInfo();
?>{/geshibot}

Chúng ta sẽ được kết quả như sau
Thong tin lap trinh vien:
Ten: Hoang
Ngay sinh: 14-02-1985
– Theo cấu trúc chuẩn của PHP chúng ta sẽ tạo 1 hàm cấu trúc cho class
public function __construct($varLastName, $varBirthday);
– Khi ta gọi khai báo đối tượng $objProgramer với cú pháp
$objProgramer = new Programer(‘Hoang’,’14-02-1985′);
– Lúc đó 2 giá tri ‘Hoang’ và ’14-02-1985′ được gán vào 2 tham số $varLastName và $varBirthday.
Lệnh $this->lastName = $varLastName; sẽ gán giá trị $varLastName vào cho thuộc tính public $firstName; được khai báo phí trên
Tương tự lệnh $this->birthday = $varBirthday; cũng sẽ gán giá trị $varBirthday vào cho thuộc tính public $birthday; được khai báo phí trên
– Sau khi 2 tham số $varLastName và $varBirthday được gán cho 2 thuộc tính $firstName và $birthday, lúc này bạn có thể sử dụng tùy ý 2 giá trị này trong class bằng cú pháp $this-><tên thuộc tính>
vd:
$this->birthday;
$this->lastName;
– Khi đã có thông tin về đối tượng objProgramer bạn có thể in những thông tin đó ra bằng cách gọi hàm printInfo() trong class
echo $objProgramer->printInfo();
– Trong hàm prinInfo() của class Programer. Hàm này này lấy các giá trị đã được gán ở phía trên in ra kết quả
– Trong hàm tạo cấu trúc của class ta đã truyền được 2 giá trị cho 2 thuộc tính bây giờ ta sẽ tạo các hàm để truyền các giá trị cho các thuộc tính còn lại. Ví dụ ta tạo hàm lấy giá trị cho thuộc tính $firstName

{geshibot lang=”php” head=””}//class.programer.php
<?php
class Programer {
//Dinh nghia cac thuoc tinh cua doi tuong
public $firstName; // Ho
public $lastName; // Ten
public $birthday; // Ngay sinh
public $sex; //Giới tính
public $email;
public $phone; // dien thoai
public $experienced; // Kinh nghiem
public $advantage; // uu diem
public $weakness; // nhuoc diem
public $skill; // Ky nang
// Tao ham cau truc cho class
public function __construct($varLastName, $varBirthday)
{
$this->lastName = $varLastName;
$this->birthday = $varBirthday;
}
// Ham nhan gia tri cua firstName (Ho)
public function setFirstName($varFirstName)
{
$this->firstName = $varFirstName;
}
// In thông tin member
public function printInfo()
{
$info = ‘<b>Thong tin lap trinh vien:</b>’;
$info .= ‘<br><b>Ten:</b> ‘ . $this->lastName;
$info .= ‘<br><b>Ngay sinh:</b> ‘ . $this->birthday;
return $info;
}
}
?>{/geshibot}

– Chúng ta thêm hàm setFirstName($varFirstName) hàm này có chức năng nhận giá trị và truyền cho thuộc tính public $firstName;.
– Và sau đó chúng ta thêm 1 dòng lệnh $info .= ‘<br><b>Ho:</b> ‘ . $this->firstName; vào hàm printInfo() để in ra họ của lập trình viên
– Chúng ta thêm dòng lệnh $objProgramer->setFirstName(‘Nguyen Van ‘); trang oop.php 1 chút để sử dụng được hàm setFirstName()

{geshibot lang=”php” head=””}//oop.php
<?php
// Nhung file class.programer.php vao trang
include(‘class.programer.php’);

// Goi doi tuong Programer
$objProgramer = new Programer(‘Hoang’,’14-02-1985′);

// Dua gia tri vao cho thuoc tinh $firstName trong Programer class
$objProgramer->setFirstName(‘Nguyen Van’);

// In ra thong tin cua lap trinh vien
echo $objProgramer->printInfo();
?>{/geshibot}

Tiếp theo chúng ta sẽ tiếp tục truyền giá trị vào cho từng thuộc tính còn lại

{geshibot lang=”php” head=””}//oop.php
<?php
/**
* Zend Framework
*
* @category Training
* @package Zend Framework Basic
* @copyright Copyright (c) 2008 Zend Vietnamese Team (http://www.zend.vn)
* @version $Id: class.programer.php 2008-02-10 01:35:30Z
* @author Marsu (ZVN Founder team)
*@email zendvn@yahoo.com This e-mail address is being protected from spambots. You need JavaScript enabled to view it OR marsu@zend.vn This e-mail address is being protected from spambots. You need JavaScript enabled to view it
*
*/
//Dinh nghia cac thuoc tinh cua doi tuong
public $firstName = null; // Ho
public $lastName; // Ten
public $birthday = null; // Ngay sinh
public $sex; //Gi?i tính
public $email;
public $phone; // dien thoai
public $experienced; // Kinh nghiem
public $advantage; // uu diem
public $weakness; // nhuoc diem
public $skill; // Ky nang
// Tao ham cau truc cho class
public function __construct($varLastName, $varBirthday)
{
$this->lastName = $varLastName;
$this->birthday = $varBirthday;
}
// Ham nhan gia tri cua firstName (Ho)
public function setFirstName($varFirstName) {
$this->firstName = $varFirstName;
}
// Ham nhan gia tri cua sex (gioi tinh)
public function setSex($varSex) {
$this->sex = $varSex;
}

// Ham nhan gia tri cua email
public function setEmail($varEmail) {
$this->email = $varEmail;
}

// Ham nhan gia tri cua phone
public function setPhone($varPhone) {
$this->phone = $varPhone;
}

// Ham nhan gia tri cua experienced
public function setExperienced($varExperienced) {
$this->experienced = $varExperienced;
}

// Ham nhan gia tri cua experienced
public function setAdvantage($varAdvantage) {
$this->advantage = $varAdvantage;
}

// Ham nhan gia tri cua weakness
public function setWeakness($varWeakness) {
$this->weakness = $varWeakness;
}

// Ham nhan gia tri cua skill
public function setSkill($varSkill) {
$this->skill = $varSkill;
}

// In thông tin member
public function printInfo(){
$info = ‘<b>Thong tin lap trinh vien:</b>’;
$info .= ‘<br><b>============================</b>’;
$info .= ‘<br><b>Ho:</b> ‘ . $this->firstName;
$info .= ‘<br><b>Ten:</b> ‘ . $this->lastName;
$info .= ‘<br><b>Ngay sinh:</b> ‘ . $this->birthday;
$info .= ‘<br><b>Gioi tinh:</b> ‘ . $this->sex;
$info .= ‘<br><b>Email:</b> ‘ . $this->email;
$info .= ‘<br><b>Phone:</b> ‘ . $this->phone;
$info .= ‘<br><b>Kinh nghiem:</b> ‘ . $this->experienced;
$info .= ‘<br><b>Uu diem:</b> ‘ . $this->advantage;
$info .= ‘<br><b>Nhuoc diem:</b> ‘ . $this->weakness;
$info .= ‘<br><b>Ky nang:</b> ‘ . $this->skill;

return $info;
}
?>{/geshibot}

{geshibot lang=”php” head=””}//oop.php
<?php
/**
* Zend Framework
*
* @category Training
* @package Zend Framework Basic
* @copyright Copyright (c) 2008 Zend Vietnamese Team (http://www.zend.vn)
* @version $Id: oop.php 2008-02-10 01:35:30Z
* @author Marsu (ZVN Founder team)
*@email zendvn@yahoo.com This e-mail address is being protected from spambots. You need JavaScript enabled to view it OR marsu@zend.vn This e-mail address is being protected from spambots. You need JavaScript enabled to view it
*
*/
// Nhung file class.programer.php vao trang
include(‘class.programer.php’);

// Goi doi tuong Programer
$objProgramer = new Programer(‘Hoang’,’14-02-1985′);

// Dua gia tri vao cho thuoc tinh $firstName trong Programer class
$objProgramer->setFirstName(‘Nguyen Van’);

// Dua gia tri vao cho thuoc tinh $sex trong Programer class
$objProgramer->setSex(‘Khong xac dinh’);

// Dua gia tri vao cho thuoc tinh $email trong Programer class
$objProgramer->setEmail(‘ hoang@zend.vn This e-mail address is being protected from spambots. You need JavaScript enabled to view it ‘);

// Dua gia tri vao cho thuoc tinh $phone trong Programer class
$objProgramer->setPhone(‘0908.115.113’);

// Dua gia tri vao cho thuoc tinh $phone trong Programer class
$objProgramer->setPhone(‘0908.115.113’);

// Dua gia tri vao cho thuoc tinh $experienced trong Programer class
$objProgramer->setExperienced(‘3 nam voi …….. Vo Lam Truyen Ky’);

// Dua gia tri vao cho thuoc tinh $advantage trong Programer class
$objProgramer->setAdvantage(‘nha^.u khong doi thu’);

// Dua gia tri vao cho thuoc tinh $weakness trong Programer class
$objProgramer->setWeakness(‘nha^.u xong, hay om cot den’);

// Dua gia tri vao cho thuoc tinh $weakness trong Programer class
$objProgramer->setWeakness(‘nha^.u say, hay om cot den’);

// Dua gia tri vao cho thuoc tinh $skill trong Programer class
$objProgramer->setSkill(‘sai dau danh do’);

// In ra thong tin cua lap trinh vien
echo $objProgramer->printInfo();
?>{/geshibot}

Chúc bạn thành công

FOLLOW US
Comments
  1. Daigiadinh

    Online-tìm bạn

    • Admin

      Về OOP, tài liệu của nó vô cùng khô khan và khó hiểu. Thực ra việc gói gọn nó lại đến đây cũng là gần hết bài rồi. Mình đang định làm 1 cái project về OOP để mọi người dễ hiểu hơn

  2. han vo

    Bạn ơi cho mình xin tài liệu nghiên cứu tiếp được không. Đợi bài viết bạn lâu quá.

    • Admin

      Mình chỉ có tài liệu tiếng anh thôi. Mình đang tổng hợp và viết lại cho nó dễ hiểu

Leave a Reply

Your email address will not be published. Required fields are marked *