SlideShare a Scribd company logo
1 of 28
Download to read offline
PHP 物件導向 - 基礎觀念篇

 瞭解 PHP 物件導向的開發方式
物件導向@PHP
    類別?物件?怎麼分?
•
    抽象?繼承?多型?
•
    變數還是屬性?函式還是方法?
•
    PHP5 在物件導向上還有哪些特色?
•
類別
Class
class Person() {}
類別只是一堆函式的集合嗎?
• 凝聚力
• 物件的藍圖
• 包裝商業邏輯
• 適應性良好
• 不一定要跟現實生活的東西有關聯
• 會佔記憶體空間
物件
Object
$jace = new Person();
物件和一般變數有什麼不同?
• 能管理自身的狀態
• 可以調用方法或取用屬性
• 物件變數只放位址
成員
Member
$jace->height & $jace->eat();
屬性即變數?方法即函式?
• 物件成員,用 this
• 屬性可以有常數預設值
• 實作同類別的不同物件,其屬性不會互相
  干擾
封裝
Encapsulation
$jace->height = 0 ?
不能任意更改物件內部狀態
• setter 可以對參數值做檢查
• getter 讓我們能在輸出狀態前有改變的機
  會
作用域
Scope
private, protected, public, static
定義變數可視範圍
• private: 我的就是我的
• protected: 我和我的子孫可以用
• public: 大家都能用
• static: 影響同型態的所有物件實體
• 類別 static 方法中,不可用 this !
• 方法 local 變數
繼承
Inheritance
Manager extends Person
不僅僅是復用程式碼
• 共用相同的邏輯
• 覆寫 (override) 不同的邏輯
抽象
Abstraction
'Person' === get_class($jace)
特意簡化問題
• 概略地來表達事物
$jace->drive($car);
特意簡化問題
• Neo 開 Ferrari 跑車
• Jace 開 Toyota 小車
• 人開車
抽象類別
Abstract Class
abstract class Person
不希望被實體化的類別
• 概念類別
• 人、動物、工作…
多型
Polymorphism
$employee->work()
一視同仁
• 弱型別: Duck Type (只考慮能不能做什麼)
• 強型別:必須是同一個型別或其子類別
介面
Interface
Car implement Drivable
告訴使用者可以怎麼做
• 只提供方法的宣告
• 類別必須「實作」介面
• 可以實作多個介面
異常
Exception
$jace->eat($neo)
處理異常錯誤的好方法
• throw
• try … catch
• 一層一層往上拋
PHP5 特色
Special
不同於其他語言的特色
• __constructor(), __destructor()
• clone
• magic method (__set, __get, __call, …)
• type hint (通常是強型別語言才有)
謝謝

More Related Content

What's hot

Web技術勉強会10回目(Slideshare用)
Web技術勉強会10回目(Slideshare用)Web技術勉強会10回目(Slideshare用)
Web技術勉強会10回目(Slideshare用)龍一 田中
 
ªãºAãäëèéí ñàíã çîõèîí áàéãóóëàõ
ªãºAãäëèéí ñàíã çîõèîí áàéãóóëàõªãºAãäëèéí ñàíã çîõèîí áàéãóóëàõ
ªãºAãäëèéí ñàíã çîõèîí áàéãóóëàõNamkhainyambuu Gan-Erdene
 
Drupal - 教育網路中心課程
Drupal - 教育網路中心課程Drupal - 教育網路中心課程
Drupal - 教育網路中心課程Charles Chuang
 
Webpeckerv7 Datasheet
Webpeckerv7 DatasheetWebpeckerv7 Datasheet
Webpeckerv7 Datasheetport80
 
用Pootle翻譯OLPC專案
用Pootle翻譯OLPC專案用Pootle翻譯OLPC專案
用Pootle翻譯OLPC專案Bob Chao
 
Ag Portal Gioi Thieu Quy Trinh
Ag Portal   Gioi Thieu Quy TrinhAg Portal   Gioi Thieu Quy Trinh
Ag Portal Gioi Thieu Quy TrinhPham Ngoc Quang
 
Kiepvesau loi nguyenngocthien
Kiepvesau loi nguyenngocthienKiepvesau loi nguyenngocthien
Kiepvesau loi nguyenngocthienCherry Yêu Quái
 
361 Ch
361 Ch361 Ch
361 Chanjaan
 
Bai Giang 5
Bai Giang 5Bai Giang 5
Bai Giang 5nbb3i
 
376 Ch
376 Ch376 Ch
376 Chanjaan
 
Code Refactoring Javaeye Rails1.X 2.X
Code Refactoring Javaeye Rails1.X 2.XCode Refactoring Javaeye Rails1.X 2.X
Code Refactoring Javaeye Rails1.X 2.Xwear
 
碳酸会 图片列表讨论
碳酸会 图片列表讨论碳酸会 图片列表讨论
碳酸会 图片列表讨论碳酸饮料会
 
第2回PHP懇親会発表資料
第2回PHP懇親会発表資料第2回PHP懇親会発表資料
第2回PHP懇親会発表資料Masahiko Sakamoto
 
期貨籌碼表0512
期貨籌碼表0512期貨籌碼表0512
期貨籌碼表0512guesta0da80
 

What's hot (20)

Web技術勉強会10回目(Slideshare用)
Web技術勉強会10回目(Slideshare用)Web技術勉強会10回目(Slideshare用)
Web技術勉強会10回目(Slideshare用)
 
ªãºAãäëèéí ñàíã çîõèîí áàéãóóëàõ
ªãºAãäëèéí ñàíã çîõèîí áàéãóóëàõªãºAãäëèéí ñàíã çîõèîí áàéãóóëàõ
ªãºAãäëèéí ñàíã çîõèîí áàéãóóëàõ
 
just a test
just a testjust a test
just a test
 
Drupal - 教育網路中心課程
Drupal - 教育網路中心課程Drupal - 教育網路中心課程
Drupal - 教育網路中心課程
 
Webpeckerv7 Datasheet
Webpeckerv7 DatasheetWebpeckerv7 Datasheet
Webpeckerv7 Datasheet
 
MSICC
MSICCMSICC
MSICC
 
Pseudo Perl
Pseudo PerlPseudo Perl
Pseudo Perl
 
Life In Whatever 2.0
Life In Whatever 2.0Life In Whatever 2.0
Life In Whatever 2.0
 
lectureinfo site for xmu
lectureinfo site for xmulectureinfo site for xmu
lectureinfo site for xmu
 
用Pootle翻譯OLPC專案
用Pootle翻譯OLPC專案用Pootle翻譯OLPC專案
用Pootle翻譯OLPC專案
 
Ag Portal Gioi Thieu Quy Trinh
Ag Portal   Gioi Thieu Quy TrinhAg Portal   Gioi Thieu Quy Trinh
Ag Portal Gioi Thieu Quy Trinh
 
Mac玩家特區X目錄
Mac玩家特區X目錄Mac玩家特區X目錄
Mac玩家特區X目錄
 
Kiepvesau loi nguyenngocthien
Kiepvesau loi nguyenngocthienKiepvesau loi nguyenngocthien
Kiepvesau loi nguyenngocthien
 
361 Ch
361 Ch361 Ch
361 Ch
 
Bai Giang 5
Bai Giang 5Bai Giang 5
Bai Giang 5
 
376 Ch
376 Ch376 Ch
376 Ch
 
Code Refactoring Javaeye Rails1.X 2.X
Code Refactoring Javaeye Rails1.X 2.XCode Refactoring Javaeye Rails1.X 2.X
Code Refactoring Javaeye Rails1.X 2.X
 
碳酸会 图片列表讨论
碳酸会 图片列表讨论碳酸会 图片列表讨论
碳酸会 图片列表讨论
 
第2回PHP懇親会発表資料
第2回PHP懇親会発表資料第2回PHP懇親会発表資料
第2回PHP懇親会発表資料
 
期貨籌碼表0512
期貨籌碼表0512期貨籌碼表0512
期貨籌碼表0512
 

Viewers also liked

PHP 語法基礎與物件導向
PHP 語法基礎與物件導向PHP 語法基礎與物件導向
PHP 語法基礎與物件導向Shengyou Fan
 
購物車程式架構簡介
購物車程式架構簡介購物車程式架構簡介
購物車程式架構簡介Jace Ju
 
What happens in laravel 4 bootstraping
What happens in laravel 4 bootstrapingWhat happens in laravel 4 bootstraping
What happens in laravel 4 bootstrapingJace Ju
 
開發環境建置
開發環境建置開發環境建置
開發環境建置Shengyou Fan
 
jQuery 實戰經驗講座
jQuery 實戰經驗講座jQuery 實戰經驗講座
jQuery 實戰經驗講座Jace Ju
 
PHPUnit 入門介紹
PHPUnit 入門介紹PHPUnit 入門介紹
PHPUnit 入門介紹Jace Ju
 
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理Shengyou Fan
 
购物车图例:例子和最佳实践
购物车图例:例子和最佳实践购物车图例:例子和最佳实践
购物车图例:例子和最佳实践大璋 王
 
深入淺出 MVC
深入淺出 MVC深入淺出 MVC
深入淺出 MVCJace Ju
 
Refactoring with Patterns in PHP
Refactoring with Patterns in PHPRefactoring with Patterns in PHP
Refactoring with Patterns in PHPJace Ju
 
Beginning PHPUnit
Beginning PHPUnitBeginning PHPUnit
Beginning PHPUnitJace Ju
 
Advanced php testing in action
Advanced php testing in actionAdvanced php testing in action
Advanced php testing in actionJace Ju
 
Patterns in Library Design (套件設計裡的模式)
Patterns in Library Design (套件設計裡的模式)Patterns in Library Design (套件設計裡的模式)
Patterns in Library Design (套件設計裡的模式)Jace Ju
 
如何選擇合適的網站製作平台
如何選擇合適的網站製作平台如何選擇合適的網站製作平台
如何選擇合適的網站製作平台Hui Chieh Chiu
 
wagon - 免安裝可攜的 Laravel 開發環境
wagon - 免安裝可攜的 Laravel 開發環境wagon - 免安裝可攜的 Laravel 開發環境
wagon - 免安裝可攜的 Laravel 開發環境Shengyou Fan
 
Migrations 與 Schema 操作
Migrations 與 Schema 操作Migrations 與 Schema 操作
Migrations 與 Schema 操作Shengyou Fan
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎Shengyou Fan
 

Viewers also liked (20)

PHP 語法基礎與物件導向
PHP 語法基礎與物件導向PHP 語法基礎與物件導向
PHP 語法基礎與物件導向
 
購物車程式架構簡介
購物車程式架構簡介購物車程式架構簡介
購物車程式架構簡介
 
What happens in laravel 4 bootstraping
What happens in laravel 4 bootstrapingWhat happens in laravel 4 bootstraping
What happens in laravel 4 bootstraping
 
開發環境建置
開發環境建置開發環境建置
開發環境建置
 
jQuery 實戰經驗講座
jQuery 實戰經驗講座jQuery 實戰經驗講座
jQuery 實戰經驗講座
 
PHPUnit 入門介紹
PHPUnit 入門介紹PHPUnit 入門介紹
PHPUnit 入門介紹
 
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理
 
购物车图例:例子和最佳实践
购物车图例:例子和最佳实践购物车图例:例子和最佳实践
购物车图例:例子和最佳实践
 
深入淺出 MVC
深入淺出 MVC深入淺出 MVC
深入淺出 MVC
 
Refactoring with Patterns in PHP
Refactoring with Patterns in PHPRefactoring with Patterns in PHP
Refactoring with Patterns in PHP
 
Beginning PHPUnit
Beginning PHPUnitBeginning PHPUnit
Beginning PHPUnit
 
Advanced php testing in action
Advanced php testing in actionAdvanced php testing in action
Advanced php testing in action
 
Patterns in Library Design (套件設計裡的模式)
Patterns in Library Design (套件設計裡的模式)Patterns in Library Design (套件設計裡的模式)
Patterns in Library Design (套件設計裡的模式)
 
如何選擇合適的網站製作平台
如何選擇合適的網站製作平台如何選擇合適的網站製作平台
如何選擇合適的網站製作平台
 
wagon - 免安裝可攜的 Laravel 開發環境
wagon - 免安裝可攜的 Laravel 開發環境wagon - 免安裝可攜的 Laravel 開發環境
wagon - 免安裝可攜的 Laravel 開發環境
 
驗證與訊息
驗證與訊息驗證與訊息
驗證與訊息
 
Migrations 與 Schema 操作
Migrations 與 Schema 操作Migrations 與 Schema 操作
Migrations 與 Schema 操作
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
 
CRUD 綜合運用
CRUD 綜合運用CRUD 綜合運用
CRUD 綜合運用
 
整合 Open ID
整合 Open ID整合 Open ID
整合 Open ID
 

PHP 物件導向 - 基礎觀念篇