static function и просто функция используя ::

2ka

Новичок
static function и просто функция используя ::

Господа, есть класс
PHP:
final class phpclub {
    private static $_a_array;

    public function array_add($a_attr, $s_value) {
        self::$_a_array[$a_attr] = $s_value;
    }

    public static function static_array_add($a_attr, $s_value) {
        self::$_a_array[$a_attr] = $s_value;
    }
}
В общем, в чем отличие phpclub::static_array_add(), от phpclub::array_add();? Именно используя "::".
 

Alexandre

PHPПенсионер
public static function static_array_add($a_attr, $s_value)
может использоваться только как статическая,
такой вариант непокатит
PHP:
$p = new phpclub ;
$p->static_array_add($a_attr, $s_value);
с точки зрения выполнения функций в статическом режиме - отличия нет -
 

Wicked

Новичок
Alexandre
а ты попробовал это сделать, прежде чем утверждать?

на мой взгляд главное отличие - это такое:
В нестатических методах при статическом вызове $this в них будет относиться к объекту, из метода которого был вызвал этот метод. В статическом вызове статической функции $this вообще не определена.

PHP:
class a {
  static public function st() {print get_class($this);}
         public function nonst() {print get_class($this);}
}

class b {
  public function c() {a::st(); a::nonst();}
}

$b = new b();
$b->c();
выводит
Код:
Notice: Undefined variable: this in C:\2.php on line 6
b
-~{}~ 28.06.07 15:53:

но лично я считаю, что вызывать статически нестатические функции не стоит в принципе. Если мне нужно по какой-то причине вызывать функцию статически, то я делаю ее статической.
 
Сверху