Este tutorial detalla todas las opciones de configuración, clases, métodos, funciones y tareas que se han eliminado y/o declarado obsoletas en Symfony 1.3.
Plugins internos
Los siguientes plugins internos se han declarado obsoletos en Symfony 1.3 y se han eliminado en Symfony 1.4:
sfCompat10Plugin: haber declarado como obsoleto este plugin supone que ahora también son obsoletos todos los elementos del framework que dependen de este plugin (el generador de la parte de administración de Symfony 1.0 y el sistema de formularios de Symfony 1.0). También se ha declarado obsoleto el tema del generador de la parte de administración de Symfony 1.0 que se encuentra enlib/plugins/sfPropelPlugin/data/generator/sfPropelAdmin.sfProtoculousPlugin: los helpers de este plugin generan código intrusivo, por lo que ya no se deberían utilizar (existen plugins externos para generar código no intrusivo).
Métodos y funciones
Los siguientes métodos y funciones se han declarado obsoletos en Symfony 1.3 y han sido eliminados en Symfony 1.4:
sfToolkit::getTmpDir(): puedes reemplazarlo por el métodosys_get_temp_dir()sfToolkit::removeArrayValueForPath(),sfToolkit::hasArrayValueForPath()ygetArrayValueForPathByRef()sfValidatorBase::setInvalidMessage(): puedes sustituirlo por el nuevo métodosfValidatorBase::setDefaultMessage()sfValidatorBase::setRequiredMessage(): puedes reemplazarlo por el métodosfValidatorBase::setDefaultMessage()sfTesterResponse::contains(): puedes emplear el nuevo métodomatches(), que además es mucho más potente- Los métodos
isRedirected(),isStatusCode(),responseContains(),isRequestParameter(),isResponseHeader(),isUserCulture(),isRequestFormat()ycheckResponseElement()desfTestFunctionalBase: estos métodos eran obsoletos desde Symfony 1.2 y se han sustituido por las nuevas clases de tipo tester. - Los métodos
isCached()yisUriCached()desfTestFunctional: estos métodos eran obsoletos desde Symfony 1.2 y se han sustituido por las nuevas clases de tipo tester. sfFilesystem::sh(): puedes reemplazarlo por el nuevo métodosfFilesystem::execute(). Debes tener en cuenta que el valor devuelto por este método es un array compuesto por la salida destdouty la salida destderr.sfAction::getDefaultView(),sfAction::handleError()ysfAction::validate(): estos métodos se declararon obsoletos en Symfony 1.1, ya que no eran muy útiles. Para funcionar necesitan que la opcióncompat_10esté establecida aon.sfComponent::debugMessage(): se puede sustituir por el helperlog_message().sfApplicationConfiguration::loadPluginConfig(): utilizainitializePlugins()en su lugar.sfLoader::getHelperDirs()ysfLoader::loadHelpers(): puedes utilizar los métodos del objetosfApplicationConfigurationque tienen el mismo nombre. Como todos los métodos de la clasesfLoaderse han declarado obsoletos, la clasesfLoaderse ha eliminado en Symfony 1.4.sfController::sendEmail(): utiliza el nuevo mailer de Symfony 1.3.sfGeneratorManager::initialize(): es un método que no hace nada.debug_message(): utiliza en su lugar el helperlog_message().sfWebRequest::getMethodName(): se puede sustituir por el métodogetMethod().sfDomCssSelector::getTexts(): utilizamatchAll()->getValues().sfDomCssSelector::getElements(): utilizamatchAll().sfVarLogger::getXDebugStack(): sustitúyelo porsfVarLogger::getDebugBacktrace().sfVarLogger: el valordebug_stackse sustituye por el valordebug_backtrace.sfContext::retrieveObjects(): este método sólo se utiliza enObjectHelper, que ha sido declarado obsoleto.
Los siguientes métodos y funciones se han eliminado en Symfony 1.3:
sfApplicationConfiguration::checkSymfonyVersion(): más adelante se explica con la opción de configuracióncheck_symfony_version
Clases
Las siguientes clases se han declarado obsoletas en Symfony 1.3 y han sido eliminadas en Symfony 1.4:
sfDoctrineLogger: sustitúyela porsfDoctrineConnectionProfiler.sfNoRoutingandsfPathInfoRoutingsfRichTextEditor,sfRichTextEditorFCKysfRichTextEditorTinyMCE: se han reemplazado por el sistema de widgets (ver la sección Helpers más adelante)sfCrudGenerator,sfAdminGenerator,sfPropelCrudGeneratorysfPropelAdminGenerator: estas clases las utilizaba el generado de administraciones de Symfony 1.0.sfPropelUniqueValidator,sfDoctrineUniqueValidator: se utilizaban en el sistema de formularios de Symfony 1.0.sfLoader: su eliminación se explica en la sección anterior.sfConsoleRequest,sfConsoleResponse,sfConsoleControllersfDoctrineDataRetriever,sfPropelDataRetriever: estas clases sólo las utilizaObjectHelper, que ha sido declarado como obsoletosfWidgetFormI18nSelectLanguage,sfWidgetFormI18nSelectCurrencyysfWidgetFormI18nSelectCountry: utiliza los widgets correspondientes de tipoChoice(sfWidgetFormI18nChoiceLanguage,sfWidgetFormI18nChoiceCurrencyysfWidgetFormI18nChoiceCountryrespectivamente) ya que su comportamiento es idéntico y tienen más opciones de configuración.sfWidgetFormChoiceMany,sfWidgetFormPropelChoiceMany,sfWidgetFormDoctrineChoiceMany,sfValidatorChoiceMany,sfValidatorPropelChoiceManyysfValidatorPropelDoctrineMany: puedes utilizar las clases con el mismo nombre pero sin el sufijoManyy estableciendo la opciónmultipleatrueSfExtensionObjectBuilder,SfExtensionPeerBuilder,SfMultiExtendObjectBuilder,SfNestedSetBuilder,SfNestedSetPeerBuilder,SfObjectBuilderySfPeerBuilder: estas clases constructoras propias de Propel se han sustituido por los nuevos comportamientos de Propel 1.4.
Las siguientes clases se han declarado obsoletas en Symfony 1.3:
sfCommonFilter: el tutorial de actualización a Symfony 1.3/1.4 explica con detalle por qué se ha eliminado este filtro y cómo se puede actualizar el código.
Helpers
Los siguientes grupos de helpers se han declarado obsoletos en Symfony 1.3 y se han eliminado en Symfony 1.4:
- Todos los helpers relacionados con el sistema de formularios de Symfony 1.0 y proporcionados por el plugin
sfCompat10Plugin:DateForm,Form,ObjectAdmin,ObjectyValidation.
El helper form_tag() del grupo Form se ha trasladado al grupo Url, por lo que todavía se puede utilizar en Symfony 1.4.
La carga de helpers desde el include path de PHP se ha declarado obsoleta en Symfony 1.3 y se ha eliminado en Symfony 1.4. Los helpers deben encontrarse obligatoriamente en el directorio lib/helper/ del proyecto, de una aplicación o de un módulo.
Opciones de configuración
Las siguientes opciones del archivo de configuración settings.yml se han eliminado en Symfony 1.3:
check_symfony_version: esta opción se añadió hace muchos años para permitir el borrado automático de la cache cuando se cambiaba la versión de Symfony. Se trataba de una opción útil en los servicios de hosting compartidos donde la misma versión de Symfony se comparte entre todos los clientes. Como esta práctica está desaconsejada desde Symfony 1.1 (es mejor incluir las librerías de Symfony en cada proyecto) esta opción ya no tiene sentido. Además, si la opción está activada, esta comprobación añade una pequeña penalización en el rendimiento de cada petición.max_forwards: esta opción establece el número máximo de redirecciones permitidas en una petición antes de que Symfony lance una excepción. Además de eliminar esta opción, se ha establecido en 5 el máximo número de redirecciones, ya que si este número no es suficiente, tu aplicación está mal diseñada y su rendimiento debe ser lamentable.sf_lazy_cache_key: esta opción se introdujo en Symfony 1.2.6 como una posible gran mejora en el rendimiento de las aplicaciones, ya que permite activar en la cache de la vista la generación tardía de las claves de cache. Aunque creemos que se trata de una buena idea, algunos usuarios confían en que se invoquesfViewCacheManager::isCacheable()incluso cuando la propia acción no se puede guardar en la cache. Desde Symfony 1.3 el comportamiento es igual que si la opciónsf_lazy_cache_keyestuviera configurada atrue.strip_comments: esta opción permite deshabilitar el borrado de los comentarios, ya que el tokenizer de las versiones 5.0.X de PHP contenía muchos errores. No obstante, como Symfony 1.3 sólo funciona con PHP 5.2 o superior y como se han solucionado otros errores asociados al borrado de comentarios, esta opción tampoco tiene sentido.lazy_routes_deserialize: ya no se necesita esta opción.
Las siguientes opciones de configuración se han declarado obsoletas en Symfony 1.3 y se han eliminado en Symfony 1.4:
calendar_web_dir,rich_text_js_dir: estas opciones las utiliza el grupo de helpersForm, que ha sido declarado obsoleto en Symfony 1.3.validation_error_prefix,validation_error_suffix,validation_error_classyvalidation_error_id_prefix: estas opciones las utiliza el grupo de helpersValidation, que ha sido declarado obsoleto en Symfony 1.3.is_internal(enmodule.yml): esta opción se utilizaba para impedir que las acciones pudieran invocarse desde el navegador. Se empleaba para proteger el envío de emails en Symfony 1.0. Como el sistema de envío de emails ya no necesita este truco, esta opción ya no tiene sentido.
Tareas
Las siguientes tareas se han eliminado en Symfony 1.3:
project:freezeyproject:unfreeze: estas tareas se empleaban para incluir las librerías de Symfony dentro del propio proyecto. Ya no son necesarias porque se recomienda incluir siempre las librerías de Symfony dentro del proyecto. Además, cambiar de una versión de Symfony a otra ahora es muy sencillo, ya que solamente debes cambiar una ruta dentro de la claseProjectConfiguration. Incluir Symfony a mano también es muy sencillo, porque solamente debes copiar el directorio de Symfony en algún directorio del proyecto (te recomendamos que lo copies enlib/vendor/symfony/).
Las siguientes tareas se han declarado obsoletas en Symfony 1.3 y se han eliminado en Symfony 1.4:
- Todos los alias de todas las tareas de Symfony 1.0.
propel:init-admin: se utilizaba para generar los módulos de administración de Symfony 1.0.
Las siguientes tareas de Doctrine se han fusionado en la nueva tarea doctrine:build y han sido eliminadas en Symfony 1.4:
doctrine:build-alldoctrine:build-all-loaddoctrine:build-all-reloaddoctrine:build-all-reload-test-alldoctrine:rebuild-dbdoctrine:reload-data
Otros elementos
Los siguientes comportamientos se han declarado obsoletos en Symfony 1.3 y han sido eliminados en Symfony 1.4:
- El soporte de la notación tipo array (
[]) en los métodossfParameterHolder::get(),sfParameterHolder::has(),sfParameterHolder::remove(),sfNamespacedParameterHolder::get(),sfNamespacedParameterHolder::has()ysfNamespacedParameterHolder::remove()se ha declarado obsoleta y se ha eliminado en Symfony 1.4 (lo que mejora el rendimiento).
La línea de comandos de Symfony ya no acepta la opción global --dry-run porque no la utilizaba ninguna de las tareas propias de Symfony. Si alguna de tus taras hace uso de esta opción, la puedes añadir como opción local de la clase de tu tarea.
Las plantillas de Propel para el generador de administraciones de Symfony 1.0 y el CRUD de Symfony 1.0 se han eliminado en Symfony 1.4 (plugins/sfPropelPlugin/data/generator/sfPropelAdmin/).
El calendario “Dynarch calendar” (que se encontraba en data/web/calendar/) se ha eliminado en Symfony 1.4 porque sólo lo utiliza el grupo de helpers Form, que también se ha eliminado en Symfony 1.4.
A partir de Symfony 1.3, la página que indica que la aplicación no está disponible sólo se busca en los directorios %SF_APP_CONFIG_DIR%/ y %SF_CONFIG_DIR%/. Si aún guardas esta página en el directorio %SF_WEB_DIR%/errors/, debes cambiarla de sitio antes de actualizar a Symfony 1.4.
Ya no se genera el directorio doc/ dentro de la raíz del proyecto, ya que Symfony no lo utilizaba. La opción sf_doc_dir relacionada también ha sido eliminada.
La opción sfDoctrinePlugin_doctrine_lib_path, que antes se utilizaba para indicar un directorio lib/ propio para Doctrine se ha declarado obsoleta en Symfony 1.3 y se ha eliminado en Symfony 1.4. Puedes utilizar en su lugar la opción sf_doctrine_dir.
Todas las clases de tipo Base* generadas automáticamente ya no son de tipo abstract.
