2010-09-01 20 views
2

Im travaillant sur quelques projets basés sur php et im ayant un numéro de devoir maintenir des bases de code séparées avec le code commun. Le code commun partagé entre tous les projets est ajouté physiquement (les fichiers sont copiés dans le dossier) et lorsqu'une modification est nécessaire, nous devons répliquer manuellement les correctifs dans la fonctionnalité de code commun de chaque projet.Création de bibliothèques partagées en PHP

En Java, nous pouvons créer une bibliothèque (fichier jar) et la partager entre différents projets. Y at-il concept lié à la bibliothèque partagée disponible en PHP 5.

Répondre

0

J'ai aussi été réfléchissaient le même problème. Voici quelques pensées.

approches

1: Définissez le chemin d'inclusion dans un dossier partagé de tous vos projets. Il ne devrait rien casser si vous faites attention à la rétrocompatibilité lors de l'écriture/modification de votre bibliothèque. Mais oui c'est très risqué car si vous cassez quelque chose, il sera brisé sur tous vos projets. 2: Créez un script de mise à jour simple inclus avec votre bibliothèque qui copie les fichiers de la source principale vers votre projet. Exécutez ce script lorsque vous mettez à jour la bibliothèque.

3: Utilisez une configuration de contrôle de version. Les sous-modules Git peuvent fonctionner (http://book.git-scm.com/5_submodules.html)

4: Les fichiers Phar sont quelque chose que j'aimerais essayer. Le seul inconvénient est qu'ils ne fonctionnent pas avec les versions PHP inférieures à 5.3.

MISE À JOUR: 04/12/2011 - Je recommande d'utiliser l'approche # 3. Maintenant que je l'utilise depuis un moment, il semble que ce soit clairement la meilleure pratique.

+1

bien, désolé je n'ai jamais mis à jour ce fil ou fermé, j'ai réellement utilisé svn: propriété externe pour obtenir ceci. alors maintenant je viens de consulter le projet de bibliothèque dans les autres projets, et si je change dans un, il change dans chacun d'eux –

+0

J'ai utilisé l'approche # 3 ci-dessus avec des sous-modules Git. (Je crois que svn: external est l'équivalent en SVN). Je suis convaincu que c'est la voie à suivre. – JohnWright

1

Ne serait-il plus facile de vérifier le code partagé dans un référentiel de contrôle de version, et vérifier dans les projets? Par exemple, SVN supporte le svn:externals property

+0

bien, désolé je n'ai jamais mis à jour ce fil, j'ai effectivement utilisé svn: propriété externe pour obtenir ce fait –

1

Bien que PHP supporte maintenant les fichiers phar, la bonne façon de résoudre le problème consiste à utiliser efficacement les fichiers include (et les chemins). Le chemin d'inclusion est toujours recherché dans le même ordre pour les fichiers - donc une bonne pratique consiste à avoir 2 hiérarchies définies, une pour la portée du code (par exemple, tout, application, module) et une pour l'environnement où il est en cours d'exécution (tenue des choses telles que les URL liées, les connexions batabase etc par exemple, de tout, l'environnement (développement/test/live), nœud de cluster)

C.