Question

Je travaille sur une application qui se connecte à Intuit Quickbooks API auge leur RESTE SDK PHP.En PHP, j'ai des choses à travailler sans problème depuis que j'ai charger les fichiers comme suit:

require_once('../api/config.php');  // Default V3 PHP SDK (v2.0.1) from IPP
require_once(PATH_SDK_ROOT . 'Core/ServiceContext.php');
require_once(PATH_SDK_ROOT . 'DataService/DataService.php');
require_once(PATH_SDK_ROOT . 'PlatformService/PlatformService.php');
require_once(PATH_SDK_ROOT . 'Utility/Configuration/ConfigurationManager.php');

Maintenant, j'ai besoin d'utiliser les bibliothèques dans Symfony2 contrôleur à partir d'un paquet et c'est là où mon doute vient, comment je peux atteindre facilement?J'ai lu beaucoup de docs link1, Symfony Classe Du Composant Loader et quelques autres, mais même n'est pas clair du tout pour moi.Pour l'instant j'ai créé cette structure dans mon /vendor dossier que l'image montre:

vendor structure

L' config.php fichier que vous pouvez le voir il y a ce code:

/**
 * This file allows custom configuration of paths for XSD2PHP dependencies and
 * POPO classes.  Rarely necessary, but possible.
 *
 * @author Intuit Partner Platform Team
 * @version 1.0
 */

// Determine parent path for SDK
$sdkDir = __DIR__ . DIRECTORY_SEPARATOR;

if (!defined('PATH_SDK_ROOT'))
    define('PATH_SDK_ROOT', $sdkDir);

// Specify POPO class path; typically a direct child of the SDK path
if (!defined('POPO_CLASS_PATH'))
    define('POPO_CLASS_PATH', $sdkDir . 'Data');

// Include XSD2PHP dependencies for marshalling and unmarshalling
use com\mikebevz\xsd2php;
require_once(PATH_SDK_ROOT . 'Dependencies/XSD2PHP/src/com/mikebevz/xsd2php/Php2Xml.php');
require_once(PATH_SDK_ROOT . 'Dependencies/XSD2PHP/src/com/mikebevz/xsd2php/Bind.php');

// Includes all POPO classes; these are the source, dest, or both of the marshalling
set_include_path(get_include_path() . PATH_SEPARATOR . POPO_CLASS_PATH);
foreach (glob(POPO_CLASS_PATH.'/*.php') as $filename)
    require_once($filename);

// Specify the prefix pre-pended to POPO class names.  If you modify this value, you
// also need to rebuild the POPO classes, with the same prefix
if (!defined('PHP_CLASS_PREFIX'))
    define('PHP_CLASS_PREFIX',    'IPP');

Et il est où le chargement des classes de magie est, au moins pour la QBO SDK PHP façon, de sorte que:

  • Comment je dois faire face à cela, dans le but d'utiliser la classe comme Symfony2 ne je veux dire créer des objets et ainsi de suite?
  • Puisque c'est non PSR-0 de la bibliothèque, sera Symfony Chargeur de Classe de Composant de la solution?
  • Pourriez-vous me donner quelques idées ou même un peu de code pour m'aider à faire ce travail?
Était-ce utile?

La solution

Symfony utiliser Composer.Donc, la façon la plus simple d'inclure votre kit de développement est à peu près le rendre compatible avec le Compositeur, d'une manière ou d'une autre.

Cela nécessitera un composer.json sur l'emballage de la racine.Créer.

La plus simple solution de

Mettre un classmap instruction dans votre composer.json's autoload section :

"autoload": {
    "classmap": ['src/'],
},

Compositeur va alors analyser récursivement l' src/ répertoire lors de la création de chargement automatique de fichiers.Et ainsi, chaque classe sera importé en cas de besoin, sans modifier les espaces de noms ou quoi que ce soit.

L'inconvénient est que la bibliothèque ne fonctionne toujours pas, suivez PSR0, avec tous les risques inclus.

Laborieux solution

PSR0-identifier la bibliothèque par l'édition de chaque fichier source pour ajouter le droit namespace et use instructions en haut de chaque fichier.C'est simple, mais laborieux étant donné le nombre de classes dans le SDK.

Vous pouvez ensuite ajouter de la autoload la section de l'emballage composer.json, comme ceci :

"autoload": {
    "psr-0": {
        "QBO\\": "src/"
    }
},

Solution Alternative

Lors de la recherche de cette API, j'ai trouvé consolibyte/quickbooks-php ce sur packagist... peut-être la peine d'essayer.

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