Attribute von Klassen dynamisch deklarieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Attribute von Klassen dynamisch deklarieren

    Habt Ihr eine Idee, wie man das lösen könnte?

    PHP-Code:
    class klasse
    {
    private 
    var1;
    private 
    var2;

    private 
    dynamisch1;
    ...
    private 
    dynamisch2;

    function 
    funktion($anzahl_dyn_vars)
    {
    return 
    $this->dynamisch$anzahl_dyn_vars;
    }


    Dieses Schreiben wurde automatisch erstellt und ist ohne Unterschrift gültig.

  • #2
    Auch wenn ich an solcher Position ein Array besser finden würde, sollte es so funktionieren:
    PHP-Code:
    function funktion($anzahl_dyn_vars)
    {
        
    $var 'dynamisch' $anzahl_dyn_vars;
        return 
    $this->$var;
    }


    Kommentar


    • #3
      man kann keine attribute in methoden deklarieren
      Dieses Schreiben wurde automatisch erstellt und ist ohne Unterschrift gültig.

      Kommentar


      • #4
        Original geschrieben von TheUser
        man kann keine attribute in methoden deklarieren
        Du willst also selbst die Eigenschaften der Klasse dynamisch erstellen? Dann hatte ich dich falsch verstanden. Meines Wissens gibt es da nur eine Möglichkeit, nämlich mit __get() und __set() und einem Array, welche alle Eigenschaften verwaltet. __get() und __set() werden aufgerufen, wenn auf Eigenschaften zugegriffen werden, die nicht existieren:
        PHP-Code:
        <?php

        class Klasse
        {
            private 
        $properties = array();

            function 
        __get($name)
            {
                if(isset(
        $this->properties[$name])) {
                    return 
        $this->properties[$name];
                }
                
                throw new 
        Exception('Property "' $name '" not found');
            }


            function 
        __set($name$value)
            {
                 
        $this->properties[$name] = $value;
            }
        }

        // Beispiel:
        $obj = new Klasse();
        $obj->dynamischeEigenschaft 20;

        echo 
        $obj->dynamischeEigenschaft;

        ?>
        Zuletzt geändert von webstar85; 21.11.2004, 16:47.

        Kommentar


        • #5
          funktioniert mit array only

          tja, die lösung war ja eigentlich total naheliegend

          danke!
          Dieses Schreiben wurde automatisch erstellt und ist ohne Unterschrift gültig.

          Kommentar

          Lädt...
          X