2010-03-02 14 views
44

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 una ayuda personalizada.CodeIgniter: Toma de decisiones para la creación de biblioteca y ayuda en CodeIgniter

entiendo que ambos permiten tener la lógica de negocio en él y son reusables en el marco (llamando desde el controlador diferente, etc.)

Pero creo firmemente que el hecho de que los desarrolladores principales de CI se van a separar las bibliotecas de ayudantes, tiene que haber una razón detrás de esto y creo que esta es la razón por la que espero que descubra y me ilumine.

desarrolladores de CI por ahí, por favor asesorar.

Creo que es mejor incluir un ejemplo.

que podría tener una

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() ..

Cuando alguna manera, todavía se puede volver a utilizar. Así que esto me hizo pensar en el punto de toma de decisiones sobre cuándo creamos exactamente una biblioteca y un ayudante especialmente en CI.

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

+4

Biblioteca = una clase, ayudante = un archivo con algunos métodos en ella. Si puedo recordarlo correctamente ... – Natrium

Respuesta

25

Hay una pregunta que me hago la hora de decidir esto que creo que va a ayudar también. La pregunta es: ¿estoy brindando una función en mi marco o estoy consolidando?

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

Sin embargo, también es una forma de ayuda que le ayuda a crear el código HTML de formas. La gran diferencia con respecto a la biblioteca de validación de formularios es que el asistente de formularios no está creando una nueva característica, es solo un conjunto de funciones relacionadas que lo ayudan a escribir correctamente el HTML de los formularios.

Esperamos que esta diferenciación le ayudará a como lo ha hecho conmigo.

+1

Phil, cuando se trata de que las dos formas de pensar no son tan diferentes. Por lo general, sucede que cuando consolida funciones, no necesita pasar información entre las funciones. Pero hay momentos en los que desea pasar información entre las funciones, pero no crear una biblioteca para ello. Y mi modo de pensar propuesto maneja ese caso. brinde un tipo de libertad que las bibliotecas usualmente están construidas para protegerse. En las bibliotecas, se recomienda (/ requiere) usar sus funciones, los ayudantes están ahí y pueden ser llamados siempre. Eso es algo que tomo en consideración al diseñar. – Seaux

0

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

Uso ayudantes para tareas más pequeñas que no están relacionadas con muchas otras funcionalidades. Las pequeñas funciones como decorar cadenas pueden ser un ejemplo. O copiar un directorio recursivamente en otra ubicación.

+3

creo que el concepto clave aquí es 'una clase con muchos métodos que comparten datos entre ellos' – user179432

+1

Creo que "decorador" es un concepto clave. Por ejemplo, si quiero anteponer y anexar una etiqueta div a una cadena que definitivamente es una función auxiliar. La función no se preocupa por otros datos o guarda datos para hacer el trabajo. También se puede compartir y usar en cualquier lugar. – Clutch

57

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

Si solo tiene un grupo simple de funciones, entonces solo necesita hacer un grupo de funciones. Si este grupo de funciones comparte una gran cantidad de datos, entonces necesita crear 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 sus mensajes de notificación?

Si utiliza una clase, puede establecer varios mensajes a través del sistema y luego get_messages() podría devolver una matriz privada de mensajes. Eso lo haría perfecto para ser una biblioteca.

+0

sí, esto tiene más sentido ... – user179432

+1

necesita dar un soborno. : p +1 –

+3

¡Me han engañado! ¡Oh, el shock, el horror, la indecencia! ¡Nadie pensará en los niños! : '( –

7

Primero de todos, debe asegurarse de comprender la diferencia entre CI libaray y la clase de ayuda. Clase de ayuda es cualquier cosa que ayuda cualquier cosa prefabricada como array, string, uri, etc; están allí y PHP ya les proporciona funciones, pero aún creas un ayudante para agregarles más funcionalidades.Por otro lado, libaray puede ser algo parecido a algo que estás creando por primera vez, cualquier solución que podría no estar necesariamente disponible.

Una vez que entienda esta diferencia totalmente, tomando la decisión no debe ser tan difícil.

Espero que ayude.

Gracias

3

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

Available helpers in CI

Bibliotecas por lo general contienen una funcionalidad específica no-CI. Como una biblioteca de imágenes. Algo que es portátil entre aplicaciones.

Available libraries in CI

Fuente link

2

Si alguien me pregunta cuál es el camino que sigue cuando el tiempo viene para crear Ayudantes o bibliotecas.

creo que estas diferencias:

  • Clase: En pocas palabras, una clase es un modelo para un objeto. Y un objeto encapsula el estado y la responsabilidad relacionados conceptualmente de algo en su aplicación y generalmente ofrece una interfaz de programación con la que interactuar con ellos. Esto fomenta la reutilización del código y mejora el mantenimiento.
  • Funciones: Una función es una pieza de código que toma una entrada más en forma de parámetro y procesa y devuelve un valor. Ya has visto muchas funciones como fopen() y fread(), etc. Son funciones integradas, pero PHP te ofrece la opción de crear tus propias funciones también.

así que a por Clase bibliotecas es decir, si los hay un punto que coincide

  1. variable global que tenga que utilizar en dos o más funciones o incluso uno, me gusta usar la palabra clave Global
  2. inicialización por defecto como por cada llamada de tiempo o carga
  3. algunas tareas son privadas para entidades que no se abren públicamente, piense que las funciones nunca tienen modificadores públicos ¿por qué?
  4. función para funcionar dependencias, es decir, las tareas están separadas, pero dos o más tareas lo necesitan. Piense en verificar validate_email solo para el script de envío de correo electrónico a, cc, bcc, etc. todas estas necesidades validate_email.
  5. Y, por último, todas las tareas relacionadas, es decir, las funciones se deben colocar en un solo objeto o archivo, es más fácil para referencia y recuerdo.

Para Ayudantes: cualquier punto que no coincide con las bibliotecas