web-dev-qa-db-fra.com

CodeIgniter: Prise de décision pour la création d'une bibliothèque et d'une aide dans CodeIgniter

Après avoir développé pendant un certain temps dans CodeIgniter, je trouve difficile de décider quand créer une bibliothèque personnalisée et quand créer un assistant personnalisé.

Je comprends que les deux permettent d’avoir une logique métier et qu’ils soient réutilisables dans tout le framework (appels depuis différents contrôleurs, etc.).

Mais je suis fermement convaincu que le fait que les développeurs principaux de CI séparent les bibliothèques des aides, c’est pour cela qu’il ya une raison derrière cela et j’imagine que c’est la raison qui m’attend de découvrir et d’éclairer ma connaissance.

Les développeurs de CI là-bas, les conseils de pls.

je pense qu'il est préférable d'inclure un exemple.

Je pourrais avoir un

class notification_lib {
   function set_message() { /*...*/}

   function get_message() {/*...*/}

   function update_message() {/*...*/}
}

Alternativement, je pourrais aussi inclure toutes les fonctions dans un assistant.

Dans un fichier notification_helper.php, je vais inclure set_message(), get_message(), update_message() ..

Où que ce soit, il peut toujours être réutilisé. Cela m'a donc amené à réfléchir à la question de savoir quand exactement créer une bibliothèque et un assistant, en particulier dans CI.

Dans une application php normale (sans framework), le choix est clair car il n'y a pas d'aide, il vous suffira de créer une bibliothèque pour pouvoir réutiliser les codes. Mais ici, dans CI, je voudrais comprendre la séparation des développeurs et des assistants principaux

43
user179432

Il y a une question que je me pose au moment de prendre cette décision et qui, à mon avis, vous aidera également. La question est: est-ce que je fournis une fonctionnalité à mon framework ou est-ce que je suis en train de consolider?

Si vous ajoutez une fonctionnalité à votre infrastructure, vous souhaiterez créer une bibliothèque pour cela. La validation de formulaire, par exemple, est une fonctionnalité que vous ajoutez à une structure. Même si vous pouvez effectuer une validation de formulaire sans cette bibliothèque, vous créez un système standard de validation qui est une fonctionnalité.

Cependant, il existe également un assistant de formulaire qui vous aide à créer le code HTML des formulaires. La grande différence par rapport à la bibliothèque de validation de formulaire est que l'assistant de formulaire ne crée pas de nouvelle fonctionnalité, mais simplement un ensemble de fonctions connexes qui vous aident à écrire correctement le code HTML des formulaires.

Espérons que cette différenciation vous aidera comme elle l’a fait pour moi. 

28
Seaux

Eh bien, le choix revient à un ensemble de fonctions ou de classes. Le choix est presque identique à celui d’une classe d’instance par rapport à une classe statique.

Si vous avez simplement un groupe de fonctions, il vous suffit de créer un groupe de fonctions. Si ces groupes de fonctions partagent beaucoup de données, vous devez créer une classe avec une instance pour stocker ces données entre les appels de méthode (fonction de classe).

Avez-vous de nombreuses propriétés publiques ou privées à stocker concernant vos messages de notification?

Si vous utilisez une classe, vous pouvez définir plusieurs messages via le système, puis get_messages () peut renvoyer un tableau privé de messages. Cela le rendrait parfait pour être une bibliothèque.

57
Phil Sturgeon

First de tous, vous devez être sûr de bien comprendre la différence entre CI libaray et la classe helper. La classe d'assistance correspond à tout ce que aide à tout élément déjà créé, tel que array, string, uri, etc. ils sont là et PHP leur fournit déjà des fonctions, mais vous créez toujours un assistant pour leur ajouter plus de fonctionnalités. D'autre part, libaray peut être quelque chose comme quelque chose que vous créez pour la première fois, toute solution qui pourrait ne pas être nécessairement déjà existante.

Une fois que vous comprenez parfaitement cette différence, prendre une décision ne doit pas être aussi difficile.

J'espère que cela pourra aider.

Merci

7
Sarfraz

Helper contient un groupe de fonctions pour vous aider à effectuer une tâche particulière.

Aides disponibles dans CI

Les bibliothèques contiennent généralement des fonctionnalités non spécifiques à CI. Comme une bibliothèque d'images. Quelque chose qui est portable entre les applications.

Bibliothèques disponibles dans CI

Source lien

3
mrsrinivas

Si quelqu'un me demande comment vous suivez le moment venu, créez des aides ou des bibliothèques.

Je pense que ces différences:

  • Classe: En bref, une classe est un plan détaillé pour un objet. Et un objet encapsule l’état et la responsabilité conceptuellement liés de quelque chose dans votre application et offre généralement une interface de programmation avec laquelle interagir avec celles-ci. Cela favorise la réutilisation du code et améliore la maintenabilité.
  • Fonctions: une fonction est un morceau de code qui prend une entrée supplémentaire sous la forme de paramètre, effectue un traitement et renvoie une valeur. Vous avez déjà vu de nombreuses fonctions comme fopen () et fread (), etc. Ce sont des fonctions intégrées, mais PHP vous donne la possibilité de créer vos propres fonctions.

Alors, allez dans Classe i.e. bibliothèques si un point correspond

  1. variable globale besoin d'utiliser dans deux ou plusieurs fonctions ou même une, je déteste utiliser mot clé global
  2. initialisation par défaut selon chaque appel ou charge
  3. certaines tâches sont privées à entité pas ouvert publiquement, pensez à des fonctions jamais modificateurs publics pourquoi?
  4. dépendances de fonction à fonction, c'est-à-dire que les tâches sont séparées mais que deux tâches ou plus en ont besoin. Pensez à validate_email check uniquement pour les scripts d’envoi de courrier électronique pour, cc, cci, etc. Tous ces besoins doivent être validate_email.
  5. Enfin, toutes les tâches connexes, c’est-à-dire les fonctions, doivent être placées dans un seul objet ou un seul fichier, c’est plus facile pour la référence et le souvenir.

Pour les assistants: tout point qui ne correspond pas aux bibliothèques

2
Kool-Mind

Personnellement, j'utilise des bibliothèques pour de grandes choses, disons une bibliothèque FTP que j'ai construite et qui est beaucoup plus rapide que la bibliothèque fournie par CodeIgniters. C'est une classe avec beaucoup de méthodes qui partagent des données les unes avec les autres.

J'utilise des aides pour des tâches plus petites qui ne sont pas liées à beaucoup d'autres fonctionnalités. De petites fonctions telles que la décoration de chaînes pourraient être un exemple. Ou copier un répertoire de manière récursive vers un autre emplacement.

0
Christoffer