Цитата (Invis1ble @ 2.11.2013 - 18:32) |
То, что ты называешь переменными - на самом деле называется свойствами класса/объекта. |
Цитата (YVSIK @ 2.11.2013 - 11:34) |
В ООП тут переменная находиться в внутри того или иного класса, |
Application::main();Таким образом, самой глобальной областью видимости (формально) будет тело метода main. Для передачи каких-то общих данных между объектами (например подключение к БД) используется несколько вариантов:
public static function main() {2) Статические поля и статические методы.
$a = new A();
$b = new B($a);
$c = new C();
$c->foo($a);
}
public function __construct() {
$this->db = DataBase::getInstance();
$this->config = Registry::get('config');
echo Foo::FLAG;
echo Foo::$staticVar; //В большинстве случаев рекомендуется использовать методы доступа, но можно и так
}
Цитата (OleKh @ 4.11.2013 - 15:39) |
Понятное дело, что так можно запутаться и переназначить переменную и потом не разобрать где это произошло. Но Registry тоже не решает этой проблемы. Правильно? |
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'));