PHP实现单件模式的几种方式
发布日期:2021-09-20 08:07:36 浏览次数:42 分类:技术文章

本文共 1299 字,大约阅读时间需要 4 分钟。

下面是单件模式在PHP中的几种实现方法:

class Stat{    static $instance = NULL;       static function getInstance(){        if(self::$instance == NULL){            self::$instance = new Stat();        }               return self::$instance;    }       private function __construct(){    }       private function __clone(){    }          function sayHi(){        return "The Class is saying hi to u ";    }}echo Stat::getInstance()->sayHi();

这是一种最通常的方式,在一个getInstance方法中返回唯一的类实例。

对这里例子稍加修改,便可以产生一个通用的方法,只要叫道任何你想用到单件的类里,就可以了。

class Teacher{    function sayHi(){        return "The teacher smiling and said 'Hello '";    }       static function getInstance(){        static $instance;               if(!isset($instance)){            $c = __CLASS__;            $instance = new $c;        }               return $instance;    }}echo Teacher::getInstance()->sayHi();
最后一种是提供一个singleton类,然后通过调用getInstance方法,可以为任何一个类生产出一个实例来。

class singleton{    function getInstance($class){        static $instances = array();        if(!array_key_exists($class,$instances)){            $instances[$class] = &new $class;        }        $instance = $instances[$class];               return $instance;    }}class People{    function sayHi(){        return 'Hello i am a people?';    }}echo "
";echo singleton::getInstance('People')->sayHi();

转载地址:https://blog.csdn.net/caiyiii/article/details/17078247 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:centos truncate not found
下一篇:清理mysql日志

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年01月25日 00时11分51秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

ZJOI2019 Day2游记(爆0记) 2019-04-17
Codeforces 1155 D Beautiful Array 题解(DP) 2019-04-17
Codeforces 1152 D Neko and Aki's Prank 题解(记忆化搜索) 2019-04-17
蓝书(算法竞赛进阶指南)刷题记录——POJ1475 Pushing Boxes(bfs套bfs) 2019-04-17
蓝书(算法竞赛进阶指南)刷题记录——hdu3085 Nightmare2(双向bfs) 2019-04-17
分块入门1~9题解 2019-04-17
蓝书(算法竞赛进阶指南)刷题记录——CH5402 & 洛谷2014 选课(树形DP) 2019-04-17
Codeforces 1175 D Array Splitting 题解(DP+贪心) 2019-04-17
蓝书(算法竞赛进阶指南)刷题记录——hdu2196 Computer(换根DP) 2019-04-17
蓝书(算法竞赛进阶指南)刷题记录——POJ2888 Naptime(DP) 2019-04-17
蓝书(算法竞赛进阶指南)刷题记录——Codeforces 24 D Broken Robot(概率期望+DP+高斯消元) 2019-04-17
蓝书(算法竞赛进阶指南)刷题记录——BZOJ2337【HNOI2011】XOR和路径(概率期望+DP+高斯消元) 2019-04-17
蓝书(算法竞赛进阶指南)刷题记录——CH5701 & 洛谷1081 【NOIP2012】开车旅行(双向链表+倍增) 2019-04-17
蓝书(算法竞赛进阶指南)刷题记录——POJ1038 Bugs Integrated, Inc(三进制状压DP+dfs) 2019-04-17
Codeforces 1181 D Irrigation 题解(树状数组+倍增) 2019-04-17
最大流及其增广路算法入门(Emonds-Karp & Dinic & ISAP) 2019-04-17
Codeforces 526 F Pudding Monsters题解(线段树+单调栈) 2019-04-17
BZOJ1856【SCOI2010】字符串题解(组合数学+Catalan数) 2019-04-17
LOJ6435【PKUSC2018】星际穿越题解(贪心+倍增) 2019-04-17
竞赛图(有向完全图)上哈密顿路径的若干性质(BZOJ4727 [POI2017]Turysta 题解) 2019-04-17