Witam,
wiem, że za pomocą extract($array) jestem w stanie stworzyć zmienne, a więc takie coś jak poniżej mi zadziała.
<php
class Test
{
public $array = array('first' => 'first variable');
public function __construct()
{
echo $first; //output: first variable }
}
?>
Lecz jak zrobić to tak żeby zmienne z extract weszły mi pod public $array czyli otrzymałbym coś takiego
<?php
class Test
{
public $array = array('first' => 'first variable');
//tutaj juz krok kolejny po wykonaniu extract()
public $first = 'first variable';
public function __construct()
{
echo $this->first; //to powinno działać tylko i wyłącznie po wykonaniu extract ze względu na dynamiczne tworzenie zmiennych. }
}
Najlepiej chciałbym mieć możliwość stworzenia czegoś na wzór powyższego z dynamicznym tworzeniem zmiennych, ale w klasie statycznej tj:
class Test
{
private static $array = array('first' => 'first variable'); //to byłoby pobierane z pliku, ale teraz jest array na potrzeby tego postu
public static function loadConfigFile
() {
//rozpoznanie srodowiska, w ktorym pracuje
//ładowanie pliku z konfiguracją i tym samym tymi zmiennymi na podstawie rozpoznanego srodowiska
//np. ładuje config_dev.yml
self::createVariables();
}
/*
* $_data => data from config file after parse
*/
private static function createVariables
($_data) {
//tutaj odbieram przekazane dane z pliku i chciałbym zrobić extract
}
}
Teraz z innej klasy chciałbym mieć do tego dostęp tj:
class Start
{
public function __construct()
{
Config::loadConfigFile();
}
}
Da się to jakoś zrobić?
Wiem, że się trochę rozpisałem, ale mam nadzieję, że jest to w jakimś stopniu zrozumiałe.
Pozdrawiam,
Szymon