2014-06-16 5 views
0

Je ne suis pas un expert PHP; J'essaie d'utiliser ce TextRank Library pour aider avec un projet. Il semble que je rencontre un problème bizarre: même après avoir ajouté la fonction de chargement automatique, l'exécution sur la ligne de commande entraîne toujours une erreur "class not found". Voici donc la mise en page:Erreur de classe non trouvée même avec chargement automatique

code

qui appelle les autres classes (le code "principal"):

echo realpath (__DIR__); 
function __autoload($class_name) { 
    if(file_exists(__DIR__ . "/lib/TextRank/" . $class_name . '.php')) { 
     require_once(__DIR__ . "/lib/TextRank/" . $class_name . '.php');  
    } else { 
     throw new Exception("Unable to load $class_name."); 
    } 
} 



$config = new Config; 
$textrank = new TextRank($config); 

$keywords = $textrank->getKeywords("The only asynchronous, one-on-four game in Nintendo’s booth came from the “Wait, they’re still making that?” franchise that is Mario Party, and its buried presence didn’t bode well. Thankfully, Mario Party 10’s demo didn’t waste time with the series’ slowest crawl-around-a-board-game moments, instead jumping straight into four mini-games."); 

var_dump($keywords); 

Voilà ma structure de répertoire:

  • /test.php (le fichier ci-dessus)
  • /lib
  • /lib/TextRank (contient toutes les classes référencées par le code ci-dessus
  • /lib/TextRank/Config .php

Pourtant, je reçois encore:

Fatal error: Class 'Config' not found in /path/to/test.php 

Cela signifie que:

  1. Le chargement automatique fonctionne, comme aucune exception n'a été levée.
  2. Mais d'une manière ou d'une autre, PHP ne trouve toujours pas les classes requises?

Est-ce que cela a quelque chose à voir avec les conventions d'espace de noms utilisés dans les classes, telles que:

(en /lib/TextRank/Config.php)

namespace crodas\TextRank; 

class Config 
{ 
.... 

Répondre

0

Oui, il le fait. Vous devez faire

$config = new crodas\TextRank\Config(); 

Mais cela ne sera pas attrapé par votre autochargeur. Vous devez rechercher un autochargeur compatible PSR-0.

+0

J'ai essayé un autochargeur compatible PSR-0, mais cela ne semble toujours pas fonctionner ... –

+0

Vous devez supprimer les crodas du nom ou déplacer les classes vers un autre sous-dossier/lib/crodas/TextRank. Sinon, le PSR-0 ne peut pas faire son travail – colburton