php5.3匿名函数实现单例模式

PHP中文网
リリース: 2016-05-25 16:59:16
オリジナル
1200 人が閲覧しました

从laravel源码中看到的,学习下。
执行代码返回如下信息:
init
string 'msg' (length=3)
string 'msg' (length=3)
init
string 'msg2' (length=4)
init
string 'msg3' (length=4)
string 'msg3' (length=4)
string 'msg3' (length=4)

php代码

class cc {
 
    function normal($a)
    {
        static $object;
 
        if (is_null($object))
        {
            echo 'init';
            $object = $a;
        }
 
        return $object;
    }
 
    public function share($p)
    {
        return function() use ($p)
        {
            static $object;
 
            if (is_null($object))
            {
                echo 'init';
                $object = $p;
            }
 
            return $object;
        };
    }
 
}
 
$c = new cc();
 
$msg = $c->share('msg');
var_dump($msg());
var_dump($msg());
$msg2 = $c->share('msg2');
var_dump($msg2());
 
$msg3 = $c->normal('msg3');
var_dump($msg3);
var_dump($msg3);
$msg4 = $c->normal('msg4');
var_dump($msg4);
ログイン後にコピー
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!