[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Глобальные и не только
Страницы: 1, 2, 3
YVSIK
Цитата (Invis1ble @ 2.11.2013 - 18:32)
То, что ты называешь переменными - на самом деле называется свойствами класса/объекта.

а что этого не писал в своем первом посте вот пожалуйста цитата

Цитата (YVSIK @ 2.11.2013 - 11:34)
В ООП тут переменная находиться в внутри того или иного класса,

а да не назвал их свойтвами)) однако НУ очень больщой мой просчет
biggrin.gif biggrin.gif
правда это , как они называются к делу не относятся, поверь я знаю что они так называются,
так вот , свойство это или перменная значения не имеет как была, так она и осталось переменной ,и ведет себя как переменная, хоть и зовется свойством.
как так понятно??? mad.gif

_____________
«Гнусное свойство карликовых умов приписывать
________________!свое духовное убожество другим!»
___
О) как-же он прав=>__________________ © Оноре де Бальзак.

отличный хост(рекомендую !! )
My MVC-CMV
YVSIK
немого подитожу смысл первого поста
если писать на ООП
то что, ИНИЦИАЛИЗИРОВАНЫХ переменных уже больше не надо,
могу перефоазировать , вдруг кто опять в ступор войдет от такого предложениея, и так ОНО-ЖЕ

есть необходимость новых переменных вне каких-бы-то нибыло классов?

_____________
«Гнусное свойство карликовых умов приписывать
________________!свое духовное убожество другим!»
___
О) как-же он прав=>__________________ © Оноре де Бальзак.

отличный хост(рекомендую !! )
My MVC-CMV
Rand
YVSIK
Нет. Часто запуск приложения выглядит так:
Application::main();
Таким образом, самой глобальной областью видимости (формально) будет тело метода main. Для передачи каких-то общих данных между объектами (например подключение к БД) используется несколько вариантов:

1) Передача нужных данных как параметр в конструктор или метод класса.
public static function main() {
$a = new A();
$b = new B($a);
$c = new C();
$c->foo($a);
}
2) Статические поля и статические методы.
public function __construct() {
$this->db = DataBase::getInstance();
$this->config = Registry::get('config');
echo Foo::FLAG;
echo Foo::$staticVar; //В большинстве случаев рекомендуется использовать методы доступа, но можно и так
}
OleKh
Понятное дело, что разобрать паттерн Registry просто не получится. Читаю этот паттерн т.с. по диагонали)

По сути, сам объект Registry - есть копия $GLOBALS из которого методами класса возвращаются переменные. Верно? Ну нет же смысла создавать новый объект и наполнятть его ещё одним $GLOBALS. Даже не так, поправлю не копия и не ссылка, а просто в Regisry создается метод который выполняет global $variable.

Где-то читал что в JAVA так и реализовано, что можно в любом месте использовать глобальную переменную, но почему-то в php - это считается очень плохо. Понятное дело, что так можно запутаться и переназначить переменную и потом не разобрать где это произошло. Но Registry тоже не решает этой проблемы. Правильно?

Т.е. в примере выше Registry::get('config') == global $config;

Реально ничего лучше не выходит, т.к. и в первом и во втором варианте происходит обращение к $GLOBALS, кроме как видимое отсутствие global. А ничего другого в ООП не получится, т.к. ну нет же смысла запрашивать заново данные из базы, когда они лежат в $GLOBALS . Или не правильно?
Guest
Сообщений: 2923
Сообщений: 446

Они всегда такие или неделя тролля сейчас?
Игорь_Vasinsky
оффтоп
ты теперь сюда ныть пришёл?


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Rand
Цитата (OleKh @ 4.11.2013 - 15:39)
Понятное дело, что так можно запутаться и переназначить переменную и потом не разобрать где это произошло. Но Registry тоже не решает этой проблемы. Правильно?

Нет, Registry это класс, который хранит в себе ссылки на другие объекты, при этом в классической реализации в реестр можно только добавлять объекты и получать их обратно по ключу, подмену сделать невозможно, т.к. есть только методы add и get. Пример с конфигом:

class Registry {
protected static $data = [];

public static function add($key, $value) {
if (!array_key_exists($key, static::$data)) {
static::$data[$key] = $value
}
}


public static function get($key) {
if (array_key_exists($key, static::$data)) {
return static::$data[$key];
}
}
}


Registry::add('config' , ['foo' => 'bar']);
Registry::add('config' , ['bad' => 'idea']);
var_dump(Registry::get('config'));
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.