Frage

Ich habe einen Ordner mit benutzerdefinierten Klassen in einer ZF 1.10 Anwendung. Der Ordner befindet sich in / Bibliothek. Wie kann ich ZF sagen, wo sie sind? Sowohl application.ini und index.php den Weg in die Bibliothek gesetzt, aber dann kann ZF die Dateien nicht finden.

Danke

War es hilfreich?

Lösung

Es gibt viele mögliche Lösungen. Die am häufigsten, wenn Zend Anwendung verwendet wird, ist der Namensraum in application.ini registrieren durch Hinzufügen:

autoloaderNamespaces[] = "Example_"

Andere Lösungen:

  • Fügen Sie Ihre dir zu include_path mit set_include_path() (Ad-hoc-Lösung)
  • Folgen PEAR Namenskonventionen (so der Weg der Lösung war möglich)

Einrichten von Autoloader in Bootstrap.php:

protected function _initAutoloader()
{
    $autoloader = Zend_Loader_Autoloader::getInstance();
    $autoloader->registerNamespace("Example"); // or Example_
}

Schließlich einrichten Modul oder Ressource Autoloader , zum Beispiel.

$resourceLoader->addResourceTypes(array(
     'acl' => array(
        'path'      => 'acls/',
        'namespace' => 'Acl',
    ),
    'example' => array(
        'path'      => 'examples/',
        'namespace' => 'Example',
    ),        
));

Andere Tipps

Wir haben oft über ein Problem kommen, um unsere eigenen benutzerdefinierten Funktionen oder Klassen zu schreiben und wo sie zu setzen.

So benutzerdefinierte Klasse (oder benutzerdefinierte Bibliothek) hinzufügen ein Zend Framework Autoloader Namespaces verwenden können.

Fügen Sie die folgende Zeile in application.ini Datei

autoloaderNamespaces.custom = "Custom_"

oder

autoloaderNamespaces[] = "Custom_"

Alle benutzerdefinierten Klassen werden unter Bibliotheksverzeichnis aufbewahrt werden. Erstellen Sie einen Ordnernamen 'Custom' im Bibliotheksverzeichnis (die in application.ini definiert ist).

Der Unterricht wird mit 'Custom_' bei der Deklaration in der Datei vorangestellt wird (z Custom_Test)

Jetzt können wir diese Klasse als $test = new Custom_Test(), in unserer Anwendung verwenden.

Schauen Sie sich dieser älteren Zend Framework Tutorial von Rob Allen , insbesondere auf Seite 4, wo er über das Bootstrap-Programm spricht. Seine neuer Tutorials, so hervorragend, wie sie sind, erscheinen auf Zend_Tool verlassen, um die Anwendungserstellung zu tun und beschönigen diesen.

Eine Sache, die mich beunruhigt, war jedoch, dass Sie erwähnt, dass der Ordner Sie versuchen zu zählen ist Öffentlichkeit / Bibliothek. Es sei denn, Sie absichtlich Ihren Code mit der Welt teilen möchten, würde ich dringend empfehlen, es an anderer Stelle platzieren ... es sei denn, Sie einen anderen Ordner „public“ haben nicht mit der Öffentlichkeit geteilt (in diesem Fall Sie kann es zu prüfen, die Umbenennung zukünftige Verwirrung).

zu vermeiden

Fügen Sie Ihre benutzerdefinierte Bibliothek zu composer.json:

"autoload": {
"psr-0": {"Your": "vendor/My/library"}
},

und führen Komponist update

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