Ankündigung

Einklappen
Keine Ankündigung bisher.

Klassen-Eigenschaften dynamisch erweitern/verwalten?

Einklappen

Neue Werbung 2019

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

  • Klassen-Eigenschaften dynamisch erweitern/verwalten?

    Nabend,

    ich habe ein kleines Problem wo ich nicht so recht weiß wie ich es umsetzen kann und auch nicht so recht weiß wodrunter ich noch googlen soll :/
    Ich habe folgendes vor:
    In einer Config Datei habe ich ein Array welches ich mit Namespaces zu verschiedenen Klassen zeigen lasse. Sagen wir einfach mal zum Beispiel folgende:
    PHP-Code:
    array('datenbank' => Pfad1\Klasse(),
    'template' => Pfad2\Klasse()); 
    usw.
    nun will ich in meiner Hauptklasse (welche im Prinzip die Seite komplett verwaltet) die Eigenschaften erweitern das ich dort mit $this->datenbank und $this->template drauf zugreifen kann, wenn diese eben in dem Array vergeben sind. Wenn die jeweilige Eigenschaft nicht vorhanden ist soll es dann einfach die "normale" Klassenfunktion haben das es dann eben als Attribut gesetzt wird.

    Sorry fürs etwas umständliche beschreiben, mir fällt es nicht besser ein =/ Ich hoffe mir kann trotzdem jemand helfen


  • #2
    Das kannst du ganz normal machen, wie mit jeder Variable auch.

    PHP-Code:
    <?php
    class DB {
        public function 
    __toString() {
            return 
    "I am your Database class";
        }
    }

    class 
    MyClass {
        public function 
    __construct($config) {
            foreach(
    $config as $variable_name => $class_name) {
                
    $this->$variable_name = new $class_name();
            }
        }
        function 
    test() {
            echo 
    $this->database;
        }
    }

    $x = new MyClass(array('database' => 'DB'));
    $x->test();
    ?>
    sigpic

    Kommentar


    • #3
      PHP: berladung - Manual

      Was spricht gegen setter/getter Methoden?
      "Mein Name ist Lohse, ich kaufe hier ein."

      Kommentar

      Lädt...
      X