使用 trait 生成单例

trait 介绍

Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 method。Trait 和 Class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和 Mixin 类相关典型问题。

单例类

Singleton.php 

trait Singleton
{
    private static $instance;

    static function getInstance(...$grgs)
    {
        if(!isset(self::$instance)){
            self::$instance = new static(...$grgs);
        }

        return self::$instance;
    }
}


Persons.php

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/4/13
 * Time: 14:20
 */
require_once './Singleton.php';    //引入 (实例化)单例类
class Persons{
    use Singleton;  
    
    public function eat($foot)
    {
        echo 'can eat '.$foot."\r\n";
    }

    public function run($foot)
    {
        echo 'can run '.$foot."\r\n";
    }
}

$person_one = Persons::getInstance();
$person_one->run('10Km');
echo '<br>';
echo memory_get_usage();

猜你喜欢

转载自blog.csdn.net/zhouyuqi1/article/details/79930182