À l'aide d'un non-laravel paquet sur Laravel 4
Est-il possible d'inclure un paquet qui n'a pas été spécifiquement conçu pour les L4 dans le cadre?
Si oui, comment est-il fait? Je sais que je dois ajouter à mon composer.json
qui ajoute à la vendor
dossier, mais puis-je l'enregistrer en quelque sorte dans le providers
tableau? existe-il d'autres étapes nécessaires?
Je voudrais utiliser le Google checkout paquet conçu à l'origine pour Yii
Vous devez vous connecter pour publier un commentaire.
À l'aide de tiers compositeur paquets avec Laravel 4
Quand aux développeurs de créer des compositeur paquets, ils devraient la carte de l'auto-chargement à l'aide de PSR-0 ou PSR-4 normes. Si ce n'est pas le cas, il peut y avoir des problèmes de chargement du package de votre application Laravel. Le PSR-0 standard est:
Et le PSR-4 standard:
Fondamentalement, le ci-dessus est un standard pour raconter compositeur où chercher pour le nom interligne fichiers. Si vous n'utilisez pas vos propres espaces de noms, vous n'avez pas à configurer quoi que ce soit d'autre.
SCÉNARIO 1
PSR-0 standard paquets suivants (avec chargement automatique classmap) dans Laravel
C'est simple, et pour l'exemple, je vais utiliser le facebook sdk php, qui peut être trouvé:
https://packagist.org/packages/facebook/php-sdk
Étape 1:
Inclure le package dans votre compositeur.fichier json.
Étape 2:
Étape 3:
Parce que le facebook utilise un package de la classe de la carte son travail hors de la boîte, vous pouvez commencer à utiliser le package instantanément. (L'exemple de code ci-dessous est livré directement à partir de l'affichage normal. Veuillez vous en tenir à la logique de vues dans votre production d'app.)
SCÉNARIO 2
Pour cet exemple, je vais utiliser un wrapper de la instagram php api. Ici, il doit y avoir fait quelques ajustements pour obtenir le package chargé. Permet de lui donner un essai!
Le package peut être trouvé ici:
https://packagist.org/packages/fishmarket/instaphp
Étape 1:
Ajouter au compositeur .json
Ensuite, vous pouvez mettre à jour normalement (compositeur de mise à jour)
Suivante, essayez d'utiliser le package comme vous l'avez fait avec le facebook paquet. Encore une fois, c'est juste le code dans une vue.
Si vous essayez de l'exemple ci-dessus, vous obtiendrez ce message d'erreur:
Nous avons donc besoin de résoudre ce problème. Pour ce faire, nous pouvons examiner l'instagram compositeur.json, qui a son autoload différente de l'facebook sdk php eu.
Par rapport à la facebook compositeur.json:
(Compositeur traite différents types de chargement automatique, à partir de fichiers et de classe-cartes de RP. Jetez un oeil à votre
vendor/composer/
dossier pour voir comment c'est fait.)Maintenant, nous allons avoir à charger la classe, manuellement. C'est simple, il suffit d'ajouter ce (en haut de votre contrôleur, modèle ou de la vue):
compositeur benne de chargement automatique, et ça marche!!!
étape 2 (facultatif)
Une autre méthode (si vous ne voulez pas utiliser l'instruction "use", vous pouvez simplement dire compositeur pour rechercher les fichiers directement à partir de votre code. Il suffit de changer l'Instance comme suit:
Cependant, je suggère à l'aide de la
use
déclaration à faire comprendre aux autres développeurs (et votre soi futur) quel (externe) classes/les paquets sont utilisés dans le programme.SCÉNARIO 3
Ici, nous utilisons la Laravels construit dans le conteneur IOC pour enregistrer les fournisseurs de services. Veuillez noter que certains paquets peuvent ne pas être adaptés à cette méthode. Je vais utiliser le même Instagram paquet comme dans le scénario 2.
Rapide et sale
Si vous n'avez pas de soins sur les design patterns et les fournisseurs de services, vous pouvez lier une classe comme ceci:
Et vous le résoudre comme ça.
Rapide et sale fin
Si vous travaillez sur un projet de plus grande envergure, et de vous faire utiliser des interfaces, vous devriez probablement abstrait les liaisons plus loin.
Étape 1:
Créer un dossier dans votre dossier app, par exemple un 'fournisseurs' dossier.
Assurez-vous que Laravel auto-charge de ce dossier, vous pouvez passer quelques informations supplémentaires au compositeur.json, comme ceci:
Maintenant créer un Fichier dans le nouveau dossier appelé Instagram.php et les place à l'intérieur:
Maintenant exécuter le compositeur de vidage-autoload de nouveau, et vous pouvez utiliser le package. Notez que le instagram paquet a une
final private function __construct()
, cela signifie que vous ne pouvez pas utiliser ce package à l'extérieur de la classe d'origine, sans modification de la méthode de construction pour le public. Je ne dis pas que c'est une bonne pratique, et je vous suggérons d'utiliser le scénario 2, dans le cas de l'instagram de package.De toute façon, après cela, vous pouvez utiliser le paquet comme ça:
Ajouter
"tvr/googlecheckout": "dev-master"
à votrecomposer.json
.Exécuter
composer install
, vous pouvez utiliser le conteneur IoC. Quelques exemples de code peut être trouvé dans les docs officielles pour Laravel 4: http://four.laravel.com/docs/ioc#basic-usage