Wie autoload "Bibliotheken" in laravel 4?
Habe ich einen Ordner "library" im app-Ordner, um meine app-Bibliotheken. Ich habe aktualisiert die app config-Datei und Komponist.json zu laden, Ordner, aber wenn ich den Befehl ausführen composer dump-autoload
bekomme ich die nächste Fehlermeldung:
{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":"Class 'App\\Libraries\\Search\\SearchServiceProvider' not found","file":"D:\\Users\\Miguel Borges\\Documents\\Trabalhos\\Tese\\portal\\bootstrap\\compiled.php","line":4130}}PHP Fatal error: Class 'App\Libraries\Search\SearchServiceProvider' not found in D:\Users\Miguel Borges\Documents\Trabalhos\Tese\portal\bootstrap\compiled.php on line 4130
[Finished in 1.1s with exit code 255]
Meine app-Ordner-Struktur:
app
| ...
+ libraries
| + search
| | - Search.php
| | - SearchFacade.php
| | - SearchServiceProvider.php
| + lib2
| | - ...
| + lib3
| | - ...
| | - Theme.php
| - ...
- filters.php
- routes.php
SearchServiceProvider.php
namespace App\Libraries\Search;
use Illuminate\Support\ServiceProvider;
class SearchServiceProvider extends ServiceProvider {
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
$this->app['search'] = $this->app->share(function($app)
{
return new Search;
});
}
}
Komponist.json
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/libraries",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
//,
// "psr-0": {
// "app": "app/libraries"
// }
},
Grundsätzlich, ich brauche, um die autoload-alle libraries in den "libraries" Ordner.
"app/libraries"
des classmap-Bereich?nicht, die Ordner in der classmap, nur das laden der Dateien in die root, nicht in Unterordnern.
InformationsquelleAutor Miguel Borges | 2013-07-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellen Sie eine top-level-namespace für die Anwendung.
Legen Sie dann alle Bibliotheken Sie code unter diesem namespace. Hinweis: Drittanbieter-Bibliotheken sollte (hoffentlich) installiert werden, über Komponisten und haben daher einen eigenen Namensraum/autoloading-setup.
Ihre Verzeichnis-Struktur wäre dann:
Dann Ihre Klassen Folgen diesem namespace:
Datei:
Myapp/Search/Search.php
:Und schließlich Ihre autoloading setup:
Während es fühlt sich überflüssig auf den ersten, wie Sie bauen mehr Funktionalität es wirklich hilft, halten Sie die Dinge sauber und organisiert in meiner Erfahrung.
Wie funktioniert das mit den Controllern? Ich habe zum Beispiel eine API mit namespace Kätzchen/Api10; in meinem Controller. Würde ich das tun libraries/Kitties/Api10/PoniesLibrary.php und in PoniesLibrary use namespace Kätzchen/Api10?
Das bringt in den grauen Bereich von "Meinung". Man kann sicherlich tun. Ich in der Regel nicht gestellt Controller in der Anwendungs-Bibliothek (und damit keine in einem namespace), aber das ist genau mein Stil. Es sieht aus wie Sie haben die richtige Idee für namespaces und wie Sie sich auf Dateispeicherorte. Für Steuerungen, wenn in einem namespace, müssen Sie Sie verschieben Sie Sie in Ihr Anwendung-Bibliothek.
Groß-und Kleinschreibung ist wichtig Leute
InformationsquelleAutor fideloper