Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]jak utworzyć obiekt korzystając ze stringu
Forum PHP.pl > Forum > Przedszkole
masel
Mam taką funkcję

  1. <?php
  2. public function onOpen(){
  3.  
  4. include_once ('class/class.AddUrzadzenieGUI.php');
  5. new AddUrzadzenieGUI('glade/AddUrzadzenie.glade');
  6.  
  7. }
  8. ?>


i wszystko fajnie po wywołaniu dostaję obietk
ale jak zrobić aby ja przerobic na taki sposób

  1. <?php
  2. public function onOpen($name){
  3.  
  4. include_once ('class/class.'.$name.'GUI.php');
  5. new $name."GUI('glade/$name.glade')";
  6.  
  7. }
  8. ?>


gdzie $name='AddUrzadzenie'

i po wywołaniu

  1. <?php
  2. onOpen($name);
  3. ?>


dalej działało tak samo

sprawę include_once rozwiazałe ale nie mogę utworzyć obiektu, a właściwie przekazać parametru do konstruktora
Ociu
  1. <?php
  2. public function onOpen($name){
  3.  
  4. $ClassName = $name .'GUI';
  5. include_once ('class/class.'.$ClassName.'.php');
  6.  
  7.  
  8. new $ClassName('glade/$name.glade')";
  9.  
  10. }
  11. ?>


lub chyba {$name.'GUI'} czy jakoś tak, nie pamiętam dokładnie
masel
Dzięki Ociu naprowadziłeś mnie na dobrą drogę, mam dwa rozwiązania


Pierwsze:
(zwykłe)

  1. <?php
  2. public function onOpen($name){
  3.  
  4. include_once("class/".$name."GUI.php");
  5.  
  6. $ClassName = $name."GUI";
  7.  
  8. new $ClassName("glade/$ClassName.glade");
  9.  
  10. }
  11. ?>


Drugie:
(funkcja eval)

  1. <?php
  2. public function onOpen($name){
  3.  
  4. $include = "include_once("class/$nameGUI.php");";
  5. eval($include);
  6.  
  7. $klasa = "new $nameGUI("glade/$name.glade");";
  8. eval($klasa);
  9.  
  10.  
  11. }
  12. ?>


tylko strasznie dziwnie kod w pościew wygląda przez " więc napisze niżej bez znaczników
I:

public function onOpen($name){

include_once("class/".$name."GUI.php");

$ClassName = $name."GUI";

new $ClassName("glade/$ClassName.glade");

}

II:

public function onOpen($name){

$include = "include_once(\"class/$nameGUI.php\");";
eval($include);

$klasa = "new $nameGUI(\"glade/$name.glade\");";
eval($klasa);


}
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.