Об этом:
class foo {
public static function bar() {
echo 'hi';
}
}
Какая разница между этим:
foo::bar();
и это:
$obj = new foo();
$obj::bar();
Или нет разницы? Правы ли и принципы? Что лучше?
Я считаю, что между ними нет никакой разницы, но из моего опыта наиболее часто используемая форма Foo::bar()
,
Вы можете найти несколько примеров Вот.
Есть пример статического метода с использованием:
<?php
class Foo {
public static function aStaticMethod() {
// ...
}
}
Foo::aStaticMethod();
$classname = 'Foo';
$classname::aStaticMethod(); // As of PHP 5.3.0
?>
После этого вы можете найти пример с доступом к свойствам:
print Foo::$my_static . "\n";
$foo = new Foo();
print $foo::$my_static . "\n";
Это означает, что оба способа верны. Вам решать, что использовать.
Других решений пока нет …