Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Extract do public variables.
Szymciosek
post
Post #1





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

Ostrzeżenie: (0%)
-----


Witam,
wiem, że za pomocą extract($array) jestem w stanie stworzyć zmienne, a więc takie coś jak poniżej mi zadziała.

  1. <php
  2. class Test
  3. {
  4. public $array = array('first' => 'first variable');
  5.  
  6. public function __construct()
  7. {
  8. extract($this->array);
  9. echo $first; //output: first variable
  10. }
  11. }
  12. ?>


Lecz jak zrobić to tak żeby zmienne z extract weszły mi pod public $array czyli otrzymałbym coś takiego
  1. <?php
  2. class Test
  3. {
  4. public $array = array('first' => 'first variable');
  5.  
  6. //tutaj juz krok kolejny po wykonaniu extract()
  7. public $first = 'first variable';
  8.  
  9. public function __construct()
  10. {
  11. extract($this->array);
  12. echo $this->first; //to powinno działać tylko i wyłącznie po wykonaniu extract ze względu na dynamiczne tworzenie zmiennych.
  13. }
  14. }



Najlepiej chciałbym mieć możliwość stworzenia czegoś na wzór powyższego z dynamicznym tworzeniem zmiennych, ale w klasie statycznej tj:
  1. class Test
  2. {
  3. private static $array = array('first' => 'first variable'); //to byłoby pobierane z pliku, ale teraz jest array na potrzeby tego postu
  4.  
  5. public static function loadConfigFile()
  6. {
  7. //rozpoznanie srodowiska, w ktorym pracuje
  8. //ładowanie pliku z konfiguracją i tym samym tymi zmiennymi na podstawie rozpoznanego srodowiska
  9. //np. ładuje config_dev.yml
  10. self::createVariables();
  11. }
  12.  
  13. /*
  14.   * $_data => data from config file after parse
  15.   */
  16. private static function createVariables($_data)
  17. {
  18. //tutaj odbieram przekazane dane z pliku i chciałbym zrobić extract
  19. extract($_data);
  20. }
  21.  
  22. }

Teraz z innej klasy chciałbym mieć do tego dostęp tj:
  1. class Start
  2. {
  3. public function __construct()
  4. {
  5. Config::loadConfigFile();
  6. echo Config::$first;
  7. }
  8. }



Da się to jakoś zrobić?
Wiem, że się trochę rozpisałem, ale mam nadzieję, że jest to w jakimś stopniu zrozumiałe.

Pozdrawiam,
Szymon
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.09.2025 - 21:40