Convenciones en Yii

Alias de rutas.

  • Permite establecer nombres cortos para ciertas rutas de uso frecuente.
  • Utiliza el punto como separador de ruta: AliasRuta.directorio1.directorio2.objetivo.
  • Es posible definir nuevos alias invocando YiiBase::setPathOfAlias().
  • El proceso contrario, convertir un alias en su correspondiente ruta, puede realizarse invocando YiiBase::getPathOfAlias().
  • Yii define los siguientes alias de manera predefinida.
    • system: directorio del framework.
    • application: directorio base de aplicaciones.
    • webroot: directorio donde se encuentra el script de entrada.
  • Los alias se pueden utilizar en múltiples situaciones.
    Yii::import(‘system.web.CController’);

    Inclusive referenciando grupos de clases.
    Yii::import(‘system.web.*’);

Código.

  • PHP soporta el uso de namespaces a partir de su versión 5.3.0.
  • Las clases nativas de Yii inician siempre con la letra C.
  • Para evitar colisiones de nombres se recomienda que las clases definidas por el usuario inicien por una determinada letra (diferente de la anterior).
  • Los nombres de las variables, funciones y clases deben estar en camel case, es decir, en mayúsculas la primera letra de cada palabra.
    • Los nombres de las variables/atributos y métodos empiezan por minúsculas.
    • Los nombres de las clases empiezan por mayúsculas.
    • Los atributos privados empiezan por underscore (‘_‘).

Rutas.

  • Por defecto se utiliza el siguiente formato.
    http://hostname/index.php?r=ControladorId/AcciónId

  • Es posible reescribir esta ruta a una mas amigable con SEO.
    http://hostname/ControladorId/AcciónId.html

  • Si se obvia la acción se utilizará la acción por defecto: index.
  • Si se obvian el controlador y la acción se utilizarán sus versiones por defecto: main/index.

Archivos.

  • Los nombres de los archivos de clases dependen de la clase pública que contienen y la nomenclatura para esa entidad.
  • Cada archivo debe contener una única clase pública y cero o mas clases privadas.
  • Los archivos de configuración pueden tener un nombre arbitrario.

Directorios.

  • Esta es la estructura general de directorios de Yii.
    • WebRoot/protected: es el directorio base de las aplicaciones.
      • A él le hace referencia el alias application.
      • Debe ser protegido en contra del acceso directo por los usuarios con un .htaccess.
      • Se puede personalizar a través de CWebApplication::basePath.
    • WebRoot/protected/runtime: archivos temporales generados durante la ejecución.
      • Debe tener privilegios de lectura/escritura por parte del servidor web.
      • Se puede personalizar a través de CApplication::runtimePath.
    • WebRoot/protected/extensions: almacena extensiones desarrolladas por terceros.
      • Se puede personalizar a través de CApplication::extensionPath.
    • WebRoot/protected/modules: almacena los módulos de la aplicación.
    • WebRoot/protected/controllers: almacena las clases de los controladores.
      • Se puede personalizar a través de CWebApplication::controllerPath.
    • WebRoot/protected/views: almacena los archivos de las vistas.
      • Se puede personalizar a través de CWebApplication::viewPath.
    • WebRoot/protected/views/ControladorId: almacena las vistas de un controlador específico.
      • Se puede personalizar a través de CController::getViewPath.
    • WebRoot/protected/views/layouts: almacena los archivos del layout de las vistas.
      • Se puede personalizar a través de CWebApplication::layoutPath.
    • WebRoot/protected/views/system: almacena las vistas del sistema.
      • Se puede personalizar a través de CWebApplication::systemViewPath.
    • WebRoot/assets: almacena los assets publicados.
      • Debe tener privilegios de lectura/escritura por parte del servidor web.
      • Se puede personalizar a través de CAssetManager::basePath.
    • WebRoot/themes: almacena los temas de la aplicación.
      • Cada subdirectorio representa un tema diferente.
      • Se puede personalizar a través de CThemeManager::basePath.

Enlaces.

Leave a Reply

Your email address will not be published. Required fields are marked *