Mi recomendación... Inicia desde cero con Yii 2!
A continuación las diferencias entre ambas versiones para que las tomes muy cuenta si definitivamente quieres migrar.
Instalación
Yii 2 es muy cercano de Composer, ya que es el administrador de paquetes de facto para PHP. La instalación del core como de las extensiones se las realiza a través de Composer.Requerimientos de PHP
Yii 2 necesita de PHP 5.4, mientras que Yii 1 requiere de la 5.2. Las diferencias entre las versiones de PHP incluyen:- Namespaces o Espacios de nombres: es un conjunto de nombres en el cual todos los nombres son únicos.
- Funciones anónimas: también conocidas como clausuras (closures), permiten la creación de funciones que no tienen un nombre especificado. Son más útiles como valor de los parámetros de llamadas de retorno.
- Sintaxis de arreglos corta: se utiliza [...elementos...] en lugar de array(...elementos...)
- Tags echo corto: en las vistas se utiliza <?=
- Interfaces y clases SPL: La Biblioteca Estándar de PHP (SPL por sus siglas en inglés) es una colección de interfaces y clases que están pensadas para solucionar problemas comunes.
- Enlace estático en tiempo de ejecución: permite hacer referencias a la clase en uso dentro de un contexto de herencia estática.
- Fecha y hora
- Traits: o rasgos, son un mecanismo de reutilización de código en lenguajes de herencia simple, como PHP.
- intl: Yii 2 utiliza ésta extensión de PHP para soporte de funciones de internacionalización
Espacios de nombres
En Yii 1 se utiliza el prefijo "C" para los nombres de las clases. En Yii se utiliza la estructuras de directorios. Por ejemplo, yii\web\Request indica que la clase está en web/Request.php bajo el directorio de Yii.Es posible utilizar cualquier clase sin ser explícitos, gracias a la clase loader de Yii.
Componentes y Objetos
Yii 2 divide la clase CComponent en dos clases: yii\base\Object y yii\base\Component. La clase Object es una clase base más ligera que permite definir propiedades haciendo uso de getters (para obtener datos) y setters (para inicializar). La clase Component extiende Object y soporta events (eventos) y behaviors (comportamientos).Configuración de Objetos
La clase Object introduce una manera uniforme de configurar objetos. Cualquier clase descendiente debería declarar su constructor de la siguiente manera:class MyClass extends \yii\base\Object{
public function __construct($param1, $param2, $config = [])
{
// ... initialization before configuration is applied
parent::__construct($config);
}
public function init()
{
parent::init();
// ... initialization after configuration is applied
}
}
Siguiendo ésta convención, para crear y configurar nuevos objetos la manera adecuada sería:
$object = Yii::createObject([
'class' => 'MyClass',
'property1' => 'abc',
'property2' => 'cde',
], [$param1, $param2]);
Eventos
En Yii 1, los eventos se definían a través de un método con el prefijo on (por ejemplo, onBeforeSave). En Yii 2 se puede utilizar cualquier nombre de evento. Para disparar un evento se llama al método trigger():$event = new \yii\base\Event;$component->trigger($eventName, $event);
Para adjuntar un manejador a un evento, se utiliza el método on().$component->on($eventName, $handler);// To detach the handler, use:
// $component->off($eventName, $handler);
Alias de Rutas
Yii 2 extiende el uso de los alias, tanto a los directorios/archivos como a las URLs.Vistas
El cambio más significativo en Yii 2 es acerca de la variable $this. En una vista, ya no hace referencia al controlador o widget, sino que ahora se refiere a un objeto view. El objeto view es del tipo yii\web\View que representa la parte del diseño MVC. Para acceder al controlador o widget desde la vista, se debe utilizar $this->contextPara renderizar una vista parcial dentro de otra vista se debe utilizar $this->render(), y no $this->renderPartial(). La llamada a render ahora tiene que ser explícita a través de echo. Por ejemplo:
echo $this->render('_item', ['item' => $item]);
Modelos
Yii 2 utiliza como la clase modelo base a yii\base\Model. La clase CFormModel ha sido eliminada completamente, por lo que, en Yii 2 se debe utilizar yii\base\Model para crear un modelo de formulario.Yii 2 introduce un nuevo método llamado scenarios(), e indica qué atributos deben ser validados bajo cuáles escenarios. Por ejemplo:
public function scenarios()
{
return [
'backend' => ['email', 'role'],
'frontend' => ['email', '!role'],
];
}
Bajo este contexto, los campos email y role se validarán en el escenario backend; mientras que en el escenario frontend se valida email pero role no.
El método rules() aún es usado para declarar las reglas de validación.
Controladores
Yii 2 utiliza como la clase controlador base a yii\web\Controller. El impacto más sobresaliente de éste cambio es que el controlador debe retornar el contenido que se quiere renderizar. Por ejemplo:public function actionView($id)
{
$model = \app\models\Post::findOne($id);
if ($model) {
return $this->render('view', ['model' => $model]);
} else {
throw new \yii\web\NotFoundHttpException;
}
}
Widgets
Yii 2 utiliza como la clase widget base a yii\base\Widget. Yii 2 utiliza una nueva sintaxis para usar widgets. Utiliza los métodos estáticos begin(), end(), y widget(). Por ejemplo:use yii\widgets\Menu;
use yii\widgets\ActiveForm;
// Note that you have to "echo" the result to display it
echo Menu::widget(['items' => $items]);
// Passing an array to initialize the object properties
$form = ActiveForm::begin([
'options' => ['class' => 'form-horizontal'],
'fieldConfig' => ['inputOptions' => ['class' => 'input-xlarge']],
]);
... campos del formulario ...
ActiveForm::end();
Temas
Los temas trabajan de manera completamente en Yii 2. Están basados en un mecanismo de asignación de ruta que asigna una ruta a una vista del tema. Los temas pueden ser aplicados a cualquier vista, incluso si está renderizada fuera del contexto original de un controlador o widget.Además, ya no existe el componente CThemeManager. En su lugar, theme es una propiedad configurable de la vista.
No hay comentarios.:
Publicar un comentario
Nota: sólo los miembros de este blog pueden publicar comentarios.