Correction status:qualified
Teacher's comments:
匿名对象与匿名类
<?php /** * 匿名对象与匿名类 */ //父类 class Dates { public function day() { return date("Y-m-d"); } } echo (new class() extends Dates{ })->day();
点击 "运行实例" 按钮查看在线实例
Trait
<?php /** * Trait类可以实现多继承 * trait不能有同名属性 */ trait A { protected $num1=60; public function ad(){ return $this->num1; } } class B { // 导入trait类 use A; protected $num=100; public function cd($num){ return $this->num=$this->num*$num; } } $ts=new B(); echo $ts->ad()*$ts->cd(2);
点击 "运行实例" 按钮查看在线实例
类的自动加载
<?php /** * demo1 */ class Demo1 { protected $str='php'; public function show(){ return $this->str; } }
点击 "运行实例" 按钮查看在线实例
<?php /** * demo2 */ class Demo2 { protected $str = '放弃'; public function show(){ return $this->str; } }
点击 "运行实例" 按钮查看在线实例
<?php
/**
* 类的自己加载函数
*/
spl_autoload_register(function ($className){
require './class/'.$className.'.php';
});
echo (new Demo1())->show().'从入门到'.(new Demo2())->show();
序列化与反序列化
<?php /** *对象的序列化与反序列化 * serialize() 序列化 * unserialize() 反序列化 * 对象序列化的特点: * 1. 只保存对象中的属性,不保存方法 * 2. 只保存类名,不保存对象名 */ class Db { public $db; public $host; public $user; public $pwd; // 连接数据库 public function __construct($host='127.0.0.1',$user='root',$pwd='') { $this->host=$host; $this->user=$user; $this->pwd=$pwd; $this->connect(); } private function connect() { $this->db=@mysqli_connect($this->host,$this->user,$this->pwd); } // 对象序列化时调用 public function __sleep() { return ['host','user','pwd']; } // 反序列化 public function __wakeup() { $this->connect(); } } $sql = new Db(); //序列化 echo serialize($sql),'<hr>'; $tmp=serialize($sql); //反序列化 var_dump(unserialize($tmp));
点击 "运行实例" 按钮查看在线实例
面向对象是用类将属性和方法进行封装实现代码的复用,使用时可以省掉一些复杂的算法直接获得结果;继承一个类后可以重载父类方法或扩充其他功能,使用面向对象编程便于维护