Peter Pan: Variable in Klasse ändern

Beitrag lesen

Hi!

Wie ist es möglich die Variablen zu ändern bevor ich die Funktion erzeuge_Fenster() aufrufe?
Ist es möglich es so zu realisieren dass man zB
$x.width('300px');
$x.title('Hallo');

Der Punkt(.) hat in PHP eine andere Bedeutung als in C++ oder Java - er dient der string concatenation.

Natürlich kannst Du der Klasse Methoden zum Setzen von Eigenschaften hinzufügen:

  
  
class _message  
{  
 protected $width;  
 public function setWidth($w)  
 {  
    $this->width = $w;  
 }  
  // Rest  
}  
$x = new _message();  
$x->setWidth('300px');  

Oder evtl. die Eigenschaften direkt ändern, falls die Visibility dieser Eigenschaften das erlaubt/erlauben soll:

  
class _message  
{  
  public $width;  
   // Rest  
  
}  
$x = new _message();  
$x->width = '300px';  

Ein Problem ist auch noch dass die Variablen in der Funktion erzeuge_Fenster nicht bekannt sind. Muss man hier mit globals arbeiten?

Übergib die Variablen bei der Instanziierung, nutze also den Konstruktor wie Tom es bereits riet, wenn Du ein Objekt mit diesen Eigenschaften direkt benötigst.

Hierbei gäbe es dann viele Möglichkeiten, z.B:

  
// Dies ist nur ein Beispiel - es gibt zahlreiche andere Möglichkeiten.  
// Ich verwende hier exemplarisch ein Array, weil ich davon ausgehe, dass  
// die Anzahl der zu übergebenen Eigenschaften variabel ist  
// Insbesondere sollte *hier* die Gültigkeit der übergebenen Werte und Array-Keys geprüft werden  
  
<?php  
class _message  
{  
  protected $_property = array(); // CSS-Eigenschaften hier drin  
  public function __construct($prop)  
  {  
     $this->_property = $prop;  
  }  
  // Rest  
}  
  
$x = new _message(array('width'=>'300px', 'height'=>'auto', 'title'=>'Hallo', 'text'=>'Hallo Fenster'));  
// Schau das Objekt an:  
echo '<pre>'.[link:http://www.php.net/manual/de/function.var-export.php@title=var_export]($x, true).'</pre>';  

BTW: Dein Code sieht nach PHP 4 aus, auch wenn er weiterhin so in PHP 5 verwendbar wäre. Ist das Absicht?

off:PP

--
"You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)