Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. Yii
Code

Construyendo su Startup: Aproximaciones a las Principales Características

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Building Your Startup With PHP.
Building Your Startup: Securing an API
Using Faker to Generate Filler Data for Automated Testing

Spanish (Español) translation by Jean Perez (you can also view the original English article)

Final product image
What You'll Be Creating

Este tutorial es parte de la serie de Construcción su Startup en marcha con PHP en Envato Tuts +. En esta serie, estoy guiando a través del lanzamiento de una startup de concepto a la realidad utilizando mi aplicación de Meeting Planner como un ejemplo de la vida real. Cada paso en el camino, te libero el código de Meeting Planner como ejemplos de código abierto de que se puede aprender. Voy también a las cuestiones de negocios relacionados con la puesta en marcha que puedan surgir.

Cómo Abordar las Características Principales de Actualizaciones

Estos días estoy más a menudo trabajando para añadir pequeñas mejoras incrementales al Meeting Planner. Las bases funcionan bastante bien, y estoy tratando de mejorar poco a poco la aplicación basada en mi visión y opiniones de la gente. A veces, mi visión es para un cambio más grande, y que puede ser más difícil ahora que el código ha crecido tanto.

En el tutorial de hoy, voy a hablar de maneras de pensar en hacer cambios más grandes a una base de código existente. Específicamente, te guiará a través de los efectos de la adición de la capacidad de los participantes para la colaborativamente generar y decidir sobre las actividades, es decir, lo que debemos hacer cuando nos encontramos hacia arriba.

Si no lo has hecho todavía, tratar de programar una reunión, y ahora usted también puede programar una actividad. Le ayudará a entender a medida que avanza en el tutorial.

Antes de empezar, recuerde compartir comentarios y sugerencias más abajo. Supervisarlos, y también puede contactarme en Twitter @lookahead_io. Me interesa especialmente si quieres sugerir nuevas funciones o temas para futuros tutoriales.

Como recordatorio, todo el código para el Meeting Planner está escrito en el marco de Yii2 para PHP. Si desea más información sobre Yii2, revisa nuestra serie paralelo Programación con Yii2.

La Función de Planificación de la Actividad

Building Startups - Approaching Major Features - Planning an Activity page

Básicamente, Meeting Planner y Simple planificador están diseñados para hacer programación tan fácil como puede ser. Puede propone un par de veces y lugares y compartirla con un pueblo más para ellos a opinar sobre las opciones. Luego, decidan y Meeting Planner mantiene pista con entradas de calendario, recordatorios y maneras simples para hacer los ajustes después del hecho.

Como ejemplo, aquí hay un video de la programación para grupos:

Quería ampliar el apoyo programación por tiempos y lugares el concepto de las actividades. Por ejemplo, al planear una quedada con tus amigos, esencialmente estás preguntando, ir al cine, ir de baile o snowboard.

En otras palabras, quería crear un panel como la de veces que se muestra a continuación pero para las actividades:

Building Startups - Approaching Major Features - The Older Plan a Time Panel

La arquitectura MVC y mi esquema de nombres de código son muy similares entre tiempos de reunión y lugares, por lo que las actividades de creación parecían bastante simple en la superficie. Sin embargo, la decisión tenía ramificaciones amplia.

Alcance de los Cambios 

Es importante cuando se agrega una característica grande para pensar acerca de donde hay que cambiar el código y también todos los lugares en la aplicación que pueden ser afectados a pensar a través de los impactos.

Impacto de Cara al Cliente

Desde el lado del diseño, pensé en cómo va a afectar el servicio al cliente actividades:

  • Cambiará a organizar una reunión para permitir a un nuevo tipo, un evento impulsado por la actividad. Habrá un panel adicional en la página de planificación.
  • El panel de actividad tendrá que ser diseñado para permitir a la gente para elegir por defecto o a personalizar y añadir sus propios, por ejemplo esquí en lugar de sólo de esquí, de montaña "ir a ver Star Wars Rogue un" en vez de simplemente "ir a ver una película."
  • Invitaciones de correo electrónico necesitará incluir espacio para opciones de actividad de la lista.
  • Calendario de eventos quiere integrar la actividad solicitada con el tema de la reunión.
  • Los organizadores quieran enviar algunas ideas de actividades a un amigo o un grupo sin haber elegido un lugar, por lo que necesito para ello. Actualmente, el sistema no le permite enviar una invitación hasta que haya al menos una vez y lugar sugerido.
  • Si alguien solicita un cambio a una reunión, el apoyo a las solicitudes de cambio tendrá que ser ampliado para apoyar las actividades.

Estos eran la mayoría de los conceptos básicos. Ahora, pensemos en el código.

Impactos del Código

Ramificación de Código Fuente

Con frecuencia, resulta útil a Ramifica su Propio Código en GitHub para que pueda trabajar en la nueva función aparte de la base de código de nivel de producción estable. Esto le permite volver y corregir errores o hacer pequeños cambios incrementales mientras trabajaba en un gran cambio. La gente de GitHub es más estricta de manera que tenga sentido definido para los equipos:

Hay sólo una regla: cualquier cosa en la rama master siempre es desplegable.

Desde allí es sólo uno de mí y soy bastante bueno en la gestión de mi código, estoy un poco más laissez faire sobre esta regla.

Pero el código de ramificación también es útil para examinar los cambios en el código cuando esté listo para la prueba. Compartiré una demostración de esto al final del tutorial de hoy.

Replicación de Código Común

Habrá dos tipos de reuniones ahora: ésos basados alrededor de sólo las fechas y veces y alrededor de las actividades, fechas y horarios. Así que el modelo de reunión debe adaptarse.

Para tiempos y lugares, específicamente son los modelos MeetingTime y desarrollo, así como modelos para las preferencias de éstos con los participantes, llamados MeetingTimeChoices y MeetingPlaceChoices. Puedes leer más sobre esto en Costruyendo Su Startup con PHP: Programación Disponibilidad y Opciones.

Para agregar actividades esencialmente requeriría de duplicación, creación de MeetingActivity y MeetingActivityChoices y sus acompañan modelos, vistas, controladores, JavaScript y Ajax y base de datos de migraciones.

Cuenta y Configuración de Reuniones

Además, los organizadores tienen la preferencia de varios ajustes de cuenta y por si los participantes pueden sugerir y elegir la actividad final de encuentro ajustes.

Plantillas Email

Agregar actividades también afectadas plantillas de correo electrónico para invitaciones y reuniones completadas.

Historial del Acontecimiento y Registros

Desde que se registra cada cambio a una reunión, cada opción de actividad y cambio también necesitan conectarse.

Otras Areas Misceláneas

El archivo de calendario .ics debe modificarse para incluir la actividad. En última instancia, la API tendría que ser actualizado e incluso las estadísticas de la consola administrativa.

Mientras que en el frente parecía simple, añadiendo actividades necesaria realmente mucho nuevo código y pruebas.

Destaca la Codificación

Aunque hay demasiado código nuevo para cubrir en un tutorial, vamos a ir a través de aspectos destacados de algunos de los conceptos anteriores.

Migración de Bases de Datos

En primer lugar, he creado las migraciones de base de datos. Antes hablé de replicar código con aspectos de la característica en común. Este es un ejemplo de la migración de MeetingActivity vs la mayor migración de tabla MeetingTime:

Aquí es la migración de MeetingTime, y se pueden ver las similitudes:

En definitiva, que necesitaba cinco para las tablas nuevas siguientes:

  1. m161202_020757_create_meeting_activity_table
  2. m161202_021355_create_meeting_activity_choice_table, para almacenar las preferencias de la disponibilidad de cada participante de la reunión para cada actividad
  3. m161202_024352_extend_meeting_setting_table_for_activities para la configuración de una reunión especial para agregar o elegir las actividades
  4. m161202_024403_extend_user_setting_table_for_activities para la configuración predeterminada de la cuenta
  5. m161203_010030_extend_meeting_table_for_activities y para agregar is_activity para denotar la propiedad de una reunión con o sin una actividad

Construir el MVC Framework Para Actividades

Building Startups - Approaching Major Features - The Gii Scaffolding Menu

Usé capacidad de andamios de Yii Gii para crear el modelo, controlador y vista inicial. He cubierto las migraciones y Gii anteriormente en la serie.

Cambios de JavaScript y jQuery

También hubo adiciones sustanciales a JavaScript y jQuery utilizada, sobre todo ahora que interactuar con los elementos de planificación para una reunión se realiza con Ajax, sin refrescar la página.

Aquí, por ejemplo, es el bucle del código para ver si se elige una hora de encuentro:

Mediante el uso de un esquema de nombres comun, escribir el código para actividades fue replicable de esto:

Otras funciones, como las que muestran las respuestas para el usuario, simplemente necesitan ampliarse para actividades:

Incluso con una característica tan reflexiva en cualidades como las funcionalidades existentes, las adiciones de nuevo código eran extensas. Aquí es el JavaScript, por ejemplo. Este código abarca mucho más de la funcionalidad de ajax interactivo de horas en la página de planificación:

Adiciones del Framework

Ciertamente, hubo modelos, controladores y vistas que tuvieron que ser añadido. Aquí está un extracto del modelo MeetingActivity.php que enumera una serie de actividades por defecto el usuario puede rápidamente typeahead a utilizar:

Building Startups - Approaching Major Features - Activity Typeahead List

Y aquí está un extracto de la /frontend/views/activity/_form.php con el widget de TypeaheadBasic con el defaultActivityList() anterior:

Pero hay numerosos cambios en el código fuera de las necesidades comunes de marco. Aquí es canSend() del modelo Meeting.php, la función que determina si el usuario puede enviar una invitación para una reunión. Determina si una reunión reunieron los requisitos mínimos para el envío, como por ejemplo tener un tiempo de actividad o tiempo y lugar.

A continuación, puedes ver cómo una nueva sección tuvo que ser añadido para las actividades:

Plantillas Email

Actualización de los diseños de correo electrónico requiere un poquito de pensar el diseño y la mejores manera las actividades presentes en las convocatorias de reunión y confirmaciones. Aquí está una muestra de la invitación de correo electrónico actualizada:

Building Startups - Approaching Major Features - Email Invitation Theme

Esencialmente, si un encuentro tiene una actividad, entonces la invitación incluye una amplia fila anterior épocas y lugares, otra vez replicar mucho el código existente para tiempos y lugares:

Reflexionando Sobre los Cambios

En última instancia, la función de la actividad requiere una enorme sucursal del código. Aquí está la solicitud de extracción:

Era tan grande que decidí hacer un divertido video de desplazamiento a través de todos los cambios en GitHub con música apropiada de fondo... disfrutelo:

En general, la función de las actividades de construcción fue difícil y útil para mí pensar en la arquitectura del sitio y cómo avanzar rápido, estable en el código de una empresa unipersonal. Utilizar la replicación, pero reflexionar primero sobre el alcance general.

La característica de actividad terminó tocando más áreas de lo que había previsto.

Planificación por delante te ayudará evitar atascarse en trampas codificación sin fin de nuevas características. Si usted se encuentra en algunos trinchera profunda, una pesadilla de codificación que solo no final, comprobar sus cambios a su rama de característica, interruptor para dominar y trabajar en otra cosa. Ayuda a despejar la cabeza.

Definitivamente tomé un enfoque ligeramente diferente para guiarte en este episodio, y espero que fue útil.

¿Tener tus propios pensamientos? ¿Ideas? ¿Retroalimentación? Usted puede siempre llegar a me en Twitter @lookahead_io directamente. Reloj para próximos tutoriales aquí en la serie de Construyendo Su Startup con PHP. Hay un montón de cosas sorprendente por delante.

Otra vez, si todavía no has probado un Meeting Planner o Simple Planner, seguir adelante y programe su primera reunión:

Enlaces Relacionados

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.