? 引語:閱讀深入PHP《面向對象、模式實踐》書實踐
~~~
<?php
/**
* 對象基礎歸納整理 (來源:深入PHP《面向對象、模式與實踐》)
* ===============知識點================
* 類和對象:聲明類及實例化對象
* 構造方法:自動加載對象
* 基本數據類型和類的類型:為什么類型很重要
* 繼承(inheritance)
* 可見性:整合對象接口并保護類中的方法和屬性不受干涉(public,protected,private)
* ===============基本類型和PHP的類型檢查函數==============
* is_bool() ------ 布爾型 ------ 值為true/false
* is_integer() ------ 整型 ------ 整數
* is_double() ------ 雙精度型 ------ 有小數點的數字
* is_string() ------ 字符串 ------ 字符數據
* is_object() ------ 對象 ------ 對象
* is_array() ------ 數組 ------ 數組
* is_resource() ------ 資源 ------ 用于識別和處理外部資源(如數據庫和文件)的句柄
* is_null() ------ NUll ------ 未分配的值
* ===============對象類型=============
* shopProudctWriter類的write()方法 接受一個 shopProudct對象
* 為什么不直接在shopProudct類直接增加一個write()方法呢?答案是 劃分責任區
* shopProudct類負責管理產品數據,shopProudctWriter類負責寫入數據
* @author liuxinming
*/
class shopProudct{
private $title;//產品名稱
private $proudcerMainName;
private $proudcerFirstName;
protected $price;//產品價格
private $discount;//產品折扣
//構造方法會被自動調用,用來確保必要的屬性被設置
public function __construct($title,$firstName,$mainName,$price){
$this->title=$title;
$this->proudcerFirstName=$firstName;
$this->proudcerMainName=$mainName;
$this->price=$price;
}
//獲取MainName
public function getProudcerMainName(){
return $this->proudcerMainName;
}
//獲取FirstName
public function getProudcerFirstName(){
return $this->proudcerFirstName;
}
//設置折扣
public function setDiscount($num){
$this->discount=$num;
}
//獲取折扣
public function getDiscount(){
return $this->discount;
}
//獲取產品標題
public function getTitle(){
return $this->title;
}
//獲取折扣后的價格
public function getPrice(){
return $this->price-$this->getDiscount();
}
//
public function getSummaryLine(){
$base= $this->title.'('.$this->proudcerMainName.$this->proudcerFirstName.')';
return $base;
}
}
/**
* CD類 存放 播放時間
*/
class CDProudct extends shopProudct{
private $playLength=0; //播放時間
public function __construct($title, $firstName, $mainName, $price,$playLength){
parent::__construct($title, $firstName, $mainName, $price);
$this->playLength=$playLength;
}
//獲取播放時間
public function getPlayLength(){
return $this->playLength;
}
//
public function getSummaryLine(){
$base=parent::getSummaryLine();
$base.='播放時間:'.$this->playLength;
return $base;
}
}
$test=new CDProudct('計算機書', 'PHP面向對象', '深入', '100', '20:00');
echo $test->getSummaryLine();
~~~
PS:系統的學習下面向對象,更好的記憶和達到一定重復率 這樣熟記于心 可以更好的在設計模式中發揮所掌握的技術。
學習日記,也是為了做到重復率有效地記憶。
后面的章節會努力寫的詳細點。
- 前言
- PHP生成對象之設計模式—單例模式
- PHP生成對象之設計模式—工廠方法模式
- PHP之設計模式—適配器模式
- PHP之設計模式—建造者模式(通過選擇mysql,mongo數據庫鏈接類型做說明)
- PHP之設計模式—委托模式
- PHP面向對象學習一:對象基礎實踐
- PHP面向對象學習之二:深入了解面向對象高級特性
- PHP面向對象學習之三:抽象類和接口類的實際作用
- PHP解決問題進化論(整理筆記)
- PHP7新特性整理介紹篇
- php-fpm 與 Nginx優化總結
- Centos+Nginx+PHP7.0編譯安裝(和PHP5.6老版本共存)
- PHP7:Mongodb API使用
- PHP之include/require深入了解
- PHP內核了解:生命周期及運行模式