PHP bir nesneye bir başvuru dönen

0 Cevap php

I'm using PHP 5.2.14 and PearLog 1.12.3. The latest documentation from the singleton method in Log.php (PEARLog) states:

You MUST call this method with the $var = &Log::singleton()syntax. Without the ampersand (&) in front of the method name, you will not get a reference; you will get a copy.

Ancak, bunu yaparken aşağıdaki uyarıyı oluşturur:

STRICT NOTICE: Only variables should be assigned by reference


Bu işlev için kaynak:

public static function singleton($handler, $name = '', $ident = '',
                                 $conf = array(), $level = PEAR_LOG_DEBUG)
{
    static $instances;
    if (!isset($instances)) $instances = array();

    $signature = serialize(array($handler, $name, $ident, $conf, $level));
    if (!isset($instances[$signature])) {
        $instances[$signature] = Log::factory($handler, $name, $ident,
                                              $conf, $level);
    }

    return $instances[$signature];
}

Ben & kaldırırsanız ve sadece kullanmak:

$var = Log::singleton()

sonra ben artık uyarı olsun. Ayrıca, ben yaparsam

$var = Log::singleton();
$var2 = Log::singleton();

sonra $ var === var2'ye true değerlendirir.


Question: Hangisi doğru: API belgelerine veya uyarı? (Işlev bir nesne dönerse, yine bir referans değil mi? Ben işareti gerekir Neden?

0 Cevap