匿名对象与匿名类的实现过程
实例
<?php /** * 匿名类: * 1. php 7.0+ 才支持 * 2. 类似于匿名函数,就是没有名称的类 * 3. 匿名类适合于一次性的创建与引用 * 4. 匿名类总是与: new 配套使用 */ class zaza{ private $name = '喳喳'; public function story($name){ return $this->name.'喜欢吃'.$name; } } //匿名对象的访问 echo (new zaza())->story('雪糕'),'<hr>'; //匿名类的访问 echo (new class { private $name = '喳喳'; public function story($name){ return $this->name.'喜欢吃'.$name; } })->story('雪条'),'<br>';
运行实例 »
点击 "运行实例" 按钮查看在线实例
Trait类的声明与工作原理
实例
<?php //Trait class zaza{ protected $name; public function __construct($name='喳喳') { $this->name = $name; } public function food($vegetables='青菜'){ return $this->name.'喜欢吃'.$vegetables; } } // 创建一个trait特性类 trait vegetables{ public $friend = '小李'; public function food($meal = '肉'){ return $this->name.'喜欢吃'.$meal; } } trait Recreation{ public $friends = '小喳喳'; public function food($name = 'switch'){ return $this->name.'喜欢玩'.$name; } } // trait 类位于 Person 与 Student之间 class za extends zaza{ // use vegetables; // 导入了一个trait 类 // use Recreation; use vegetables,Recreation{ vegetables::food insteadof Recreation; Recreation::food as Myfood; } } echo (new zaza())->food(),'<hr>'; echo (new za())->food(),'<hr>'; echo (new za())->Myfood(),'<hr>';
运行实例 »
点击 "运行实例" 按钮查看在线实例
类的自动加载函数的写法
实例
<?php /** * 类的自动加载 */ spl_autoload_register(function ($classname){ require 'class/'.$classname.'.php'; }); echo demo1::Name1,'<hr>'; echo demo2::Name2;
运行实例 »
点击 "运行实例" 按钮查看在线实例
对象的序列化与反序列化的原理与应用
实例
<?php /** * 对象的序列化 */ class Db{ //连接参数与返回值 public $db = null; public $host; public $user; public $pass; //构造方法 public function __construct($host='127.0.0.1',$user='root',$pass='root') { $this->host=$host; $this->user=$user; $this->pass=$pass; // 确保实例化对象的时候能自动连接上数据库 $this->connect(); } //数据库连接 private function connect(){ $this->db=mysqli_connect($this->host,$this->user,$this->pass); } //对象序列化的时候自动调用 public function __sleep() { return ['host','user','pass']; } //反序列化: public function __wakeup() { $this->connect(); } } echo serialize((new Db())),'<hr>'; $tem = serialize((new Db())); var_dump($tem); /** * 对象序列化的特点: * 1. 只保存对象中的属性,不保存方法 * 2. 只保存类名,不保存对象名 */
运行实例 »
点击 "运行实例" 按钮查看在线实例
谈谈你对面向对象编程的基本理解
面向对象就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节,面向对象的编程是以对象为中心,以消息为驱动。面向对象有三大特征:封装性、继承性、多态性;1封装:只隐藏对象的属性和实现细节,仅对外提供公共访问方式2继承:提高代码复用性;继承是多态的前提3多态是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。