本文实例讲述了php单例模式。分享给大家供大家参考,具体如下:
<?php//单列模式// //1.普通类// class singleton{// }// $s1 = new singleton();// $s2 = new singleton();// //注意,2个变量是同1个对象的时候才全等// if ($s1 === $s2) {// echo '是一个对象';// }el{// echo '不是一个对象';// }// //2.封锁new操作// class singleton法治的作用{// protected function __construct(){}// }// $s1 = new singleton();//php fatal error: call to protected singleton::__construct()// //3.留个接口来new对象// class singleton{// protected function __construct(){}// public static function getins(){// return new lf();// }// }// $s1 = singleton::getins();// $s2 = singleton::getins();// if ($s1 === $s2) {// echo '是一个对象';// }el{// echo '不是一个对象';// }// //4.getins先判断实例// class singleton{// protected static $ins = null;// private function __construct(){}// public static function getins(){// if (lf::$ins === null) {// lf::$ins = new lf();// }// return lf::$ins;// }// }// $s1 = singleton::getins();// $s2 = singleton::getins();// if ($s1 === $s2) {// echo '是一个对象';// }el{// echo '不是一个对象';// }// //继承// class a extends singleton{// public function __construct(){}// }// echo '<br>';// $s1 = new a();// $s2 = new a();// if ($s1 === $s2) {// 一甲普通话 echo '是同一个对象';// }el{// echo为运动员加油的稿子 '不是同一个对象';// }// //5.防止继承时被修改了权限// class singleton{// protected static $ins = null;// //方法加final则方法不能被覆盖,类加final则类不能被继承// final private function __construct(){}// public static function getins(){// if (lf::$ins === null) {// lf::$ins = new lf();// }// return lf::$ins;// }// }// $s1 = singleton::getins();// $s2 = singleton::getins();// if ($s1 === $s2) {// echo '是同一个对象';// }el{// echo '不是同一个对象';// }// //继承// // class a extends singleton{// // public function __construct(){}// // }// //cannot override final method singleton::__construct()// echo '<hr>';// $s1 = singleton::getins();// $s2 = cl四川石油大学one $s1;// if ($s1 === $s2) {// echo '是同一个对象';// }el{// echo '不是同一个对象';// }//6.防止被cloneclass singleton{ protected static $ins = null; //方法加final则方法不能被覆盖,类加final则类不能被继承 final private function __construct(){} public static function getins(){ 圆明园的毁灭教案 if (lf::$ins === null) { lf::$ins = new lf(); } return lf::$ins; } // 封锁clone final private function __clone(){}}$s1 = singleton::getins();$s2 = clone $s1; //call to private singleton::__clone() from contextif ($s1 === $s2) { echo '是同一个对象';}el{ echo '不是同一个对象';}
更多关于php相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《php数组(array)操作技巧大全》、《php基本语法入门教程》、《php运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家php程序设计有所帮助。
本文发布于:2023-04-07 08:40:29,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/f17c30204ad7ab314b3db1669ec64f28.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:PHP单例模式实例分析【防继承,防克隆操作】.doc
本文 PDF 下载地址:PHP单例模式实例分析【防继承,防克隆操作】.pdf
留言与评论(共有 0 条评论) |