CodeIgniter: Toma de decisiones para la creación de biblioteca y ayudante en CodeIgniter


Después de desarrollar en CodeIgniter por un tiempo, me resulta difícil tomar decisiones sobre cuándo crear una biblioteca personalizada y cuándo crear un ayudante personalizado.

Entiendo que ambos permiten tener lógica de negocios en ti y son reutilizables en todo el marco (llamando desde diferentes controladores, etc.).)

Pero creo firmemente que el hecho de que los desarrolladores del núcleo de CI estén separando las bibliotecas de los ayudantes, tiene que haber una razón detrás de esto y supongo que esta es la razón que espera yo para descubrir y conseguir iluminado.

Los desarrolladores de CI por ahí, los pls aconsejan.

Creo que es mejor incluir un ejemplo.

Podría tener un

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

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

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

Alternativamente, también podría incluir todas las funciones en un ayudante.

En un archivo notification_helper.php, incluiré set_message(), get_message(), update_message()..

Donde de cualquier manera, todavía se puede reutilizar. Así que esto me hizo pensar en el punto de toma de decisiones sobre cuándo exactamente creamos una biblioteca y un ayudante particularmente en CI.

En una aplicación php normal (sin marco), la elección es clara ya que no hay ningún ayudante, solo tendrá que crear una biblioteca para reutilizar los códigos. Pero aquí, en CI, me gustaría entender la separación de los desarrolladores principales de bibliotecas y ayudantes

Author: Josh, 2010-03-02

6 answers

Hay una pregunta que me hago al decidir esto que creo que también te ayudará. La pregunta es: ¿Estoy proporcionando una característica a mi marco o estoy consolidando?

Si tiene una característica que está agregando a su marco, entonces querrá crear una biblioteca para eso. La validación de formularios, por ejemplo, es una característica que está agregando a un marco. A pesar de que puede hacer la validación de formularios sin esta biblioteca, está creando un sistema estándar para la validación que es un función.

Sin embargo, también hay un ayudante de formulario que le ayuda a crear el HTML de los formularios. La gran diferencia de la biblioteca de validación de formularios es que el ayudante de formulario no está creando una nueva característica, es solo un conjunto de funciones relacionadas que le ayudan a escribir el HTML de los formularios correctamente.

Esperemos que esta diferenciación le ayudará como me ha hecho a mí.

 28
Author: Seaux,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-02 17:12:18

Bueno, la elección se reduce al conjunto de funciones o clase. La elección es casi la misma que una clase de instancia contra una clase estática.

Si solo tiene un grupo de funciones simplemente, entonces solo necesita hacer un grupo de funciones. Si este grupo de funciones comparte muchos datos, entonces necesita hacer una clase que tenga una instancia para almacenar estos datos entre las llamadas al método (función de clase).

¿Tiene muchas propiedades públicas o privadas para almacenar relacionadas con su ¿mensajes de notificación?

Si utilizas una clase, podrías establecer varios mensajes a través del sistema y luego get_messages() podría devolver un array privado de mensajes. Eso lo haría perfecto para ser una biblioteca.

 57
Author: Phil Sturgeon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-02 08:36:59

Primero de todos, debes estar seguro de que entiendes la diferencia entre CI libaray y helper class. Clase auxiliar es cualquier cosa que ayuda cualquier cosa pre-hecha como array, string, uri, etc; están allí y PHP ya proporciona funciones para ellos, pero aún así crea un ayudante para agregarles más funcionalidad. Por otro lado, libaray puede ser algo parecido a algo que está creando por primera vez, cualquier solución que no necesariamente esté ya fuera alli.

Una vez que entiendas esta diferencia completamente, tomar una decisión no debe ser tan difícil.

Espero que eso ayude.

Gracias

 7
Author: Sarfraz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-02 08:47:34

Helper contiene un grupo de funciones para ayudarle a realizar una tarea en particular.

Ayudantes disponibles en CI

Las bibliotecas normalmente contienen funcionalidades no específicas de CI. Como una biblioteca de imágenes. Algo que es portátil entre aplicaciones.

Bibliotecas disponibles en CI

Fuente enlace

 3
Author: mrsrinivas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-02 12:04:19

Si alguien me pregunta cuál es la forma en que sigues cuando llega el momento de crear Helpers o Bibliotecas.

Creo que estas diferencias:

  • Clase: En pocas palabras, una clase es un blueprint para un objeto. Y un objeto encapsula el Estado conceptualmente relacionado y la Responsabilidad de algo en su Aplicación y generalmente ofrece una interfaz de programación con la que interactuar con estos. Esto fomenta la reutilización del código y mejora la capacidad de mantenimiento.
  • Funciones: Una función es una pieza de código que toma una entrada más en forma de parámetro y hace algún procesamiento y devuelve un valor. Ya has visto muchas funciones como fopen() y fread (), etc. Son funciones incorporadas pero PHP le da la opción de crear sus propias funciones también.

Así que vaya para Class es decir, bibliotecas si cualquier punto coincide con

  1. variable global necesita usar en dos o más funciones o incluso una, odio usar la palabra clave Global
  2. inicialización predeterminada según cada vez que llame o cargue
  3. algunas tareas son privadas a la entidad no abierta públicamente, piense en funciones nunca tienen modificadores públicos ¿por qué?
  4. dependencias de función a función es decir, las tareas están separadas pero dos o más tareas lo necesitan. Piense en validate_email compruebe solo para el script de envío de correo electrónico para a, cc, bcc, etc. todas estas necesidades validate_email.
  5. Y por último no menos importante todas las tareas relacionadas, es decir, las funciones deben colocarse en un solo objeto o archivo, es más fácil de consultar y recuerdo.

Para Ayudantes: cualquier punto que no coincida con las bibliotecas

 2
Author: Kool-Mind,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-24 12:48:06

Personalmente uso bibliotecas para grandes cosas, digamos una biblioteca FTP que construí que es mucho más rápida que la biblioteca enviada por CodeIgniters. Esta es una clase con muchos métodos que comparten datos entre sí.

Utilizo helpers para tareas más pequeñas que no están relacionadas con muchas otras funcionalidades. Pequeñas funciones como decorar cadenas podrían ser un ejemplo. O copiar un directorio recursivamente a otra ubicación.

 0
Author: Christoffer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-02 08:20:46