Blogger Information
Blog 38
fans 0
comment 0
visits 25310
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
第十二课—匿名类 2018年9月5日 20时00分
空白
Original
605 people have browsed it

匿名对象与匿名类

实例

<?php
/**
 * 匿名对象与匿名类
 */
//父类
class Dates
{
    public function day()
    {
        return date("Y-m-d");
    }
}

echo (new class() extends Dates{
    
})->day();

运行实例 »

点击 "运行实例" 按钮查看在线实例

1.png

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);

运行实例 »

点击 "运行实例" 按钮查看在线实例

2.png

类的自动加载

实例

<?php
/**
 * 类的自动加载
 */
require 'class/requ.php';

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

<?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();

3.png

序列化与反序列化

实例

<?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));

运行实例 »

点击 "运行实例" 按钮查看在线实例

4.png

面向对象是用类将属性和方法进行封装实现代码的复用,使用时可以省掉一些复杂的算法直接获得结果;继承一个类后可以重载父类方法或扩充其他功能,使用面向对象编程便于维护

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post