Альтернатива обычному PHP классу - PullRequest
1 голос
/ 02 июня 2011

Как правило, при создании класса PHP я делал бы что-то подобное

class Foo
{
    public function Foo(){}
    public function RandomFunction(){};
}
global $foo;
$foo = new Foo();
$foo->RandomFunction();

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

Теперь альтернативой этому было бы использование статических классов как таковых:

class Foo
{
    static public function RandomFunction(){}
}
Foo::RandomFunction();

Мой вопрос заключается в следующем: это лучшая альтернатива глобальным переменным для классов?Или есть лучший способ сделать все это вместе?

Ответы [ 2 ]

4 голосов
/ 02 июня 2011

В хорошей практике OO, если классу нужен доступ к экземпляру другого класса, вы передаете объект в качестве параметра, а затем получаете доступ к его свойствам и методам оттуда.

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

2 голосов
/ 02 июня 2011

Думайте о своем объекте как о велосипеде.У вас есть свой велосипед, и вы можете одолжить его кому угодно.Они могут использовать его и вернуть вам, и вы сможете отследить, кто и что сделал с вашим велосипедом и когда.

Если ваш велосипед, как правило, доступен любому человеку в мире,работа по мониторингу и контролю доступа к нему будет экспоненциально сложнее.Вам будет сложно отследить, кто использует ваш велосипед, когда он его использует и как он (а) использует его.

Передача ваших объектов (а не объявление их глобально) позволяетчтобы обеспечить более строгий контроль над вашим объектом и данными, которые он содержит.

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