引语:阅读深入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内核了解:生命周期及运行模式