2016-05-21 3 views
0

J'utilise une bibliothèque que j'ai téléchargée avec le compositeur appelé Pheanstalk. Je courais le script suivant:Erreur fatale: Classe 'Pheanstalk Pheanstalk` pas trouvé

<?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 

?> 

L'erreur suivante apparaît:

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

avec la ligne 16 étant: $pheanstalk = new Pheanstalk('127.0.0.1');

Question: Pourquoi pourrait-je recevoir cette erreur? Le script ci-dessus a été essentiellement copier-paisted du Exemple d'utilisation donné sur la page github Pheanstalk: https://github.com/pda/pheanstalk.

Le contenu de mon dossier composer.json sont:

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

ÉDITÉ:

nouvelles erreurs lors de l'utilisation:

use \Pheanstalk_Pheanstalk 

Erreurs:

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

'décharge-autoload' du compositeur? – Arcesilas

+0

@Arcesilas dois-je exécuter cela dans le terminal et vous donner la sortie? Je suis relativement nouveau à linux et compositeur – Webeng

+0

Il suffit de l'exécuter dans le terminal et réessayez. – Arcesilas

Répondre

1

Selon votre composer.json, vous utilisez la version 2.1.1: https://github.com/pda/pheanstalk/blob/2.1/classes/Pheanstalk/Pheanstalk.php

Le nom de classe est Pheanstalk_Pheanstalk pas Pheanstalk\Pheanstalk: il n'a pas été PSR-4 conforme à ce moment.

Alors vous devriez simplement utiliser:

<?php 
use \Pheanstalk_Pheanstalk; 

lorsque vous êtes dans un fichier espaces de noms. Si vous n'utilisez pas d'espace de noms dans un fichier, vous n'avez pas besoin d'importer la classe.

La barre oblique inverse est importante si vous utilisez des espaces de noms, car la classe, dans la version 2.x n'était pas espace de noms.

MISE À JOUR

Donc, votre code devrait ressembler à ceci:

<?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 

?> 

C'est tout.

+0

Donc je devrais changer 'user Pheanstalk \ Pheanstalk' pour' utiliser Pheanstalk_Pheanstalk'? Parce que j'ai déjà mentionné dans les commentaires que j'ai essayé et j'ai eu une autre erreur hahah. Je vais essayer à nouveau et poster Si je reçois une erreur – Webeng

+0

Juste édité ma réponse – Arcesilas

+0

Édité à nouveau :) – Arcesilas