2013-11-03 14 views
5

Ich versuche, die Simple HTML DOM Parser in meinem Laravel-4 Projekt zu laden. Ich kann es jedoch nicht finden, um die Klasse zu finden. Ich erhalte diese Fehlermeldung:Externe Bibliothek in Laravel-4 laden

Class 'Libraries\SimpleHtmlDom\simple_html_dom_node' not found 

I simple_html_dom.php in app\libraries und

namespace Libraries\SimpleHtmlDom; 

in der Spitze simple_html_dom.php gesetzt haben.

In global.php habe ich hinzugefügt, um den libraries Ordner:

ClassLoader::addDirectories(array(

    app_path().'/commands', 
    app_path().'/controllers', 
    app_path().'/models', 
    app_path().'/database/seeds', 
    app_path().'/libraries', 

)); 

Und schließlich in meinem Controller, ich versuche, es zu instanziieren:

$parser = new Libraries\SimpleHtmlDom\simple_html_dom_node; 

Was mache ich falsch?

Antwort

11

Spezifisch für Ihren Anwendungsfall

To (hoffentlich) Ihr Problem lösen, ohne Ihre aktuelle Struktur zu verändern, können Sie nur ausführen müssen:

$ composer dump-autoload 

Oder Sie können einen automatisch geladen Abschnitt hinzufügen müssen in composer.json zusammen mit den anderen:

"autoload": { 
      "classmap": [ 
        "app/commands", 
        "app/controllers", 
        "app/models", 
        "app/database/migrations", 
        "app/database/seeds", 
        "app/tests/TestCase.php", 
        "app/libraries" 
      ] 
    }, 

Und dann laufen wieder composer dump-autoload.

Packagist (besser?) Lösung

Es sieht aus wie ein Komponist Paket ist könnte man stattdessen verwenden werden: https://packagist.org/packages/sunra/php-simple-html-dom-parser

Dies macht es zu einem Projekt Hinzufügen einfacher:

A. hinzufügen Abhängigkeit zu composer.json (entweder über diesen CLI-Aufruf oder durch manuelle Zugabe zu Ihrer composer.json-Datei):

# Run this command: 
$ composer require "sunra/php-simple-html-dom-parser": "1.5.0.*@dev" 

B.Use new package im Code

$dom = HtmlDomParser::file_get_html($file_name);