Upgrading Applications
Upgrading Applications
If you have an existing Zend Framework v2 application, and want to update it to the latest versions, you will have some special considerations.
Upgrading Zend Framework
Since the 2.5 release, the zendframework package has been essentially a "metapackage", defining no code, and only dependencies on the various component packages. This means that when you installzendframework/zendframework, you get the full set of components, at the latest 2.* versions.
With the release of version 3, we recommend:
- Removing the zendframework/zendframework package.
- Installing the zendframework/zend-component-installer package.
- Installing the zendframework/zend-mvc package.
- Installing each ZF component package you actually use in your application.
The process would look like this:
$ composer remove zendframework/zendframework
$ composer require zendframework/zend-component-installer
$ composer require zendframework/zend-mvc
# Repeat as necessary for components you use if not already installed
When you install zend-mvc, it will prompt you to add configuration for components; choose either application.config.php or modules.config.php, and re-use your selection for all other packages. This step ensures that the various components installed, and any news ones you add later, are configured in your application correctly.
This approach will ensure you are only installing what you actually need. As an example, if you are not using zend-barcode, or zend-permissions-acl, or zend-mail, there's no reason to install them.
Keeping the zendframework package
If you want to upgrade quickly, and cannot easily determine which components you use in your application, you can upgrade your zendframework requirement. When you do, you should also install the zend-component-installer, to ensure that component configuration is properly injected in your application.
$ composer require zendframework/zend-component-installer "zendframework/zendframework:^3.0"During installation, it will prompt you to add configuration for components; choose either
application.config.phpormodules.config.php, and re-use your selection for all other packages. This step ensures that the various components installed, and any news ones you add later, are configured in your application correctly.This will upgrade you to the latest releases of all Zend Framework components at once; it will also install new components developed as part of the version 3 initiative.
We still recommend reducing your dependencies at a later date, however.
Integration packages
During the Zend Framework 3 initiative, one goal was to reduce the number of dependencies for each package. This affected the MVC in particular, as a number of features were optional or presented deep integrations between the MVC and other components. These include the following:
Console tooling
If you were using the MVC console tooling, and are doing a partial update per the recommendations, you will need to install zend-mvc-console.
Forms integration
If you were using the forms in your MVC application, and are doing a partial update per the recommendations, you will need to install zend-mvc-form.
i18n integration
If you were using i18n features in your MVC application, and are doing a partial update per the recommendations, you will need to install zend-mvc-i18n.
Plugins
If you were using any of the prg(), fileprg(), identity(), orflashMessenger() MVC controller plugins, and are doing a partial update per the recommendations, you will need to install zend-mvc-plugins.
zend-di integration
If you were using the zend-servicemanager <-> zend-di integration within your application, you will need to install zend-servicemanager-di.
Autoloading
If you are doing a partial upgrade per the above recommendations (vs. upgrading the full zendframework package), one change is that zend-loader is no longer installed by default, nor recommended. Instead, we recommend using Composer for autoloading.
As such, you will need to setup autoloading rules for each module specific to your application.
As an example, if you are still defining the default Application module, you can add autoloading for it as follows in your project's composer.json:
"autoload": {
"psr-4": {
"Application\\": "module/Application/src/Application/"
},
"files": [
"module/Application/Module.php"
]
}
The above creates a PSR-4 autoloading rule for the Application module, telling it to look in the module/Application/src/Application/ directory. Since theApplication\Module class is defined at the module root, we specify it in thefiles configuration.
To improve on this, and simplify autoloading, we recommend adopting a complete PSR-4 directory structure for your module class files. As an example, to change the existing Application module to PSR-4, you can do the following:
$ cd module/Application
$ mv src temp
$ mv temp/Application src
$ rm -Rf ./temp
$ mv Module.php src/
Update your Module.php file to do the following:
- Remove the
getAutoloaderConfig()method entirely, if defined. - Update the
getConfig()method frominclude __DIR__ . '/config/module.config.phptoinclude _DIR__ . '/../config/module.config.php.
You can then update the autoload configuration to:
"autoload": {
"psr-4": {
"Application\\": "module/Application/src/"
}
}
The updated application skeleton already takes this approach.
Bootstrap
Because version 3 requires usage of Composer for autoloading, you can simplify your application bootstrap.
First, if you were using an init_autoloader.php file, you can now remove it.
Second, update your public/index.php to read as follows:
<?php
use Zend\Mvc\Application;
/**
* This makes our life easier when dealing with paths. Everything is relative
* to the application root now.
*/
chdir(dirname(__DIR__));
// Decline static file requests back to the PHP built-in webserver
if (php_sapi_name() === 'cli-server') {
$path = realpath(__DIR__ . parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
if (__FILE__ !== $path && is_file($path)) {
return false;
}
unset($path);
}
// Composer autoloading
include __DIR__ . '/../vendor/autoload.php';
if (! class_exists(Application::class)) {
throw new RuntimeException(
"Unable to load application.\n"
. "- Type `composer install` if you are developing locally.\n"
);
}
// Run the application!
Application::init(require __DIR__ . '/../config/application.config.php')->run();
Scripts
The skeleton application for version 2 shipped three scripts with it:
bin/classmap_generator.phpbin/pluginmap_generator.phpbin/templatemap_generator.php
If you are upgrading an existing application, these will still be present. However, if you are starting a new application, and used these previously, they are no longer present.
classmap_generator.phpwas removed as it's unnecessary when using Composer for autoloading. When preparing a production installation, runcomposer dump-autoload -oand/orcomposer dump-autoload -a; both will generate optimized class map autoloading rules for you.pluginmap_generator.phpwas essentially obsolete due to the presence ofclassmap_generator.phpanyways.templatemap_generator.phpwas moved to the zend-view component with the 2.8.0 release of that component, and is now available via./vendor/bin/templatemap_generator.php. Additionally, its usage signature has changed; please use the--helpor-hswitches on first invocation to discover how to use it.
Development mode
Version 3 of the skeleton application adds a requirement on zfcampus/zf-development-mode, which provides a way to store common development-specific settings in your repository and then selectively enable/disable them during development.
If you are upgrading from an existing application, you can install this feature:
$ composer require zfcampus/zf-development-mode
Please refer to the package documentation for details on how to setup your application configuration to make use of this feature.
Upgrading Applications的更多相关文章
- JAVA工程师技能要求
近期做了个JAVA工程师分类, JAVA工程师可能是市场上最多类的程序员: 初级JAVA工程师的基本要求 Good basic programming skills 良好基本编程技能 Founda ...
- Installation and Upgrading
Cumulative Feature Overview Identifies product features available to you when upgrading. This tool r ...
- Oracle Applications Multiple Organizations Access Control for Custom Code
档 ID 420787.1 White Paper Oracle Applications Multiple Organizations Access Control for Custom Code ...
- Oracle Applications DBA 基础(二)
6.OAM及系统管理 2014年9月13日 20:40 参考资料: 1.Oracle Applications System Administrator's Guide - Configuration ...
- FNDCPASS Troubleshooting Guide For Login and Changing Applications Passwords
In this Document Goal Solution 1. Error Starting Application Services After Changing APPS Pass ...
- Globalization Guide for Oracle Applications Release 12
Section 1: Overview Section 2: Installing Section 3: Configuring Section 4: Maintaining Section 5: U ...
- 1.5 Upgrading From Previous Versions官网剖析(博主推荐)
不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ 1.5 Upgrading From Previous Versions 1.5 从 ...
- Authorization in Cloud Applications using AD Groups
If you're a developer of a SaaS application that allows business users to create and share content – ...
- DAC Usage3:Monitor Data-tier Applications
If you deploy a DAC to a managed instance of the Database Engine, information about the deployed DAC ...
随机推荐
- linux chmod 命令详解(转)
Ubuntu下修改目录权限需要先用 sudo 来获得管理员权限,格式如下: sudo chmod 600 ××× (只有所有者有读和写的权限)sudo chmod 644 ××× (所有者有读和写的权 ...
- UVA 1474 Evacuation Plan
题意:有一条公路,上面有n个施工队,要躲进m个避难所中,每个避难所中至少有一个施工队,躲进避难所的花费为施工队与避难所的坐标差的绝对值,求最小花费及策略. 解法:将施工队和避难所按坐标排序,可以看出有 ...
- 犯罪构成三层次记忆口诀 zt
犯罪构成三层次记忆口诀 2012-02-17 来源:为你辩护网 浏览次数:232 0 众所周知,犯罪构成“四要件”和犯罪构成“三层次”(“三阶层”)都是分析具体刑事案件的辅助性工具.犯罪构成四要件是指 ...
- PDF/WORD/EXCEL 图片预览
一.PDF/WORD/EXCEL 转 XPS 转 第一页内容 转 图片 WORD.EXCEL转XPS (Office2010) public bool WordToXPS(string sourceP ...
- GCC编译源代码的四个步骤【转】
GCC编译C源代码有四个步骤:预处理---->编译---->汇编---->链接. 可以利用GCC的参数来控制执行的过程,这样就可以更深入的了解编译C程序的过程. 下面将通过对一个程序 ...
- 最近升级了一下小老婆(8核 2x8G DDR3 128G SSD)
晒图(笔者的硬件知识属于小白级别, 且看且参考吧): 另外优化一下休眠&虚拟内存功能节省SSD空间: 1. 台式机, 休眠功能基本没必要, 果断关掉 C:\Windows\system32&g ...
- 使用slf4j取代Apache Commons Logging
假如你正在开发应用程序所调用的组件当中已经使用了 JCL(之前叫 Jakarta Commons Logging,JCL) 的,还有一些组建可能直接调用了 java.util.logging,这时你需 ...
- Linux就是这个范儿之第一次亲密接触(3)
原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 .作者信息和本声明.否则将追究法律责 1.4 返璞归真的命令行 有一种说法,现代计算机不是靠电力驱动,而是靠“鼠标”.多少应用程序的界面需 ...
- SQL中EXISTS的用法和效率
比如在Northwind数据库中有一个查询为SELECT c.CustomerId,CompanyName FROM Customers cWHERE EXISTS(SELECT OrderID FR ...
- .NET ORM框架(一)
最近做项目自己整理了一个ORM框架,分享给大家看看,有很多不足望大家指出. 下面是使用方法 BLL 主要方法 逻辑层:子类继承父类, 直接用BASE调用 ManagerBLL 中的方法. public ...