Не уверен, с чего начать. Статические методы принадлежат классу, нормальные методы принадлежат объекту, создание экземпляра этого класса. Например, вы можете иметь:
Class A {
static public $foo = 'WOOHOOO';
static function displayFoo() {
echo self::$foo;
}
}
echo A::displayFoo();
Это работает, потому что вы вызываете метод displayFoo
, принадлежащий классу A
. Или вы можете сделать это:
Class A {
public $foo = "WOOHOO";
public function displayFoo() {
echo $this->foo;
}
}
$obj = new A();
$obj->displayFoo();
Теперь вы создаете объект на основе класса A
. Этот объект может вызывать его методы. Но объект не имеет статических методов. Если бы вы объявили функцию статической, она была бы недоступна для $obj
.
Вы не можете сделать:
A->displayFoo()
вообще, ни при каких обстоятельствах, никогда. Оператор ->
предполагает наличие объекта, а A
не может быть объектом, поскольку он не является переменной.