Разница между :: и -> в PHP - PullRequest
14 голосов
/ 10 мая 2010

Я всегда вижу, как люди в серьезных проектах используют :: везде, и -> только иногда в локальной среде.

Я использую только -> себя и никогда не оказываюсь в ситуациях, когда мне нужно статическое значение вне класса. Я плохой человек?

Как я понимаю, единственная ситуация, когда -> не работает, - это когда я пытаюсь выполнить следующее:

class StaticDemo {  
    private static $static  
}

$staticDemo = new StaticDemo( );

$staticDemo->static; // wrong  
$staticDemo::static; // right

Но я упускаю некоторую корректность программирования, когда я не вызываю простые публичные методы ::?

Или это просто для того, чтобы я мог вызывать метод без создания экземпляра?

Ответы [ 12 ]

1 голос
/ 10 мая 2010

:: используется для статических методов, которые вы вызываете, если у вас нет экземпляра объекта.

0 голосов
/ 10 мая 2010

Ну, вы правы насчет того, как использовать -> и ::. Но иногда просто не имеет смысла смысл создавать объекты класса. Вот пример Сравнить

class Settings
{
    public static $setting1;
    public static $setting2;
    ... // lots of other vars and functions
}
if(Setting::$setting1)
    //do something

против

class Settings
{
    public $setting1;
    public $setting2;
    ... // lots of other vars and functions
}
$set = new Settings()
if($set->setting1)
    //do something

Как я уже сказал, не имеет смысла создавать экземпляры, поскольку всегда требуется только один. в этом случае статика подходит лучше. Оказывается, в Интернете мы в основном имеем дело с подобным случаем, если вы не имеете дело с реальными объектами например пользователи и т. д. отсюда преобладание бывшего

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...