β

单例 ,实例

e路相扶&&hunter_wyg 6 阅读
PHP

说实话,上班4年,还是有很多不清楚的,我其实也不知道自己到底在干什么了,今天突然看到单例模式,就想去试一下,单例和new的结果到底是怎么样的, 虽然大家都说 静态方法配合单例会好,因为他占资源,他在内存中存储,但是,底层呢,我还是不知道~越来越发现好多东西,哦,那个样子,那就那样吧,越来越不明白 自己要干什么了

饿汉式单例,懒汉式单例 (文中用的是懒汉式单例)

参考地址:

http://www.jianshu.com/p/9a58ffa71392
http://blog.csdn.net/lovelion/article/details/7420885

<?php

class test{
    protected static $_instance = '';
    public static function getInstance()
    {
        if(!self::$_instance) {
            self::$_instance = new test();
        }
        return self::$_instance;
    }
}
$test1 = test::getInstance();
$test2 = test::getInstance();
$test3 = test::getInstance();
echo $test1 === $test2, $test2===$test3;
var_dump($test1);
var_dump($test2);
var_dump($test3);

结果:


object(test)#1 (0) {
}
object(test)#1 (0) {
}
object(test)#1 (0) {
}

实例化:

class newTest{
    protected  $_object = '';
    public function getObject()
    {
        $_object = new newTest();
        return $_object;
    }
}
$newTest = new newTest();
$test1 = $newTest->getObject();
$test2 = $newTest->getObject();
$test3 = $newTest->getObject();
echo $test1 === $test2, $test2===$test3;
var_dump($test1);
var_dump($test2);
var_dump($test3);

结果:

false  false
object(newTest)#3 (1) {
  ["_object":protected]=>
  string(0) ""
}
object(newTest)#4 (1) {
  ["_object":protected]=>
  string(0) ""
}
object(newTest)#5 (1) {
  ["_object":protected]=>
  string(0) ""
}
PHP
作者:e路相扶&&hunter_wyg
风筝,是风的追随者;我们是技术的追随者~超越
原文地址:单例 ,实例, 感谢原作者分享。

发表评论