2016-12-20 3 views
0

Ich arbeite an einem Projekt und es wird mir etwas zu schwer ... Ich erkläre es.Undefinierte Methode mit Composer-Bibliothek und CodeIgniter

Ich muss PDF-Dateien mit PHP analysieren, um den Inhalt dieser Dateien zu analysieren. Um das zu tun, verwende ich pdfparser.org Bibliothek. Ich habe zuerst versucht, diese Bibliothek wie gewohnt zu integrieren, ohne Ergebnis. Nachdem ich das gesamte Internet gelesen habe, da diese Bibliothek die Installation von Composer erfordert (und auf meinem Webhosting Composer nicht installiert werden kann), habe ich den Composer-Prozess auf meinem Windows-PC angewendet. Ich habe den Ordner "vendor" mit der Datei "autoload.php". Gut !!

Dann habe ich versucht, es richtig in CodeIgniter einzuschließen. Die Lösung, die ich gewählt habe, ist:

  1. eine Datei "Pdfparser.php" in Anwendung/Bibliotheken erstellen/

    class Pdfparser 
    { 
        public function __construct() 
        { 
         require_once APPPATH."/third_party/pdfparser.php"; 
        } 
    } 
    
  2. Dann habe ich die PdfParser "Composer" Anwendung in Anwendung hinzufügen/third_party /, und in der /third_party/pdfparser.php ich einfach gesagt:

    if (!defined('pdfparser')) { 
        define('pdfparser', dirname(__FILE__) . '/'); 
        require(pdfparser . 'pdfparser/autoload.php'); 
    } 
    
  3. Dann füge ich diese Bibliothek zu CodeIgniter /application/config/autoload.php als:

    $autoload['libraries'] = array('pagination', 'form_validation','email','upload','pdfparser'); 
    
  4. Schließlich nenne ich es in meiner Funktion in application/controllers/admin.php:

    $parser = new Pdfparser(); 
         $pdf = $parser->parseFile(myfile.pdf); 
         $full_text = $pdf->getText(); 
    

    (Dieser 4. Block des Codes direkt von der offiziellen Dokumentation hier genommen wird: http://www.pdfparser.org/documentation und gerade angepasst).

  5. Aber jetzt, ich breche das Internet ... Ich habe diesen Fehler:

    PHP Fatal error: Call to undefined method PdfParser::parseFile() in /path/application/controllers/Admin.php on line 3083 
    
  6. Nachdem sah CodeIgniter Dokumentation, ich versuche, den Composer Autoloader auf den Kern hinzuzufügen ... in application/ich config/autoload.php setzen:

    $config['composer_autoload'] = APPPATH . "/third_party/pdfparser/autoload.php"; 
    
  7. natürlich doest es nicht funktionieren. Und ich bin verloren ...

+2

versuchen Sie es so ... '$ config ['composer_autoload'] = TRUE;' –

+0

Hikmat: Ich habe es versucht, aber nichts mehr ... Dann habe ich versucht, meine Composer-Bibliothek direkt im Ordner Anwendung/Hersteller hinzuzufügen , mit $ config ['composer_autoload'] = TRUE; Aber nichts besseres ... – John

Antwort

1

Verwendung Komponist richtig.$config['composer_autoload'] = TRUE; und in Ihrem Anwendungsordner ausführen composer install smalot/pdfparser. Dann in Ihrem Controller sollte es laufen, wenn nicht Gebrauch verwenden :)

use Smalot\PdfParser; 
class My_controller extends CI_Controller { 
} 
+0

Hier ist das Problem! Ich kann dies nicht auf meinem Web-Hosting ... Und zum Beispiel, wenn ich das tue auf meinem lokalen Speicher, und laden Sie dann die generierten "Vendor" Ordner, würde es funktionieren? – John

+0

Ich habe auch keinen Zugriff durch ssh und es funktioniert, die Art, wie Sie beschrieben haben – cssBlaster21895

+0

Nun, es scheint jetzt zu arbeiten, da es das findet Klasse und führt den Code! Die einzige Sache ist, dass ich einen "TCPDF_PARSER FEHLER: Leere PDF-Daten." ... Ich überprüfe, woher es kommt ... Danke! – John

0

Ersetzen Sie Ihren Code

class Pdfparser 
{ 
    public function __construct() 
    { 
     require_once APPPATH."/third_party/pdfparser.php"; 
    } 
} 

mit

<?php 

require_once APPPATH."/third_party/pdfparser.php"; 
class Pdfparser 
{ 
    public function __construct() 
    { 
    } 
} 

außerhalb Ihrer Klasse einschließen.

Anstatt mit selbstladende Sie Bibliothek wie diese laden kann ...

$this->load->library('library_name'); 

Beispiel:

$this->load->library('pdfparser'); 
+0

Danke! Ich habe beide Lösungen ausprobiert, und ich bekomme den gleichen Fehler ... Ich verliere die Hoffnung: '( – John

1

Wenn Komponist mit einer Bibliothek in einem Projekt gehören tun Sie etwas wie folgt aus:

composer install smalot/pdfparser 

Dann gehören die neu installierte Bibliothek, müssen Sie nur die "autoload.php" Datei von composer zur Verfügung gestellt:

Nichts mehr.

+0

von diesem Artikel, um Composer Autoload in Code Zünder Kontext zu verwenden: http://Stackoverflow.com/a/32339874/1931915 –

Verwandte Themen