2016-05-21 10 views
0

Ich verwende eine Bibliothek, die ich mit dem Compiler namens Pheanstalk heruntergeladen habe. Ich verwende das folgende Skript:Schwerwiegender Fehler: Klasse 'Pheanstalk Pheanstalk' nicht gefunden

<?php 

//... some unrelated code 

require_once('vendor/autoload.php');  //loading the autoload file from composer 
use Pheanstalk\Pheanstalk;     //using the namespace 
$pheanstalk = new Pheanstalk('127.0.0.1'); //initiating an object 

//... some unrelated code 

?> 

Die folgende Fehlermeldung angezeigt:

Fatal Error: Class 'Pheanstalk\Pheanstalk' not found in /opt/lampp/htdocs/project_zero/index.php on line 16 

mit Linie 16 Wesen: $pheanstalk = new Pheanstalk('127.0.0.1');

Frage: Warum könnte ich diesen Fehler bekommen? Das obige Skript wurde im Wesentlichen aus dem Anwendungsbeispiel, das auf der Pheanstalk github-Seite: https://github.com/pda/pheanstalk angegeben ist, kopiert.

Die Inhalte meiner composer.json Datei sind:

{ 
    "require": { 
    "pda/pheanstalk": "2.1.1" 
    } 
} 

EDITED:

Neue Fehler bei der Verwendung von:

use \Pheanstalk_Pheanstalk 

Fehler:

Warning: The use statement with non-compound name 'Pheanstalk_Pheanstalk' has no effect in /opt/lampp/htdocs/project_zero/index.php on line 14 

Fatal error: Class 'Pheanstalk' not found in /opt/lampp/htdocs/project_zero/index.php on line 17 
+0

'composer dump-autoload'? – Arcesilas

+0

@Arcesilas führe ich das im Terminal und geben Sie die Ausgabe? Ich bin relativ neu zu Linux und Komponist – Webeng

+0

Führen Sie es einfach im Terminal und versuchen Sie es erneut. – Arcesilas

Antwort

1

nach Ihren composer.json, Sie Version 2.1.1: https://github.com/pda/pheanstalk/blob/2.1/classes/Pheanstalk/Pheanstalk.php

Der Klassenname ist Pheanstalk_Pheanstalk nicht Pheanstalk\Pheanstalk: es in diesem Moment nicht PSR-4 konform war.

So sollten Sie nur verwenden:

<?php 
use \Pheanstalk_Pheanstalk; 

, wenn Sie in einer Datei Namespace sind. Wenn Sie den Namespace nicht in einer Datei verwenden, müssen Sie die Klasse nicht "importieren".

Backslash ist wichtig, wenn Sie Namespaces verwenden, da die Klasse in der Version 2.x keinen Namespace hatte.

UPDATE

So sollte der Code wie folgt sein:

<?php 

//... some unrelated code 

require_once('vendor/autoload.php');  //loading the autoload file from composer 
$pheanstalk = new Pheanstalk_Pheanstalk('127.0.0.1'); //initiating an object 

//... some unrelated code 

?> 

Das ist alles.

+0

Also würde ich 'Benutzer Pheanstalk \ Pheanstalk' ändern müssen, um' Pheanstalk_Pheanstalk' zu verwenden? Weil ich zuvor in den Kommentaren erwähnt habe, habe ich das versucht und einen weiteren Fehler bekommen hahah. Ich werde es noch einmal versuchen und posten Wenn ich einen Fehler erhalte – Webeng

+0

Habe gerade meine Antwort bearbeitet – Arcesilas

+0

Nochmals bearbeitet :) – Arcesilas

Verwandte Themen