Question

Je construis un projet Symfony 1.4, et je tente d'utiliser PEAR de Crypt_RSA paquet. Malheureusement, le paquet n'a pas été mis à jour en temps, donc au lieu de faire simple pear install de la ligne de commande, je veux inclure dans mon chemin de projet lib/vendor afin que je puisse modifier divers morceaux de code pour une utilisation dans PHP5. (Il provoque actuellement des avertissements et des erreurs strictes, et je ne veux pas désactiver le contrôle d'erreur stricte).

Je créé un fichier autoload.yml dans mon chemin de config qui contient maintenant ce qui suit:

autoload:
    Crypt_RSA:
        path:      %SF_LIB_DIR%/vendor/Crypt
        recursive: true

Je tente alors d'utiliser la classe Crypt_RSA_KeyPair ( Source ) de la manière suivante:

$keyPair = new Crypt_RSA_KeyPair(128);

Il en résulte l'erreur suivante:

Attention : require_once (Crypte / RSA / ErrorHandler.php) [ function.require-fois ]: pas flux ouvert: Aucun fichier ou répertoire /app_path/lib/vendor/Crypt/RSA/KeyPair.php en ligne < strong> 28

erreur irrécupérable : require_once () [ fonction. exiger ]: Failed opening required 'Crypte / RSA / ErrorHandler.php' (include_path = '/ opt / local / lib / php') in / app_path / lib / vendor / Crypte / RSA / KeyPair.php en ligne 28

Recherche dans le fichier crypte / RSA.php ( la source), il a des appels require_once pour Crypt / RSA / ErrorHandler.php, Crypte / RSA / MathLoader.php, Crypte / RSA / Key.php et crypte / RSA / KeyPair.php, donc Je pense que je ne veux pas symfony à tout chargement automatique (ie: non autoLoad récursive) - juste le fichier RSA.php. Cependant, les appels de require_once sont spécifiques au dossier contenant le dossier crypte, ce qui signifie que le chargement automatique doit faire en sorte que lorsque RSA.php est chargé, il le charge du bon chemin de telle sorte que chacun de ces fichiers peuvent être chargés correctement.

Dans cet esprit, j'ai essayé quelques réglages différents sans chance:

autoload:
    Crypt_RSA:
        path:      %SF_LIB_DIR%/vendor
        files:     [Crypt/RSA.php]
        recursive: false

et

# moved "Crypt" folder into a subfolder named "pear"
autoload:
    Crypt_RSA:
        path:      %SF_LIB_DIR%/vendor/pear
        recursive: false

Chacune de ces nouvelles tentatives a donné lieu à une autre erreur dans lequel la classe Crypt_RSA_KeyPair était tout simplement pas trouvé tout à fait.

Erreur fatale : Class 'Crypt_RSA_KeyPair' ne se trouve pas dans la ligne /app_path/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUser.class.php 70

J'ai essayé de creuser à travers les documents, mais la plupart de mes recherches Google pointent vers Symfony docs pour 1.0 plutôt que 1.4, et tous les documents sont généralement vagues sur autoloading fichiers fournisseurs.

Je suppose une autre option serait de require_once manuellement le fichier RSA.php j'ai besoin, mais je devine que enfreindrait convention Symfony, et probablement faire quelque chose plus dur que je devrais être (même si cette chose autoloading semble être plus difficile qu'il doit être trop).

Était-ce utile?

La solution

Vous pouvez essayer de créer votre chargeur automatique personnalisé pour l'ensemble des fournisseurs Crypt_RSA et l'enregistrer dans le ProjectConfiguration, comme ils présenté dans la documentation Jobeet (en utilisant Zend Lucene).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top