Attribute von Klassen dynamisch deklarieren

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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;
    }


    Comment


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

      Comment


      • #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;

        ?>
        Last edited by webstar85; 21-11-2004, 16:47.

        Comment


        • #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.

          Comment

          Working...
          X