0

私はシングルトン パターン クラスを実装しました。これは、次のような別のクラスで使用できます。

class myClass {

private $attr;

public function __construct() {

    $this->attr = Singleton::getInstance;

    echo $this->attr::$sngtAttr; // Throw an error

        // witch syntax use whithout pass by a temp var ? 

    }

} 
4

2 に答える 2

0

$sngtAttr は静的プロパティですか?

そうでない場合は、次の
echo $this->attr->sngtAttr; instead of echo $this->attr::$sngtAttr; ようにします。

それ以外の場合は静的です:

echo Singleton::$sngtAttr;

于 2013-04-11T18:59:57.033 に答える
0

あなたの質問は何ですか?これはあなたがシングルトンを行う方法です:

<?php

class ASingletonClass
{
    // Class unique instance. You can put it as a static class member if
    // if you need to use it somewhere else than in yout getInstance
    // method, and if not, you can just put it as a static variable in
    // the getInstance method.
    protected static $instance;

    // Constructor has to be protected so child classes don't get a new
    // default constructor which would automatically be public.
    protected final function __construct() 
    {
        // ...
    }

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

        return self::$instance;
    }

    // OR :

    public static function getInstance() 
    {
        static $instance;

        if( ! isset($instance)) {
            $instance = new self;
        }

        return $instance;

        // In that case you can delete the static member $instance.
    }

    public function __clone()
    {
        trigger_error('Cloning a singleton is not allowed.', E_USER_ERROR);
    }
}

?>

また、getInstance を呼び出すときに () を忘れないでください。これはメンバーではなくメソッドです。

于 2013-04-11T19:01:27.900 に答える