2010-03-02 5 views
44

Après avoir développé dans CodeIgniter pendant un certain temps, j'ai du mal à prendre des décisions quand créer une bibliothèque personnalisée et quand créer une aide personnalisée.CodeIgniter: Prise de décision pour la création de la bibliothèque & helper dans CodeIgniter

Je comprends que les deux permettent d'avoir une logique métier dans et sont réutilisables dans le cadre (appel de différents etc. contrôleur)

Mais je crois fermement que le fait que les développeurs de base de CI se séparent les bibliothèques d'aides, il doit y avoir une raison derrière cela et je suppose, c'est la raison qui m'attend pour découvrir et m'éveiller.

Développeurs CI là-bas, pls conseiller.

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

je pourrais avoir une

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

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

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

, je pourrais également inclure également toutes les fonctions dans un assistant.

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

Où en soit, il peut encore être réutilisé. Cela m'a amené à réfléchir au moment de la prise de décision concernant la création d'une bibliothèque et d'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, vous aurez juste besoin de créer une bibliothèque afin de réutiliser les codes. Mais ici, dans CI, je voudrais comprendre les principaux développeurs seperation des bibliothèques et des assistants

+4

Library = une classe, aide = un fichier avec des méthodes qu'il contient. Si je peux me rappeler correctement ... – Natrium

Répondre

25

Il y a une question que je me pose la question au moment de décider ce que je pense vous aider aussi. La question est: est-ce que je fournis une fonctionnalité à mon framework ou suis-je en train de consolider?

Si vous disposez d'une fonctionnalité que vous ajoutez à votre infrastructure, vous devez créer une bibliothèque pour cela. La validation de formulaire, par exemple, est une fonctionnalité que vous ajoutez à un framework. Même si vous pouvez effectuer une validation de formulaire sans cette bibliothèque, vous créez un système standard pour la 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 avec la bibliothèque de validation de formulaire est que l'aide de formulaire ne crée pas de nouvelle fonctionnalité, c'est juste un ensemble de fonctions connexes qui vous aident à écrire correctement le HTML des formulaires.

Espérons que cette différenciation vous aidera comme elle m'a.

+1

Phil, quand il s'agit de ça les deux mentalités ne sont pas si différentes. Lorsque vous consolidez des fonctions, vous n'avez pas besoin de transmettre des informations parmi les fonctions, mais il y a des moments où vous voudriez transmettre des informations parmi les fonctions, mais pas créer une bibliothèque pour cela. donne une sorte de liberté que les bibliothèques sont généralement conçues pour se protéger: dans les bibliothèques, il est recommandé (ou nécessaire) d'utiliser ses fonctions, les aides sont là et peuvent être appelées à tout moment. – Seaux

0

Personnellement, j'utilise des bibliothèques pour de grandes choses, disons une bibliothèque FTP que j'ai construit qui est beaucoup plus rapide que la bibliothèque livrée par CodeIgniters. C'est une classe avec beaucoup de méthodes qui partagent des données les uns avec les autres. J'utilise des aides pour les petites tâches qui ne sont pas liées à beaucoup d'autres fonctionnalités. De petites fonctions comme la décoration de cordes peuvent être un exemple. Ou copier un répertoire de manière récursive vers un autre emplacement.

+3

Je pense que le concept clé ici est «une classe avec beaucoup de méthodes qui partagent des données les uns avec les autres» – user179432

+1

Je pense que «décorateur» est un concept clé. Par exemple si je veux préfixer et ajouter une balise div à une chaîne qui est certainement une fonction d'aide. La fonction ne se soucie pas d'autres données ou enregistre des données pour faire le travail. En outre, il peut être partagé et utilisé n'importe où. – Clutch

57

Eh bien, le choix se résume à l'ensemble des fonctions ou de la classe. Le choix est presque le même que celui d'une classe d'instance vers une classe statique.

Si vous n'avez qu'un simple 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 relatives à 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 de messages privé. Cela le rendrait parfait pour être une bibliothèque.

+0

oui, cela fait plus de sens ... – user179432

+1

vous devez donner un pot-de-vin. : p +1 –

+3

J'ai été trompé! Oh le choc, l'horreur, l'indécence! Est-ce que quelqu'un ne pense pas aux enfants! : '( –

7

Première de tous, vous devez être sûr que vous comprenez la différence entre CI et libaray classe d'aide. Classe Helper est tout ce que aide toute chose pré-faite comme array, string, uri, etc; ils sont là et PHP fournit déjà des fonctions pour eux mais vous créez toujours un assistant pour leur ajouter plus de fonctionnalités.D'un autre côté, libaray peut être quelque chose comme quelque chose que vous créez pour la première fois, n'importe quelle solution qui ne soit pas nécessairement déjà là. Une fois que vous aurez pleinement compris cette différence, la prise de décision ne doit pas être si difficile.

Espérons que ça aide.

Merci

3

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

Available helpers in CI

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

Available libraries in CI

Source link

2

Si quelqu'un me demande ce que la façon dont vous suivez quand vient le temps de créer des bibliothèques ou Helpers.

Je pense que ces différences:

  • Classe: En un mot, une classe est un modèle pour un objet. Et un objet encapsule conceptuellement l'état et la responsabilité de quelque chose dans votre application et offre généralement une interface de programmation avec laquelle interagir avec ceux-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 de plus sous la forme d'un paramètre et effectue un traitement et renvoie une valeur. Vous avez déjà vu beaucoup de fonctions comme fopen() et fread() etc. Ce sont des fonctions intégrées mais PHP vous donne également la possibilité de créer vos propres fonctions.

Alors allez classe bibliothèques à savoir si un point quelconque correspond

  1. variable globale besoin d'utiliser deux ou plusieurs fonctions ou même un, je déteste utiliser mot-clé global
  2. initialisation par défaut comme pour chaque appel ou charge
  3. certaines tâches sont privées à l'entité non ouverte au public, pensez à des fonctions qui n'ont jamais de modificateurs publics, pourquoi?
  4. Fonction de dépendance des fonctions, c'est-à-dire que les tâches sont séparées mais que deux ou plusieurs tâches en ont besoin. Pensez à validate_email pour le script d'envoi de courrier électronique pour, cc, bcc, etc. tous ces besoins valident validate_email. Et enfin, toutes les tâches connexes, c'est-à-dire les fonctions, doivent être placées dans un seul objet ou fichier, c'est plus facile à consulter et à mémoriser.

Pour Helpers: tout point qui correspond pas avec les bibliothèques

Questions connexes