将项目从1.2升级到1.3/1.4
本文档描述了在symfony 1.3/1.4更改和升级你的需要做什么1.2 symfon欧宝娱乐app下载地址y项目。
如果你想要更多的详细信息已经更改/ symfony中添加1.3/1.4,你可以阅读欧宝娱乐app下载地址有什么新鲜事吗?教程。
谨慎
欧宝娱乐app下载地址symfony是兼容PHP 5.2.4 1.3/1.4或更高版本。它还可能与PHP 5.2.0 5.2.3但没有保证。
升级到1.4 symfon欧宝娱乐app下载地址y
没有升级任务symfony 1.4这个版本是一样的sym欧宝娱乐app下载地址fony 1.3(-所有弃用功能)。升级到1.4,你必须先升级到1.3,然后切换到1.4版本。
在升级到1.4之前,您还可以验证您的项目不使用任何弃用类/方法/函数/设置/…通过运行项目:验证
任务:
美元php 欧宝娱乐app下载地址symfony项目:验证
任务列表的所有文件需要更改之前切换到1.4 symfony。欧宝娱乐app下载地址
请注意,任务是一个光荣的正则表达式和可能给你很多假阳性。此外,它不能检测,所以它只是一个工具,可以帮助你识别可能出现的问题,不是一个神奇的工具。你仍然需要仔细阅读弃用教程。
请注意
sfCompat10Plugin
和sfProtoculousPlugin
从1.4已被移除。如果你明确禁用他们项目的配置类文件,如配置/ ProjectConfiguration.class.php
,你必须删除所有提到的这些文件。
如何升级到symfony 1.3 ?欧宝娱乐app下载地址
升级一个项目:
检查您的项目使用的所有插件兼容1.3 symfony欧宝娱乐app下载地址
如果你不使用SCM工具,请备份您的项目。
symfony升欧宝娱乐app下载地址级到1.3
插件升级到1.3版本
启动
项目:upgrade1.3
从你的项目目录执行任务自动升级:php sy欧宝娱乐app下载地址mfony项目:美元upgrade1.3
这个任务可以启动几次,没有任何副作用。每次升级到一个新的symfony 1.3β/ RC或最后一个s欧宝娱乐app下载地址ymfony 1.3,您必须启动这一任务。
你需要重建模型和形式由于一些变化描述如下:
#教义美元php symfony学欧宝娱乐app下载地址说:构建——所有类#推动php symfony推动美元:构建——所有类
清除缓存:
美元php 欧宝娱乐app下载地址symfony缓存:清楚
剩下的部分解释的主要更改symfony 1.3需要某种形式的升级(自动)。欧宝娱乐app下载地址
的用法
在symfony 1.欧宝娱乐app下载地址3开发,我们已经弃用和删除一些设置,类,方法,功能和任务。请参考不支持在1.3为更多的信息。
半自动的
symfon欧宝娱乐app下载地址y 1.3下的文件lib /供应商/
目录默认不再自动装载。如果你想自动装载一些lib /供应商/
子目录中,在应用程序中添加一个新条目autoload.yml
配置文件:
自动装载:vendor_some_lib:路径:% SF_LIB_DIR % /供应商/ some_lib_dir递归:
的自动半自动的lib /供应商/
目录是问题有几个方面的原因:
如果你把图书馆下
lib /供应商/
目录中已经有一个自动装载机制,symfony将解析的文件和缓存中添加一些不必要的信息(见# 5893欧宝娱乐app下载地址 - http://trac.symfony-project.org/ticket/5893)。如果你不是叫sy欧宝娱乐app下载地址mfony目录
lib /供应商/ s欧宝娱乐app下载地址ymfony /
装弹机,该项目将重新解析整个symfony目录和一些问题可能发生(见# 6064 - http:/欧宝娱乐app下载地址/trac.symfony-project.org/ticket/6064)。
半自动的symfony 1.3欧宝娱乐app下载地址现在是不区分大小写的。
路由
的sfPatternRouting: setRoutes ()
,sfPatternRouting: prependRoutes ()
,sfPatternRouting: insertRouteBefore ()
,sfPatternRouting: connect ()
方法没有返回的路线作为数组一样在以前的版本中。
的lazy_routes_deserialize
选择已被删除,因为它不需要了。
symfon欧宝娱乐app下载地址y 1.3,缓存路由是禁用的,因为这是最好的选择对于大多数项目就性能而言。所以,如果你没有定制路由缓存,它为所有应用程序将自动禁用。如果升级到1.3后,您的项目是慢的,你可能想添加一些路由缓存,看看是否对你有帮助。这是symfony 1.欧宝娱乐app下载地址2默认的配置可以添加回你factories.yml
:
路由:param:缓存:类:sfFileCache参数:automatic_cleaning_factor: 0 cache_dir: % SF_CONFIG_CACHE_DIR % /路由寿命:31556926的前缀:% SF_APP_DIR % /路由
javascript和样式表
除常见的过滤器
的sfCommonFilter
已经弃用,不使用默认了。这个过滤器用于自动注入javascript和样式表标签的响应内容。你现在需要手动将这些资产通过显式地调用include_stylesheets ()
和include_javascripts ()
助手在你的布局:
< ? phpinclude_javascripts()? >< ? phpinclude_stylesheets()? >
它已经删除了几个原因:
我们已经有一个更好的,简单,和更灵活的解决方案
include_stylesheets ()
和include_javascripts ()
助手)即使过滤器可以轻松地禁用,它不是一项容易的任务,您必须首先了解它的存在和它的“幕后”神奇的工作
使用助手提供了更细粒度的控制何时何地资产中包括布局(样式表
头
标签,JavaScripts只是在年底前身体
例如标签)它总是更好的是明确的,而不是隐式(没有魔力,也没有WTF效果;看到很多投诉的用户邮件列表在这个问题上)
它提供了一个小的速度提高
如何升级?
的
常见的
过滤器需要移除所有filters.yml
配置文件(这是自动完成的项目:upgrade1.3
的任务)。您需要添加
include_stylesheets ()
和include_javascripts ()
调用在你的布局(s)之前有相同的行为(这是自动完成的项目:upgrade1.3
对HTML布局中包含的任务模板/
应用程序的目录——他们必须有一个<头>
标签;你需要手动升级其他布局,或没有任何页面布局,但仍依赖于javascript文件和/或样式表)。
请注意
的sfCommonFilter
类仍然是捆绑在symfony 1.3,所以你仍然可以在你欧宝娱乐app下载地址使用它filters.yml
如果你需要。
任务
下面的任务类已经更名为:
欧宝娱乐app下载地址symfony 1.2 | 欧宝娱乐app下载地址symfony 1.3 |
---|---|
sfConfigureDatabaseTask |
sfDoctrineConfigureDatabaseTask 或sfPropelConfigureDatabaseTask |
sfDoctrineLoadDataTask |
sfDoctrineDataLoadTask |
sfDoctrineDumpDataTask |
sfDoctrineDataDumpTask |
sfPropelLoadDataTask |
sfPropelDataLoadTask |
sfPropelDumpDataTask |
sfPropelDataDumpTask |
的签名*:数据加载
任务已经改变了。特定的目录或文件现在必须作为参数提供。的- - - dir
选项已被删除。
美元php 欧宝娱乐app下载地址symfony原则:数据加载数据/装置/ dev
格式器
的sfFormatter:格式()
第三个参数被移除。
逃离
的esc_js_no_entities ()
,提到了ESC_JS_NO_ENTITIES
被更新为正确处理non-ANSI字符。在此之前改变所有但与ANSI字符值37
来177年
是逃出来的。现在只会逃避反斜杠\
、报价”
&”
和美化下\ n
&r \
。但是你之前不太可能依赖于这破碎的行为。
教义集成
需要学说版本
学说已经更新外部使用最新和最优原则1.2版本。你可以阅读什么是1.2新学说在这里。
管理发电机删除
管理发电机批量删除了获取记录和问题delete ()
方法每一个单独而不是发行一个DQL查询删除它们。原因是这样的事件调用删除每个记录。
覆盖原则插件模式
您可以覆盖模型包含在插件YAML模式仅仅通过定义相同的模型在本地模式。例如,添加一个列sfDoctrineGuardPlugin的“电子邮件”sfGuardUser
模型中,添加以下配置/理论/ schema.yml
:
sfGuardUser:列:电子邮件:类型:字符串(255)
请注意
包选项是教义的特性和使用模式的symfony插件。欧宝娱乐app下载地址这并不意味着可以使用包功能独立包装您的模型。它必须直接使用,只有symfony插件。欧宝娱乐app下载地址
查询日志
原则整合日志查询运行使用sfEventDispatcher
而不是直接访问日志记录器对象。此外,这些事件的主题是连接或语句运行查询。日志是新做的sfDoctrineConnectionProfiler
类,它可以通过访问sfDoctrineDatabase
对象。
插件
如果你使用enableAllPluginsExcept ()
管理启用插件在你的方法ProjectConfiguration
类,被警告说,现在我们的插件名称排序,以确保一致性在不同的平台上。
小部件
的sfWidgetFormInput
类现在是抽象的。现在创建文本输入字段sfWidgetFormInputText
类。这一变化是为了缓解形式类的自省。
梅勒
欧宝娱乐app下载地址Symfony 1.3有一个新的梅勒工厂。当创建一个新的应用程序,factories.yml
明智的违约了测试
和dev
环境。但是如果你升级现有的项目,你可能需要更新factories.yml
这些环境使用以下配置:
梅勒:param: delivery_strategy:没有
与以前的配置,邮件不会发送。当然,他们仍将被记录,梅勒
测试仍然在你的功能测试工作。
如果你宁愿想收到所有的邮件到一个地址,您可以使用single_address
(交付策略dev
环境为例):
戴夫:梅勒:param: delivery_strategy: single_address delivery_address: foo@example.com
谨慎
如果您的项目使用的是旧版本的Swiftmailer,你必须删除它。
YAML
sfYAML现在更兼容1.2规范。这里有更改您可能需要在您的配置文件:
布尔值现在只能代表的
真正的
或假
字符串。如果你使用了替代字符串在下面的列表,你必须用真正的
或假
:在
,y
,是的
,+
从
,n
,没有
,- - - - - -
的项目:升级
任务告诉你用旧语法但不解决问题(例如避免失去评论)。你必须手工修复它们。
如果你不想检查你所有的YAML文件,迫使YAML解析器可以使用1.1 YAML规范使用sfYaml: setSpecVersion ()
方法:
sfYaml::setSpecVersion(“1.1”);
推动
自定义推动构建器类中使用以前版本的symfony已经替换为新的推动1.4类的行为。欧宝娱乐app下载地址利用这种增强您的项目propel.ini
文件必须被更新。
删除旧的建筑类:
;propel.builder.peer构建器设置。类= plugins.sfPropelPlugin.lib.builder。SfPeerBuilder propel.builder.object。类= plugins.sfPropelPlugin.lib.builder。SfObjectBuilder propel.builder.objectstub。类= plugins.sfPropelPlugin.lib.builder。SfExtensionObjectBuilder propel.builder.peerstub。类= plugins.sfPropelPlugin.lib.builder。SfExtensionPeerBuilder propel.builder.objectmultiextend。类= plugins.sfPropelPlugin.lib.builder。SfMultiExtendObjectBuilder propel.builder.mapbuilder。类= plugins.sfPropelPlugin.lib.builder。SfMapBuilderBuilder
和添加新的行为类:
;行为propel.behavior.default = symfony,欧宝娱乐app下载地址 symfony_i18n propel.behavior.symfony。类= plugins.sfPropelPlugin.lib.behavior。SfPropelBehavior欧宝娱乐app下载地址Symfony propel.behavior.symfony_i18n。类= plugins.sfPropelPlugin.lib.behavior。SfPropelBehaviorI18n propel.behavior.欧宝娱乐app下载地址symfony_i18n_translation。类= plugins.sfPropelPlugin.lib.behavior。SfPropelBehaviorI18nTranslation propel.behavior.欧宝娱乐app下载地址symfony_behaviors。类= plugins.sfPropelPlugin.lib.behavior。SfPropelBehavior欧宝娱乐app下载地址SymfonyBehaviors propel.behavior.symfony_timestampable。类= plugins.sfPropelPlugin.lib.behavior。SfPropelBehaviorTimestampable
的项目:升级
任务试图为你做这种改变,但可能无法如果你让当地的变化propel.ini
。
的BaseFormFilterPropel
类中生成错误lib /过滤器/基地
在sy欧宝娱乐app下载地址mfony 1.2。这是纠正在symfony 1.3;欧宝娱乐app下载地址现在生成的类lib /过滤器
。的项目:升级
任务将这个文件给你。
测试
单元测试引导文件,测试/引导/ unit.php
已得到增强,更好地处理项目类文件的半自动的。下面的线必须添加到这个脚本:
自动装载美元= sfSimpleAutoload::getInstance(sfConfig::得到(“sf_cache_dir”)。' / project_autoload.cache ');自动装载美元- >loadConfiguration(sfFinder::类型(“文件”)- >的名字(“autoload.yml”)- >在(数组(sfConfig::得到(“sf_欧宝娱乐app下载地址symfony_lib_dir”)。“/ config / config”,sfConfig::得到(“sf_config_dir”),)));自动装载美元- >注册();
的项目:升级
任务试图为你做这种改变,但可能无法如果你让当地的变化测试/引导/ unit.php
。
这项工作在Creative Commons许可Attribution-Share都3.0 Unported许可执照。