Domanda CodeIgniter: processo decisionale per la creazione di librerie e helper in CodeIgniter


Dopo aver sviluppato per un po 'CodeIgniter, trovo difficile prendere decisioni quando creare una libreria personalizzata e quando creare un helper personalizzato.

Capisco che entrambi consentono di avere una logica di business in esso e sono riutilizzabili in tutto il framework (chiamando da diversi controller ecc.)

Ma sono fermamente convinto che il fatto che gli sviluppatori di nucleo della CI stiano separando le librerie dagli helper, ci deve essere una ragione dietro a questo e immagino, questa è la ragione che mi aspetta per scoprire e illuminarmi.

Gli sviluppatori CI sono là fuori, consigliano i pls.

Penso che sia meglio includere un esempio.

Potrei avere un

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

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

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

In alternativa, potrei anche includere tutte le funzioni in un helper.

In un notification_helper.php file, includerò set_message(), get_message(), update_message()..

In entrambi i casi, può ancora essere riutilizzato. Quindi questo mi ha fatto riflettere sul punto decisionale su quando esattamente creiamo una libreria e un helper in particolare in CI.

In un'app php normale (senza framework), la scelta è chiara in quanto non esiste un helper, sarà sufficiente creare una libreria per riutilizzare i codici. Ma qui, in CI, mi piacerebbe capire la separazione dei principali sviluppatori di librerie e aiutanti


44
2018-03-02 06:52


origine


risposte:


C'è una domanda che mi pongo quando deciderò ciò che penso ti aiuterà. La domanda è: sto fornendo una funzionalità al mio framework o sto consolidando?

Se hai una funzione che stai aggiungendo al tuo framework, allora vorresti creare una libreria per questo. La convalida del modulo, ad esempio, è una funzionalità che si sta aggiungendo a un framework. Anche se è possibile eseguire la convalida del modulo senza questa libreria, si sta creando un sistema standard per la convalida che è una funzionalità.

Tuttavia, esiste anche un helper di moduli che ti aiuta a creare l'HTML dei moduli. La grande differenza dalla libreria di convalida dei form è che l'helper del modulo non sta creando una nuova funzionalità, è solo un insieme di funzioni correlate che aiutano a scrivere correttamente l'HTML dei moduli.

Speriamo che questa differenziazione ti aiuterà come ha me.


27
2018-03-02 17:12



Bene, la scelta si riduce a un insieme di funzioni o di classe. La scelta è quasi la stessa di una classe di istanza contro una classe statica.

Se hai solo un semplice gruppo di funzioni, devi solo creare un gruppo di funzioni. Se questo gruppo di funzioni condivide molti dati, è necessario creare una classe che abbia un'istanza per archiviare questi dati tra le chiamate di metodo (funzione di classe).

Avete molte proprietà pubbliche o private da memorizzare relative ai vostri messaggi di notifica?

Se si utilizza una classe, è possibile impostare più messaggi attraverso il sistema, quindi get_messages () potrebbe restituire una serie privata di messaggi. Ciò lo renderebbe perfetto per essere una biblioteca.


57
2018-03-02 08:36



Primo di tutto, dovresti essere sicuro di capire la differenza tra CI libaray e classe helper. La classe di aiuto è tutto ciò aiutaqualsiasi cosa prefabbricata come array, string, uri, eccetera; sono lì e PHP fornisce già funzioni per loro ma si crea ancora un helper per aggiungere più funzionalità a loro. D'altra parte, libaray può essere qualcosa di simile a qualcosa che stai creando per la prima volta, qualsiasi soluzione che potrebbe non essere necessariamente già disponibile.

Una volta che capisci pienamente questa differenza, prendere una decisione non deve essere così difficile.

Spero possa aiutare.

Grazie


7
2018-03-02 08:47



Helper contiene un gruppo di funzioni per aiutarti a svolgere una determinata attività.

Assistenti disponibili in CI

Le librerie di solito contengono funzionalità specifiche non specifiche. Come una libreria di immagini. Qualcosa che è portatile tra le applicazioni.

Librerie disponibili in CI

fonte collegamento


3
2018-05-06 09:32



Se qualcuno mi chiede che cosa segui quando arriva il momento di creare Helpers o Biblioteche.

Penso che queste differenze:

  • Classe: in poche parole, una classe è un progetto per un oggetto. E un oggetto incapsula lo stato concettualmente correlato e la responsabilità di qualcosa nella tua applicazione e di solito offre un'interfaccia di programmazione con cui interagire con questi. Ciò favorisce il riutilizzo del codice e migliora la manutenibilità.
  • Funzioni: Una funzione è un pezzo di codice che prende un altro input sotto forma di parametro e esegue un po 'di elaborazione e restituisce un valore. Hai già visto molte funzioni come fopen () e fread () ecc. Sono funzioni integrate, ma PHP ti offre l'opzione per creare anche le tue funzioni.

Quindi, per favore Classe Ad esempio, le librerie se qualsiasi punto corrisponde

  1. la variabile globale deve essere utilizzata in due o più funzioni o anche in una, io odio usare la parola chiave Global
  2. inizializzazione predefinita secondo ogni chiamata o carico
  3. alcuni compiti sono riservati all'entità non aperta pubblicamente, pensate che le funzioni non hanno mai modificatori pubblici perché?
  4. funzione per funzionare le dipendenze, ad esempio, le attività sono separate ma due o più attività ne hanno bisogno. Pensa al controllo validate_email solo per l'invio di e-mail per script a, cc, bcc, ecc. tutti questi hanno bisogno di validate_email.
  5. Infine, non da ultimo, tutti i compiti correlati, vale a dire le funzioni devono essere collocati in un singolo oggetto o file, è più facile per riferimento e ricordo.

Per gli helper: qualsiasi punto che non corrisponde alle librerie


2
2017-08-24 12:15



Personalmente uso le librerie per grandi cose, diciamo che una libreria FTP che ho creato è molto più veloce di quella della libreria CodeIgniters. Questa è una classe con molti metodi che condividono i dati tra loro.

Uso gli helper per attività più piccole che non sono correlate a molte altre funzionalità. Piccole funzioni come la decorazione di stringhe potrebbero essere un esempio. O copiare una directory in modo ricorsivo in un'altra posizione.


0
2018-03-02 08:20