🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
  引语:阅读深入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:系统的学习下面向对象,更好的记忆和达到一定重复率 这样熟记于心 可以更好的在设计模式中发挥所掌握的技术。 学习日记,也是为了做到重复率有效地记忆。 后面的章节会努力写的详细点。