物件導向在我看來就是各種php類,方法,函數了,下面我來給大家介紹一篇關於php物件導向入門教程,各位同學有興趣可參考。
第一種情況:子類沒有定義建構函式時,預設繼承。
第二種情況:子類定義了建構函式,則不會被繼承。
對於4.x,如果父類恰好定義了子類的同名函數,則會被當做子類的建構函式:
| 代碼如下 |
複製代碼 |
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"; } } //php4 will call B() $b = new B; |
上面的代碼在php5中則會調用A而不會調用B()
PHP物件導向:介面執行個體
們設計一個線上銷售系統,使用者部分設計如下:
將使用者分為,NormalUser, VipUser, InnerUser三種。
要求根據使用者的不同折扣計算使用者購買產品的價格。
並要求為以後擴充和維護預留空間。
使用者部分先聲明了一個介面User,使用者都是User的實現。
user.php
| 代碼如下 |
複製代碼 |
/* * 定義了 User介面. * 和子類 NormalUser,VipUser,InnerUser */ //User介面,定義了三個抽象方法. interface User{ public function getName(); public function setName($_name); public function getDiscount(); } abstract class AbstractUser implements User{ private $name = ""; //名字 protected $discount = 0; //折扣 protected $grade = ""; //層級 public function __construct($_name){ $this->setName($_name); } public function getName(){ return $this->name; } public function setName($_name){ $this->name = $_name; } public function getDiscount(){ return $this->discount; } public function getGrade(){ return $this->grade; } } class NormalUser extends AbstractUser { protected $discount = 1.0; protected $grade = "NormalUser"; } class VipUser extends AbstractUser { protected $discount = 0.8; protected $grade = "VipUser"; } class InnerUser extends AbstractUser { protected $discount = 0.7; protected $grade = "InnerUser"; } ?> |
關於產品,我們進行了如下設計。
聲明一個介面Product,然後從Product繼承下Book介面。
線上銷售的圖書最後是實現了Book介面的BookOnline類。
Product.php
| 代碼如下 |
複製代碼 |
/*與產品相關的類放.*/ Interface Product{ //定義產品介面 public function getProductName(); public function getProductPrice(); } interface Book extends Product { // book是產品的一個分類 public function getAuthor(); } class BookOnline implements Book{ // 定義book類. private $productName; // 產品名 private $productPrice; // 產品價格 private $author; //作者 public function __construct($_bookName){ $this->productName = $_bookName; //這裡放置相關初始化的代碼. //與資料庫關聯的代碼. } public function getProductName(){ return $this->productName; } public function getProductPrice(){ //這裡從資料庫讀取價格. //假設價格是 100元. $this->productPrice = 100; return $this->productPrice; } public function getAuthor(){ //從資料庫裡面取值. return $this->author; } } ?> |
關於結算,我們使用了獨立的結算類,使用靜態方法做計算。產品結算。注意參數類型。
| 代碼如下 |
複製代碼 |
include_once("User.php"); include_once("Product.php"); //買了產品到底多少錢呢? class ProductSettle{ public static function finalPrice(User $_user,Product $_product,$number = 1){ $price = $_user->getDiscount() * $_product->getProductPrice() * $number; return $price; } } ?> |
下面的例子是實現。大家可以自己分析下。
| 代碼如下 |
複製代碼 |
include_once("./class/User.php"); include_once("./class/Product.php"); include_once("./class/ProductSettle.php"); $number = 10; $book = new BookOnline("設計模式"); $user = new NormalUser("Tom"); $price = ProductSettle::finalPrice($user,$book,$number); $str = "您好,尊敬的使用者 " . $user->getName() . " "; $str .= "您的層級是 ". $user->getGrade() .", "; $str .= "您的折扣是 " . $user->getDiscount() . " "; $str .= "購買 $number 本 《 ". $book->getProductName() ; $str .= "》的價格是 $price
"; echo $str;
$user = new vipUser("Tom"); $price = ProductSettle::finalPrice($user,$book,$number); $str = "您好,尊敬的使用者 " . $user->getName() . " "; $str .= "您的層級是 ". $user->getGrade() .", "; $str .= "您的折扣是 " . $user->getDiscount() . " "; $str .= "購買 $number 本 《 ". $book->getProductName() ; $str .= "》的價格是 $price
"; echo $str;
$user = new InnerUser("Tom"); $price = ProductSettle::finalPrice($user,$book,$number); $str = "您好,尊敬的使用者 " . $user->getName() . " "; $str .= "您的層級是 ". $user->getGrade() .", "; $str .= "您的折扣是 " . $user->getDiscount() . " "; $str .= "購買 $number 本 《 ". $book->getProductName() ; $str .= "》的價格是 $price
"; echo $str; ?> |
http://www.bkjia.com/PHPjc/628660.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/628660.htmlTechArticle物件導向在我看來就是各種php類,方法,函數了,下面我來給大家介紹一篇關於php物件導向入門教程,各位同學有興趣可參考。 第一種情況...