SlideShare a Scribd company logo
1 of 30
Download to read offline
Biển Hoàng - DEHA Technology
bien@deha-soft.com
Object Oriented Programing
in PHP
Principles, Examples and Practices
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
Lập trình hướng đối tượng - OOP
OOP - Object Oriented Programing.
- Là phương pháp lập trình dựa trên các đối tượng của hệ thống.
- Các đối tượng trong lập trình, là “trừu tượng hóa” của các đối tượng trong thực tế.
- Là mô hình lập trình phổ biến nhất hiện nay.
- Giúp tổ chức code dễ đọc, dễ bảo trì, nâng cấp.
- Gồm 4 đặc tính: Trừu tượng, đa hình, kế thừa, đóng gói.
2
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Đối tượng - Object
3
- Là bất cứ thứ gì.
- Một Object có
+ Định danh - Identity
+ Có thuộc tính - Attribute & trạng thái.
+ Có hành vi - Behavior (có thể làm, bị làm).
- Một Object có thể chứa Object khác.
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Lớp - Class
4
- Class là một bản thiết kế - “blueprint” của Object
- Một Class được mô tả như sau
+ Name: Nó là gì?
+ Attribute: Nó được mô tả thế nào?
+ Behavior: Nó có thể làm gì?
- Từ 1 Class có thể tạo ra được
không giới hạn Object
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - 4 đặc tính
5
APIE
1. Abstraction
2. Polymorphism
3. Inheritance
4. Encapsulation
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Trừu tượng - Abstraction
6
● Chỉ quan tâm tới những đặc điểm tổng quát, mà không quan tâm tới cụ thể một
đối tượng.
● Bỏ qua những thứ không liên quan
● Bỏ qua những thứ không quan trọng
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Đóng gói - Encapsulation
7
● Che dấu đi đặc tính, hay hành vi của đối tượng.
● Chỉ cho phép 2 đối tượng tác động lên nhau theo cơ chế định trước.
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Kế thừa - Inheritance
8
● Cho phép một đối tượng sử dụng đặc tính, hành vi của đối tượng khác có cùng
loại mà không cần định nghĩa lại.
● Cho phép các đối tượng chia sẻ hoặc mở rộng các đặc tính, hành vi.
● Code reuse.
Ví dụ: Đối tượng “Chó Chihuahua" có những đặc tính và hành vi mà đối tượng
“Chó" có.
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Đa hình - Polymorphism
9
● Những đối tượng có hành vi giống nhau nhưng lại có cách thực hiện và kết quả
khác nhau.
Ví dụ: Chó và Mèo đều có hành vi “kêu", nhưng chó kêu “Gâu gâu" còn mèo
kêu “meo meo".
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Class trong PHP
10
class SimpleClass
{
// Property declaration
public $var = 'a default value';
// Method declaration
public function displayVar() {
echo $this->var;
}
}
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Thuộc tính và phương thức
11
// Property declaration
public $var = 'a default value';
// Method declaration
public function displayVar() {
echo $this->var;
}
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Khởi tạo Object
12
// Create new object from Class
$instance = new SimpleClass();
// Assign object to other variable
$assigned = $instance;
$reference =& $instance;
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Truy cập trong Class.
13
Sử dụng: $this
// Property declaration
public $var = 'a default value';
// Method declaration
public function displayVar() {
echo $this->var;
}
// To String
public function toString() {
return $this->displayVar()
}
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Kế thừa - Extends
14
class Foo
{
public function printItem($string)
{
echo 'Foo: ' . $string . PHP_EOL;
}
public function printPHP()
{
echo 'PHP is great.' . PHP_EOL;
}
}
class Bar extends Foo
{
public function printItem($string)
{
echo 'Bar: ' . $string . PHP_EOL;
}
}
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Abstract Class
15
Define
abstract class AbstractClass
{
abstract protected function getValue();
abstract protected function
prefixValue($prefix);
public function printOut() {
print $this->getValue() . "n";
}
}
Using
class ConcreteClass1 extends AbstractClass
{
protected function getValue() {
return "ConcreteClass1";
}
public function prefixValue($prefix) {
return "{$prefix}ConcreteClass1";
}
}
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Interface
16
Define
interface iTemplate
{
public function setVariable($name, $var);
public function getHtml($template);
}
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Thực hiện - Implement
17
class Template implements iTemplate
{
private $vars = array();
public function setVariable($name, $var)
{
$this->vars[$name] = $var;
}
public function getHtml($template)
{
foreach( $this->vars as $name => $value) {
$template = str_replace ('{' . $name . '}', $value, $template);
}
return $template;
}
}
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Access Modifier
18
● Public: Có thể truy cập được từ mọi nơi.
● Protected: Chỉ truy cập được từ chính nó Class nào kế thừa nó.
● Private: Chỉ cho phép truy cập trong nội tại Class.
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Access Modifier
19
class MyClass
{
// Declare a public method
public function MyPublic() { }
// Declare a protected method
protected function MyProtected() { }
// Declare a private method
private function MyPrivate() { }
// This is public
function Foo()
{
$this->MyPublic();
$this->MyProtected();
$this->MyPrivate();
}
}
$myclass = new MyClass();
$myclass->MyPublic(); // Works
$myclass->MyProtected(); // Fatal Error
$myclass->MyPrivate(); // Fatal Error
$myclass->Foo(); // All work
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Access Modifier
20
class MyClass2 extends MyClass
{
// This is public
function Foo2()
{
$this->MyPublic();
$this->MyProtected();
$this->MyPrivate(); // Fatal Error
}
}
$myclass2 = new MyClass2();
$myclass2->MyPublic(); // Works
$myclass2->Foo2(); // Public and Protected work, not Private
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Constructor
21
class BaseClass {
function __construct() {
print "In BaseClass
constructorn";
}
}
class SubClass extends BaseClass {
function __construct() {
parent::__construct();
print "In SubClass
constructorn";
}
}
class OtherSubClass extends BaseClass {
// inherits BaseClass's constructor
}
// In BaseClass constructor
$obj = new BaseClass();
// In BaseClass constructor
// In SubClass constructor
$obj = new SubClass();
// In BaseClass constructor
$obj = new OtherSubClass();
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Static
22
● Một thuộc tính hoặc phương thức được khai báo “static" thì có thể truy cập mà không
cần phải khởi tạo Object từ Class.
● Một thuộc tính “static" thì không thể truy cập từ Object được khởi tạo từ Class.
● Một phương thức “static" thì có thể truy cập từ Object được khởi tạo từ Class.
class Foo {
public static function aStaticMethod() {
// ...
}
}
Foo::aStaticMethod();
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Final
23
● Một phương thức được khai báo là “final" thì không cho phép các lớp con kế
thừa nó thay đổi lại nội dung phương thức.
● Một Class được khai báo là “final" thì không cho phép Class khác kế thừa.
class BaseClass {
final public function moreTesting() {
echo "BaseClass::moreTesting() calledn";
}
}
final class BaseClass {
final public function moreTesting() {
echo "BaseClass::moreTesting() calledn";
}
}
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - PHP Namespace
24
● Sử dụng để nhóm 1 hoặc nhiều Class vào thành 1 nhóm.
● Có tác dụng để gói các phần của chương trình vào thành 1 gói cho dễ quản lý.
● Cho phép tồn tại các Class có tên cùng nhau nhưng khác Namespace.
● Quản lý mã nguồn và chương trình dễ dàng hơn.
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - PHP Namespace
25
namespace myname;
class MyClass {
public function myfunction() {
echo “Hello World";
}
}
$a = new MyClass();
$a->myfunction(); // Hello World
$c = new mynameMyClass();
$c->myfunction() // Hello World
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Trait
26
● Là cách tái sử dụng Code trong PHP.
● Loại bỏ đi 1 số nhược điểm của việc đơn kế thừa.
● Trait chỉ bao gồm phương thức và không thể khởi tạo Object từ Trait.
trait ezcReflectionReturnInfo {
function getReturnType() { /*1*/ }
function getReturnDescription() { /*2*/ }
}
class ezcReflectionMethod extends ReflectionMethod {
use ezcReflectionReturnInfo;
}
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Magic method - Đọc thêm.
27
● Là những phương thức phản ứng lại sự kiện diễn ra trong 1 Object.
● Một số Magic Method thường dùng
__construct()
__destruct()
__call()
__callStatic()
__get()
__set()
__isset()
__unset()
_wakeup()
__toString()
__invoke()
__set_state()
__clone()
__debugInfo()
__sleep()
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Mô hình MVC
28
Bạn có thực sự hiểu đúng?
Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai
OOP - Mô hình MVC
29
Là một “Architecture Pattern” trong xây dựng hệ thống.
- Model: Chứa Logic xử lý nghiệp vụ.
- Controller: Điều hướng, tương tác với Model và View
- View: Hiển thị dữ liệu, tương tác với Client side
THE END
30

More Related Content

What's hot

Báo cáo bài tập lớn Website tin tức bằng PHP
Báo cáo bài tập lớn Website tin tức bằng PHPBáo cáo bài tập lớn Website tin tức bằng PHP
Báo cáo bài tập lớn Website tin tức bằng PHPMinh Chiến
 
Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...
Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...
Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...hoainhan1501
 
HTTP POST DOS (Denial Of Service) (Demo tấn công DOS, phòng chống)
HTTP POST DOS (Denial Of Service) (Demo tấn công DOS, phòng chống)HTTP POST DOS (Denial Of Service) (Demo tấn công DOS, phòng chống)
HTTP POST DOS (Denial Of Service) (Demo tấn công DOS, phòng chống)Tú Cao
 
Báo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmBáo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmThuyet Nguyen
 
Bai 4 bieu dien do thi va thuat toan tim kiem
Bai 4   bieu dien do thi va thuat toan tim kiemBai 4   bieu dien do thi va thuat toan tim kiem
Bai 4 bieu dien do thi va thuat toan tim kiemDuy Vọng
 
Hệ thống quản lý bán hàng online
Hệ thống quản lý bán hàng onlineHệ thống quản lý bán hàng online
Hệ thống quản lý bán hàng onlineHan Nguyen
 
Thiết kế mạng lan cho tòa nhà 3 tầng - luận văn, đồ án, đề tài tốt nghiệp (Đặ...
Thiết kế mạng lan cho tòa nhà 3 tầng - luận văn, đồ án, đề tài tốt nghiệp (Đặ...Thiết kế mạng lan cho tòa nhà 3 tầng - luận văn, đồ án, đề tài tốt nghiệp (Đặ...
Thiết kế mạng lan cho tòa nhà 3 tầng - luận văn, đồ án, đề tài tốt nghiệp (Đặ...ThíckThọ Thì ThêThảm
 
Giao thức bảo mật SSL
Giao thức bảo mật SSLGiao thức bảo mật SSL
Giao thức bảo mật SSLconglongit90
 
Báo cáo tốt nghiệp
Báo cáo tốt nghiệpBáo cáo tốt nghiệp
Báo cáo tốt nghiệpMy Đá
 
An toan thong tin
An toan thong tinAn toan thong tin
An toan thong tinTrung Quan
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2pisu412
 
Cơ sở dữ liệu
Cơ sở dữ liệuCơ sở dữ liệu
Cơ sở dữ liệuThành Luân
 
Tấn công sql injection sử dụng câu lệnh select union
Tấn công sql injection sử dụng câu lệnh select unionTấn công sql injection sử dụng câu lệnh select union
Tấn công sql injection sử dụng câu lệnh select unionNguyễn Danh Thanh
 
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"Tú Cao
 

What's hot (20)

Báo cáo bài tập lớn Website tin tức bằng PHP
Báo cáo bài tập lớn Website tin tức bằng PHPBáo cáo bài tập lớn Website tin tức bằng PHP
Báo cáo bài tập lớn Website tin tức bằng PHP
 
Co so du lieu
Co so du lieuCo so du lieu
Co so du lieu
 
Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...
Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...
Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...
 
HTTP POST DOS (Denial Of Service) (Demo tấn công DOS, phòng chống)
HTTP POST DOS (Denial Of Service) (Demo tấn công DOS, phòng chống)HTTP POST DOS (Denial Of Service) (Demo tấn công DOS, phòng chống)
HTTP POST DOS (Denial Of Service) (Demo tấn công DOS, phòng chống)
 
Báo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmBáo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềm
 
Bai 4 bieu dien do thi va thuat toan tim kiem
Bai 4   bieu dien do thi va thuat toan tim kiemBai 4   bieu dien do thi va thuat toan tim kiem
Bai 4 bieu dien do thi va thuat toan tim kiem
 
Đề tài: Xây dựng hệ thống tư vấn tuyển sinh cho đại học Trà Vinh
Đề tài: Xây dựng hệ thống tư vấn tuyển sinh cho đại học Trà VinhĐề tài: Xây dựng hệ thống tư vấn tuyển sinh cho đại học Trà Vinh
Đề tài: Xây dựng hệ thống tư vấn tuyển sinh cho đại học Trà Vinh
 
BTL Lập trình C#
BTL Lập trình C#BTL Lập trình C#
BTL Lập trình C#
 
Hệ thống quản lý bán hàng online
Hệ thống quản lý bán hàng onlineHệ thống quản lý bán hàng online
Hệ thống quản lý bán hàng online
 
Luận án: Mô hình quản lý cơ sở dữ liệu hóa đơn tiền điện, HAY
Luận án: Mô hình quản lý cơ sở dữ liệu hóa đơn tiền điện, HAYLuận án: Mô hình quản lý cơ sở dữ liệu hóa đơn tiền điện, HAY
Luận án: Mô hình quản lý cơ sở dữ liệu hóa đơn tiền điện, HAY
 
Thiết kế mạng lan cho tòa nhà 3 tầng - luận văn, đồ án, đề tài tốt nghiệp (Đặ...
Thiết kế mạng lan cho tòa nhà 3 tầng - luận văn, đồ án, đề tài tốt nghiệp (Đặ...Thiết kế mạng lan cho tòa nhà 3 tầng - luận văn, đồ án, đề tài tốt nghiệp (Đặ...
Thiết kế mạng lan cho tòa nhà 3 tầng - luận văn, đồ án, đề tài tốt nghiệp (Đặ...
 
Giao thức bảo mật SSL
Giao thức bảo mật SSLGiao thức bảo mật SSL
Giao thức bảo mật SSL
 
Báo cáo tốt nghiệp
Báo cáo tốt nghiệpBáo cáo tốt nghiệp
Báo cáo tốt nghiệp
 
An toan thong tin
An toan thong tinAn toan thong tin
An toan thong tin
 
MATMA - Chuong2
MATMA - Chuong2MATMA - Chuong2
MATMA - Chuong2
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2
 
Báo cáo đồ án - Thiết kế web tại Thanh Hóa
Báo cáo đồ án - Thiết kế web tại Thanh HóaBáo cáo đồ án - Thiết kế web tại Thanh Hóa
Báo cáo đồ án - Thiết kế web tại Thanh Hóa
 
Cơ sở dữ liệu
Cơ sở dữ liệuCơ sở dữ liệu
Cơ sở dữ liệu
 
Tấn công sql injection sử dụng câu lệnh select union
Tấn công sql injection sử dụng câu lệnh select unionTấn công sql injection sử dụng câu lệnh select union
Tấn công sql injection sử dụng câu lệnh select union
 
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
 

Similar to Lập trình hướng đối tượng trong PHP

Lập trình hướng đối tượng trong PHP
 Lập trình hướng đối tượng trong PHP Lập trình hướng đối tượng trong PHP
Lập trình hướng đối tượng trong PHPNETKO Solution
 
Speaker dang minh tuan javascript for php developer
Speaker dang minh tuan   javascript for php developerSpeaker dang minh tuan   javascript for php developer
Speaker dang minh tuan javascript for php developerAiTi Education
 
Javascript for php developer
Javascript for php developerJavascript for php developer
Javascript for php developerDang Tuan
 
PMMNM.docx
PMMNM.docxPMMNM.docx
PMMNM.docxNgnHng26
 
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng webBài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng webMasterCode.vn
 
Chương 2: Ngôn ngữ PHP
Chương 2: Ngôn ngữ PHPChương 2: Ngôn ngữ PHP
Chương 2: Ngôn ngữ PHPHồ Lợi
 
Web course php co ban
Web course   php co banWeb course   php co ban
Web course php co ban慂 志慂
 
Chương 3: Tạo web động
Chương 3: Tạo web độngChương 3: Tạo web động
Chương 3: Tạo web độngHồ Lợi
 
Hỏi tình hình bk tiny bktiny-hdsd
Hỏi tình hình bk tiny   bktiny-hdsdHỏi tình hình bk tiny   bktiny-hdsd
Hỏi tình hình bk tiny bktiny-hdsdVu Hung Nguyen
 
Lappj trình hướng đối tượng
Lappj trình hướng đối tượngLappj trình hướng đối tượng
Lappj trình hướng đối tượngHưởng Nguyễn
 
Khái niệm OOP, Các tính chất của OOP, Class & Object
Khái niệm OOP, Các tính chất của OOP, Class & ObjectKhái niệm OOP, Các tính chất của OOP, Class & Object
Khái niệm OOP, Các tính chất của OOP, Class & ObjectCodeGym Đà Nẵng
 
E learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHPE learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHPelearninglabvn
 
Introduction to Hibernate Framework
Introduction to Hibernate FrameworkIntroduction to Hibernate Framework
Introduction to Hibernate FrameworkPhuoc Nguyen
 
TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7
TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7
TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7dvms
 
Print_to_OOP.pdf
Print_to_OOP.pdfPrint_to_OOP.pdf
Print_to_OOP.pdfcLong52
 
Giáo trình lập trình Wordpress - bài 4 - Tạo Plugin căn bản
Giáo trình lập trình Wordpress - bài 4 - Tạo Plugin căn bản Giáo trình lập trình Wordpress - bài 4 - Tạo Plugin căn bản
Giáo trình lập trình Wordpress - bài 4 - Tạo Plugin căn bản KhanhPham
 

Similar to Lập trình hướng đối tượng trong PHP (20)

Lập trình hướng đối tượng trong PHP
 Lập trình hướng đối tượng trong PHP Lập trình hướng đối tượng trong PHP
Lập trình hướng đối tượng trong PHP
 
Speaker dang minh tuan javascript for php developer
Speaker dang minh tuan   javascript for php developerSpeaker dang minh tuan   javascript for php developer
Speaker dang minh tuan javascript for php developer
 
Javascript for php developer
Javascript for php developerJavascript for php developer
Javascript for php developer
 
PMMNM.docx
PMMNM.docxPMMNM.docx
PMMNM.docx
 
Oop 0
Oop 0Oop 0
Oop 0
 
Web301 slide 2
Web301   slide 2Web301   slide 2
Web301 slide 2
 
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng webBài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
 
Chương 2: Ngôn ngữ PHP
Chương 2: Ngôn ngữ PHPChương 2: Ngôn ngữ PHP
Chương 2: Ngôn ngữ PHP
 
Web course php co ban
Web course   php co banWeb course   php co ban
Web course php co ban
 
Chương 3: Tạo web động
Chương 3: Tạo web độngChương 3: Tạo web động
Chương 3: Tạo web động
 
Hỏi tình hình bk tiny bktiny-hdsd
Hỏi tình hình bk tiny   bktiny-hdsdHỏi tình hình bk tiny   bktiny-hdsd
Hỏi tình hình bk tiny bktiny-hdsd
 
Lappj trình hướng đối tượng
Lappj trình hướng đối tượngLappj trình hướng đối tượng
Lappj trình hướng đối tượng
 
Khái niệm OOP, Các tính chất của OOP, Class & Object
Khái niệm OOP, Các tính chất của OOP, Class & ObjectKhái niệm OOP, Các tính chất của OOP, Class & Object
Khái niệm OOP, Các tính chất của OOP, Class & Object
 
E learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHPE learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHP
 
Introduction to Hibernate Framework
Introduction to Hibernate FrameworkIntroduction to Hibernate Framework
Introduction to Hibernate Framework
 
TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7
TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7
TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7
 
Yii
YiiYii
Yii
 
Giới thiệu OOP
Giới thiệu OOPGiới thiệu OOP
Giới thiệu OOP
 
Print_to_OOP.pdf
Print_to_OOP.pdfPrint_to_OOP.pdf
Print_to_OOP.pdf
 
Giáo trình lập trình Wordpress - bài 4 - Tạo Plugin căn bản
Giáo trình lập trình Wordpress - bài 4 - Tạo Plugin căn bản Giáo trình lập trình Wordpress - bài 4 - Tạo Plugin căn bản
Giáo trình lập trình Wordpress - bài 4 - Tạo Plugin căn bản
 

Lập trình hướng đối tượng trong PHP

  • 1. Biển Hoàng - DEHA Technology bien@deha-soft.com Object Oriented Programing in PHP Principles, Examples and Practices
  • 2. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai Lập trình hướng đối tượng - OOP OOP - Object Oriented Programing. - Là phương pháp lập trình dựa trên các đối tượng của hệ thống. - Các đối tượng trong lập trình, là “trừu tượng hóa” của các đối tượng trong thực tế. - Là mô hình lập trình phổ biến nhất hiện nay. - Giúp tổ chức code dễ đọc, dễ bảo trì, nâng cấp. - Gồm 4 đặc tính: Trừu tượng, đa hình, kế thừa, đóng gói. 2
  • 3. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Đối tượng - Object 3 - Là bất cứ thứ gì. - Một Object có + Định danh - Identity + Có thuộc tính - Attribute & trạng thái. + Có hành vi - Behavior (có thể làm, bị làm). - Một Object có thể chứa Object khác.
  • 4. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Lớp - Class 4 - Class là một bản thiết kế - “blueprint” của Object - Một Class được mô tả như sau + Name: Nó là gì? + Attribute: Nó được mô tả thế nào? + Behavior: Nó có thể làm gì? - Từ 1 Class có thể tạo ra được không giới hạn Object
  • 5. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - 4 đặc tính 5 APIE 1. Abstraction 2. Polymorphism 3. Inheritance 4. Encapsulation
  • 6. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Trừu tượng - Abstraction 6 ● Chỉ quan tâm tới những đặc điểm tổng quát, mà không quan tâm tới cụ thể một đối tượng. ● Bỏ qua những thứ không liên quan ● Bỏ qua những thứ không quan trọng
  • 7. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Đóng gói - Encapsulation 7 ● Che dấu đi đặc tính, hay hành vi của đối tượng. ● Chỉ cho phép 2 đối tượng tác động lên nhau theo cơ chế định trước.
  • 8. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Kế thừa - Inheritance 8 ● Cho phép một đối tượng sử dụng đặc tính, hành vi của đối tượng khác có cùng loại mà không cần định nghĩa lại. ● Cho phép các đối tượng chia sẻ hoặc mở rộng các đặc tính, hành vi. ● Code reuse. Ví dụ: Đối tượng “Chó Chihuahua" có những đặc tính và hành vi mà đối tượng “Chó" có.
  • 9. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Đa hình - Polymorphism 9 ● Những đối tượng có hành vi giống nhau nhưng lại có cách thực hiện và kết quả khác nhau. Ví dụ: Chó và Mèo đều có hành vi “kêu", nhưng chó kêu “Gâu gâu" còn mèo kêu “meo meo".
  • 10. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Class trong PHP 10 class SimpleClass { // Property declaration public $var = 'a default value'; // Method declaration public function displayVar() { echo $this->var; } }
  • 11. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Thuộc tính và phương thức 11 // Property declaration public $var = 'a default value'; // Method declaration public function displayVar() { echo $this->var; }
  • 12. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Khởi tạo Object 12 // Create new object from Class $instance = new SimpleClass(); // Assign object to other variable $assigned = $instance; $reference =& $instance;
  • 13. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Truy cập trong Class. 13 Sử dụng: $this // Property declaration public $var = 'a default value'; // Method declaration public function displayVar() { echo $this->var; } // To String public function toString() { return $this->displayVar() }
  • 14. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Kế thừa - Extends 14 class Foo { public function printItem($string) { echo 'Foo: ' . $string . PHP_EOL; } public function printPHP() { echo 'PHP is great.' . PHP_EOL; } } class Bar extends Foo { public function printItem($string) { echo 'Bar: ' . $string . PHP_EOL; } }
  • 15. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Abstract Class 15 Define abstract class AbstractClass { abstract protected function getValue(); abstract protected function prefixValue($prefix); public function printOut() { print $this->getValue() . "n"; } } Using class ConcreteClass1 extends AbstractClass { protected function getValue() { return "ConcreteClass1"; } public function prefixValue($prefix) { return "{$prefix}ConcreteClass1"; } }
  • 16. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Interface 16 Define interface iTemplate { public function setVariable($name, $var); public function getHtml($template); }
  • 17. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Thực hiện - Implement 17 class Template implements iTemplate { private $vars = array(); public function setVariable($name, $var) { $this->vars[$name] = $var; } public function getHtml($template) { foreach( $this->vars as $name => $value) { $template = str_replace ('{' . $name . '}', $value, $template); } return $template; } }
  • 18. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Access Modifier 18 ● Public: Có thể truy cập được từ mọi nơi. ● Protected: Chỉ truy cập được từ chính nó Class nào kế thừa nó. ● Private: Chỉ cho phép truy cập trong nội tại Class.
  • 19. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Access Modifier 19 class MyClass { // Declare a public method public function MyPublic() { } // Declare a protected method protected function MyProtected() { } // Declare a private method private function MyPrivate() { } // This is public function Foo() { $this->MyPublic(); $this->MyProtected(); $this->MyPrivate(); } } $myclass = new MyClass(); $myclass->MyPublic(); // Works $myclass->MyProtected(); // Fatal Error $myclass->MyPrivate(); // Fatal Error $myclass->Foo(); // All work
  • 20. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Access Modifier 20 class MyClass2 extends MyClass { // This is public function Foo2() { $this->MyPublic(); $this->MyProtected(); $this->MyPrivate(); // Fatal Error } } $myclass2 = new MyClass2(); $myclass2->MyPublic(); // Works $myclass2->Foo2(); // Public and Protected work, not Private
  • 21. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Constructor 21 class BaseClass { function __construct() { print "In BaseClass constructorn"; } } class SubClass extends BaseClass { function __construct() { parent::__construct(); print "In SubClass constructorn"; } } class OtherSubClass extends BaseClass { // inherits BaseClass's constructor } // In BaseClass constructor $obj = new BaseClass(); // In BaseClass constructor // In SubClass constructor $obj = new SubClass(); // In BaseClass constructor $obj = new OtherSubClass();
  • 22. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Static 22 ● Một thuộc tính hoặc phương thức được khai báo “static" thì có thể truy cập mà không cần phải khởi tạo Object từ Class. ● Một thuộc tính “static" thì không thể truy cập từ Object được khởi tạo từ Class. ● Một phương thức “static" thì có thể truy cập từ Object được khởi tạo từ Class. class Foo { public static function aStaticMethod() { // ... } } Foo::aStaticMethod();
  • 23. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Final 23 ● Một phương thức được khai báo là “final" thì không cho phép các lớp con kế thừa nó thay đổi lại nội dung phương thức. ● Một Class được khai báo là “final" thì không cho phép Class khác kế thừa. class BaseClass { final public function moreTesting() { echo "BaseClass::moreTesting() calledn"; } } final class BaseClass { final public function moreTesting() { echo "BaseClass::moreTesting() calledn"; } }
  • 24. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - PHP Namespace 24 ● Sử dụng để nhóm 1 hoặc nhiều Class vào thành 1 nhóm. ● Có tác dụng để gói các phần của chương trình vào thành 1 gói cho dễ quản lý. ● Cho phép tồn tại các Class có tên cùng nhau nhưng khác Namespace. ● Quản lý mã nguồn và chương trình dễ dàng hơn.
  • 25. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - PHP Namespace 25 namespace myname; class MyClass { public function myfunction() { echo “Hello World"; } } $a = new MyClass(); $a->myfunction(); // Hello World $c = new mynameMyClass(); $c->myfunction() // Hello World
  • 26. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Trait 26 ● Là cách tái sử dụng Code trong PHP. ● Loại bỏ đi 1 số nhược điểm của việc đơn kế thừa. ● Trait chỉ bao gồm phương thức và không thể khởi tạo Object từ Trait. trait ezcReflectionReturnInfo { function getReturnType() { /*1*/ } function getReturnDescription() { /*2*/ } } class ezcReflectionMethod extends ReflectionMethod { use ezcReflectionReturnInfo; }
  • 27. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Magic method - Đọc thêm. 27 ● Là những phương thức phản ứng lại sự kiện diễn ra trong 1 Object. ● Một số Magic Method thường dùng __construct() __destruct() __call() __callStatic() __get() __set() __isset() __unset() _wakeup() __toString() __invoke() __set_state() __clone() __debugInfo() __sleep()
  • 28. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Mô hình MVC 28 Bạn có thực sự hiểu đúng?
  • 29. Object Oriented Programing in PHP - Biển Hoàng - http://deha.ai OOP - Mô hình MVC 29 Là một “Architecture Pattern” trong xây dựng hệ thống. - Model: Chứa Logic xử lý nghiệp vụ. - Controller: Điều hướng, tương tác với Model và View - View: Hiển thị dữ liệu, tương tác với Client side