Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dynamiczne tworzenie pól w klasie
Forum PHP.pl > Forum > PHP
radziel
[php:1:d9f2318ceb]<?php
/* cut */
function InitALLInterface()
{
$source = opendir(BASE_DIR . '/source/modules/');
while( $file = readdir($source) )
{
if ( ($file<>".") && ($file<>"..") && ( !is_dir($source.$file) ) )
{
$data = explode(".", $file);
eval("var $".$data[0].";");
}
}
closedir($source);
return true;
}
/* cut */
?>[/php:1:d9f2318ceb]

To jest jedna z metod klasy która miałaby za zadanie zainicjować wszystkie dostępne klasy (moduły) jądra.

Otwiera do odczytu katalog i jezeli to jest plik to bierze pierwszy człon nazwy pliku i miałby zrobić pole w klasie... Niestety evalem na takim poziomie się nie bawiłem i z tego co mi wiadmono raczej nie można robić nowych pól w metodzie... ale kodu poza metodami przecież parser nie wykonuje... tylko trzeba wywołać konkretną metodę...

Ma może ktoś jakiś pomysł jak dynamicznie tworzyć pola w klasie od nazw plików i przypisywać do tego obiekty?
Cudi
[php:1:5ae6d15808]<?php
$this->$data[0] = &$object;
?>[/php:1:5ae6d15808]
radziel
Cytat
[php:1:6c44796f38]<?php
$this->$data[0] = &$object;
?>[/php:1:6c44796f38]


Ale w tym wypadku $data[0] będzie odwołanie do object'u a ja chce żeby było np. pole $auth i było obiektem klasy auth która jest w pliku auth.php.. . Chce żeby to było robione hurtowo przez funkcję InitALLInterface i potem żebym miał tyle pól w klasie ile jest plików...
Cudi
Rozumiem że klasa auth będzie leżała w pliku auth.class.php lub coś podobnego, więc kod powinien wyglądac:
[php:1:25a6213461]<?php
include( $source.$file );
$data = explode(".", $file);
$this->$data[0] = new $data[0];
?>[/php:1:25a6213461]
Update:
Czy w zmiennej $source nie ma przypadkiem uchtytu otwartego katalogu, a nie ściezki do niego?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.