项目从1.2升级到1.3/1.4
本文档描述了symfony 1.3/1.4中所做的更改,以及升级symfony 1.2项ob娱乐下载目需要做的工作。
如果您想了解symfony 1.3/1.4中更改/添加了哪些内容的详细信息,可以阅读ob娱乐下载有什么新鲜事吗?教程。
谨慎
ob娱乐下载symfony 1.3/1.4与PHP 5.2.4或更高版本兼容。它可能也适用于PHP 5.2.0到5.2.3,但不能保证。
升级到symfony 1.ob娱乐下载4
symfony 1.4中没有升级任务,因为此版本与symob娱乐下载fony 1.3相同(删除了所有已弃用的特性)。要升级到1.4,必须先升级到1.3,然后切换到1.4版本。
在升级到1.4之前,您还可以验证您的项目没有使用任何弃用的类/方法/函数/设置/…通过运行项目:验证
任务:
$ PHP ob娱乐下载symfony项目:验证
该任务列出了在切换到symfony 1.4之前需要更改的所有文件。ob娱乐下载
请注意,该任务是一个美化的正则表达式,可能会给您许多误报。此外,它不能检测到所有内容,因此它只是一个帮助您识别可能问题的工具,而不是一个神奇的工具。您仍然需要仔细阅读DEPRECATED教程。
请注意
sfCompat10Plugin
而且sfProtoculousPlugin
已从1.4中移除。如果您显式地在项目的配置类文件中禁用它们,例如配置/ ProjectConfiguration.class.php
,你必须从这些文件中删除所有提及他们的内容。
如何升级到symfony 1.3?ob娱乐下载
升级一个项目:
检查项目使用的所有插件是否与symfony 1.3兼容ob娱乐下载
如果您不使用配置管理工具,请对您的项目进行备份。
将symfonyob娱乐下载升级到1.3版本
将插件升级到1.3版本
启动
项目:upgrade1.3
任务从您的项目目录执行自动升级:symfonob娱乐下载y项目:upgrade1.3
此任务可以多次启动而没有任何副作用。每次你升级到一个新的symfony 1.3 beta / RCob娱乐下载或最终的symfony 1.3时,你必须启动这个任务。
由于以下描述的一些更改,您需要重新构建您的模型和表单:
# Doctrine $ php ob娱乐下载symfony Doctrine:build—all-classes
清除缓存:
$ PHP ob娱乐下载symfony缓存:清除
其余部分将解释symfony 1.3中需要某种升级(自动或非自动)的主要更改。ob娱乐下载
的用法
在symfony 1.ob娱乐下载3开发过程中,我们已经弃用并删除了一些设置、类、方法、函数和任务。详情请参阅1.3中的弃用获取更多信息。
半自动的
从symfoob娱乐下载ny 1.3开始,lib /供应商/
默认情况下目录不再自动加载。如果你想自动加载一些lib /供应商/
子目录,在应用程序中添加一个新条目autoload.yml
配置文件:
autoload: vendor_some_lib: path: %SF_LIB_DIR%/vendor/some_lib_dir递归:on
自动加载的lib /供应商/
目录存在问题有以下几个原因:
如果你把图书馆放在
lib /供应商/
目录已经具有自动加载机制,symfony将重新解析文件并在缓存中添加一堆不需要的信息(参见#5893ob娱乐下载 - http://trac.symfony-project.org/ticket/5893)。如果您的symfob娱乐下载ony目录没有精确命名
lib /供应商/ sob娱乐下载ymfony /
,项目自动加载器将重新解析整个symfony目录,可能会出现一些问题(参见#6064 - httpob娱乐下载://trac.symfony-project.org/ticket/6064)。
symfony 1.3中的自动ob娱乐下载加载现在是不区分大小写的。
路由
的sfPatternRouting: setRoutes ()
,sfPatternRouting: prependRoutes ()
,sfPatternRouting: insertRouteBefore ()
,sfPatternRouting: connect ()
方法不像在以前的版本中那样以数组形式返回路由。
的lazy_routes_deserialize
选项已被删除,因为它不再需要了。
从symfoob娱乐下载ny 1.3开始,路由缓存是禁用的,因为就性能而言,这是大多数项目的最佳选择。因此,如果您没有自定义路由缓存,它将为所有应用程序自动禁用。如果在升级到1.3之后,您的项目变慢了,您可能想要添加一些路由缓存,看看它是否有帮助。下面是您可以添加回您的sob娱乐下载ymfony 1.2默认配置factories.yml
:
routing: param: cache: class: sfFileCache param: automatic_cleaning_factor: 0 cache_dir: %SF_CONFIG_CACHE_DIR%/routing lifetime: 31556926 prefix: %SF_APP_DIR%/routing
javascript和样式表
拆卸常用过滤器
的sfCommonFilter
已弃用,默认情况下不再使用。此过滤器用于自动将javascript和样式表标记注入到响应内容中。方法来手动包含这些资产include_stylesheets ()
而且include_javascripts ()
布局中的辅助工具:
<?phpinclude_javascripts()? ><?phpinclude_stylesheets()? >
它已被删除的原因如下:
我们已经有了更好、更简单、更灵活的解决方案
include_stylesheets ()
而且include_javascripts ()
助手)即使可以很容易地禁用过滤器,这也不是一件容易的任务,因为您必须首先了解它的存在及其“幕后”的神奇工作
类中的样式表在布局中包含资产的时间和位置,使用helper可以提供更细粒度的控制
头
标记和javascript的末尾身体
例如标签)明确的总是比含蓄的要好(没有魔法也没有WTF效应;请参阅用户邮件列表,了解关于此问题的许多投诉)
它提供了一个小的速度改进
如何升级?
的
常见的
过滤器需要从所有中删除filters.yml
配置文件(这由项目:upgrade1.3
的任务)。你需要加上
include_stylesheets ()
而且include_javascripts ()
调用布局中具有与以前相同的行为(这是由项目:upgrade1.3
控件中的HTML布局模板/
应用程序的目录-它们必须有< >头
标签;并且您需要手动升级任何其他布局,或任何没有布局但仍然依赖于JavaScripts文件和/或样式表的页面)。
请注意
的sfCommonFilter
类仍然与symfony 1.3捆绑在一起,因此您仍然可以ob娱乐下载在您的filters.yml
如果你需要的话。
任务
以下任务类已重命名:
ob娱乐下载symfony 1.2 | ob娱乐下载symfony 1.3 |
---|---|
sfConfigureDatabaseTask |
sfDoctrineConfigureDatabaseTask 或sfPropelConfigureDatabaseTask |
sfDoctrineLoadDataTask |
sfDoctrineDataLoadTask |
sfDoctrineDumpDataTask |
sfDoctrineDataDumpTask |
sfPropelLoadDataTask |
sfPropelDataLoadTask |
sfPropelDumpDataTask |
sfPropelDataDumpTask |
的签名*:数据加载
任务已经改变。特定的目录或文件现在必须作为参数提供。的- - - dir
选项已被删除。
$ PHP ob娱乐下载symfony原则:data-load data/fixture /dev
格式器
的sfFormatter:格式()
第三个参数已被删除。
逃离
的esc_js_no_entities ()
,由ESC_JS_NO_ENTITIES
已更新为正确处理非ansi字符。在此之前,请更改所有具有ANSI值的字符37
来177
是逃出来的。现在它只会转义反斜杠\
、报价'
&"
和美化下\ n
&r \
.然而,您以前不太可能依赖于这种损坏的行为。
教义集成
所需教义版本
教义的外部内容已经更新到使用最新和最好的教义1.2版本。你可以在教义1.2中读到新的内容在这里.
管理员生成器删除
管理生成器批量删除更改为获取记录并发布delete ()
方法,而不是发出一个DQL查询将它们全部删除。这样做的原因是为了调用删除每条记录的事件。
覆盖原则插件模式
只需在本地模式中定义相同的模型,就可以覆盖插件YAML模式中包含的模型。例如,添加一个“email”列到sfDoctrineGuardPlugin的sfGuardUser
模型,将以下内容添加到配置/理论/ schema.yml
:
sfGuardUser: columns: email: type:字符串(255)
请注意
package选项是Doctrine的一个特性,用于symfony插件的模式。ob娱乐下载这并不意味着可以单独使用包特性来打包您的模型。它必须直接使用,只能与symfony插件。ob娱乐下载
查询日志
Doctrine集成记录使用运行的查询sfEventDispatcher
而不是通过直接访问记录器对象。此外,这些事件的主题是运行查询的连接或语句。日志记录是由新的sfDoctrineConnectionProfiler
类,它可以通过sfDoctrineDatabase
对象。
插件
如果你使用enableAllPluginsExcept ()
方法来管理您的ProjectConfiguration
类,请注意,我们现在按名称对插件进行排序,以确保不同平台之间的一致性。
小部件
的sfWidgetFormInput
类现在是抽象的。属性创建文本输入字段sfWidgetFormInputText
类。这个更改是为了简化表单类的内省。
梅勒
ob娱乐下载Symfony 1.3有一个新的邮件工厂。在创建新应用程序时,factories.yml
有合理的默认测验
而且dev
环境。但如果升级现有项目,则可能需要更新您的factories.yml
在这些环境中使用以下配置:
Mailer: param: delivery_strategy: none
使用前面的配置,将不会发送电子邮件。当然,它们仍然会被记录下来,而且梅勒
测试器仍将在功能测试中工作。
如果您希望将所有电子邮件接收到单个地址,则可以使用single_address
交付策略(在dev
例如环境):
Dev: mailer: param: delivery_strategy: single_address delivery_address: foo@example.com
谨慎
如果你的项目使用旧版本的Swiftmailer,你必须删除它。
YAML
sfYAML现在与1.2规范更加兼容。以下是您可能需要在配置文件中做的更改:
布尔值现在只能用
真正的
或假
字符串。如果您使用了以下列表中的替代字符串,则必须将它们替换为其中之一真正的
或假
:在
,y
,是的
,+
从
,n
,没有
,-
的项目:升级
Task告诉您在哪里使用了旧语法,但不修复它们(例如,以避免丢失注释)。你必须手工修理它们。
如果您不想检查所有的YAML文件,您可以使用sfYaml: setSpecVersion ()
方法:
sfYaml::setSpecVersion(“1.1”);
推动
以前symfony版本中使用的自定义Propel构建器类已被新的Propel 1.4行为类所取代。ob娱乐下载要利用此增强,您的项目的propel.ini
文件必须更新。
删除旧的构建器类:
;构建器设置propel.builder.peer.class = plugins.sfPropelPlugin.lib.builder.SfPeerBuilder propel.builder.object.class = plugins.sfPropelPlugin.lib.builder.SfObjectBuilder propel.builder.objectstub.class = plugins.sfPropelPlugin.lib.builder.SfExtensionObjectBuilder propel.builder.peerstub.class = plugins.sfPropelPlugin.lib.builder.SfExtensionPeerBuilder propel.builder.objectmultiextend.class = plugins.sfPropelPlugin.lib.builder.SfMultiExtendObjectBuilder propel.builder.mapbuilder.class =plugins.sfPropelPlugin.lib.builder.SfMapBuilderBuilder
并添加新的行为类:
;behaviour propel.behavior.default = ob娱乐下载symfony,symfony_i18n propel.behavior.symfony.class = plugins.sfPropelPlugin.lib.behavior. sfpropelbehaviorsymfony propel.behavior.symfony_i18n.class = plugins.sfPropelPlugin.lib.behavior. symfony_i18n.class = plugins.sfPropelPlugin.lib.behavior。SfPropelBehaviorI18n propelbehavior .ob娱乐下载symfony_i18n_translation.class = plugins.sfPropelPlugin.lib.behavior。SfPropelBehaviorI18nTranslation propelbehavior .ob娱乐下载symfony_behaviors.class = plugins. sfpropelplugin .lib.behavior. sfpropelbehaviour . symfonybehaviors propelbehavior .symfony_timestampable.class = plugins.sfPropelPlugin.lib.behavior.SfPropelBehaviorTimestampable
的项目:升级
任务将尝试为您进行此更改,但如果您已对propel.ini
.
的BaseFormFilterPropel
中错误地生成了类lib /过滤器/基地
在syob娱乐下载mfony 1.2。这在symfony 1.3中得到了修正;ob娱乐下载类现在生成在lib /过滤器
.的项目:升级
任务将为您移动此文件。
测试
单元测试引导文件,测试/引导/ unit.php
,已得到增强,以更好地处理项目类文件的自动加载。该脚本必须添加以下行:
自动装载美元= sfSimpleAutoload::getInstance(sfConfig::得到(“sf_cache_dir”).' / project_autoload.cache ');自动装载美元->loadConfiguration(sfFinder::类型(“文件”)->的名字(“autoload.yml”)->在(数组(sfConfig::得到(“sf_ob娱乐下载symfony_lib_dir”).“/ config / config”, sfConfig::得到(“sf_config_dir”),)));自动装载美元->注册();
的项目:升级
任务将尝试为您进行此更改,但如果您已对测试/引导/ unit.php
.
本作品在创作共用署名相似共享3.0未移植许可许可下获得许可。