Frage

Ich bin ziemlich neu in der OO-Programmierung ...

Ich baue, was schließlich eine große Bibliothek von Klassen sein, wird sich herausstellen, um während meiner Website verwendet werden. Offensichtlich auf jeder Seite die gesamte Bibliothek Laden ist eine Verschwendung von Zeit und Energie ...

Was würde Ich mag eine einzige „config“ php class-Datei auf jeder Seite zu tun ist, erfordern, und in der Lage zu „Call“ oder „load“ anderen Klassen je nach Bedarf -. So erstreckt meiner Klasse nach meinen Bedürfnissen

Von dem, was ich weiß, ich kann nicht eine Funktion in der Config-Klasse verwenden, um einfach include () andere Dateien, wegen Umfang Probleme.

Was sind meine Optionen? Wie Entwickler in der Regel dieses Problem umgehen, und was ist das stabilste?

War es hilfreich?

Lösung

Sie können mit __autoload() oder ein Objekt Fabrik erstellen, die die erforderlichen Dateien laden, wenn Sie sie benötigen.

Als beiseite, wenn Sie Umfang Probleme mit Ihren Bibliotheksdateien sind, sollen Sie wahrscheinlich Ihr Layout Refactoring. Die meisten Bibliotheken sind Sätze von Klassen, die in jedem Bereich instanziiert werden können.

Das folgende ist ein Beispiel sehr einfache Aufgabe Fabrik.

class ObjectFactory {

    protected $LibraryPath;

    function __construct($LibraryPath) {
        $this->LibraryPath = $LibraryPath;
    }

    public function NewObject($Name, $Parameters = array()) {
        if (!class_exists($Name) && !$this->LoadClass($Name))
            die('Library File `'.$this->LibraryPath.'/'.$Name.'.Class.php` not found.');
        return new $Name($this, $Parameters);
    }

    public function LoadClass($Name) {
        $File = $this->LibraryPath.'/'.$Name.'.Class.php'; // Make your own structure.
        if (file_exists($File))
                return include($File);
        else    return false;
    }
}

// All of your library files should have access to the factory
class LibraryFile {

    protected $Factory;

    function __construct(&$Factory, $Parameters) {
        $this->Factory = $Factory;
    }
}

Andere Tipps

Sound wie Sie automatisch geladen und spl_autoload_register wenn Sie Klassen von 3rd-Party-Bibliotheken verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top