项目的基本环境已经调通,下面开始zend framework的相关配置。
-------------------------------------------------------------------------------------------------------------------------------------------------
2.1 添加启动入口文件
在public/index.php中添加如下代码:
chdir(dirname(__DIR__));
define("ROOT_PATH", dirname(__DIR__));
// Decline static file requests back to the PHP built-in webserver
if (php_sapi_name() === ‘cli-server‘ && is_file(__DIR__ . parse_url($_SERVER[‘REQUEST_URI‘], PHP_URL_PATH))) {
return false;
}
// Setup autoloading
require ‘init_autoloader.php‘;
// Run the application!
Zend\Mvc\Application::init(require ‘config/application.config.php‘)->run();
chdir:修改网站运行目录
define("ROOT_PATH", dirname(__DIR__)):定义常量,赋值当前网站运行的根目录,便于开发过程中引入其他目录的文件
require ‘init_autoloader.php‘:自动加载文件
config/application.config.php: 全局配置文件
Zend\Mvc\Application::init(require ‘config/application.config.php‘)->run():启动应用程序
2.2 添加全局配置文件application.config.php
在application.config.php文件内添加如下代码:
return array(
‘modules‘ => array(
‘Dao‘,
‘Sitefront‘,
),
‘module_listener_options‘ => array(
‘module_paths‘ => array(
‘./module‘,
‘./vendor‘
),
‘config_glob_paths‘ => array(‘config/autoload/{,*.}{global,local}.php‘)
)
);
‘modules‘ => array():模块配置,每一个模块都要添加于此,zf2才能够找到添加的模块。
‘module_listener_options‘ => array():设置模块事件监听
‘config_glob_paths‘ => array():设置全局配置文件,已便于自动加载相关配置。
2.3 添加初始化配置文件init_autoloader.php
在cisp/init_autoloader.php中添加如下代码:
if (file_exists(‘vendor/autoload.php‘)) {
$loader = include ‘vendor/autoload.php‘;
}
$zf2Path = false;
if (is_dir(‘vendor/ZF2/library‘)) {
$zf2Path = ‘vendor/ZF2/library‘;
} elseif (getenv(‘ZF2_PATH‘)) { // Support for ZF2_PATH environment variable or git submodule
$zf2Path = getenv(‘ZF2_PATH‘);
} elseif (get_cfg_var(‘zf2_path‘)) { // Support for zf2_path directive value
$zf2Path = get_cfg_var(‘zf2_path‘);
}
if ($zf2Path) {
if (isset($loader)) {
$loader->add(‘Zend‘, $zf2Path);
} else {
include $zf2Path . ‘/Zend/Loader/AutoloaderFactory.php‘;
Zend\Loader\AutoloaderFactory::factory(array(
‘Zend\Loader\StandardAutoloader‘ => array(
‘autoregister_zf‘ => true
)
));
}
}
if (!class_exists(‘Zend\Loader\AutoloaderFactory‘)) {
throw new RuntimeException(‘Unable to load ZF2. Run `php composer.phar install` or define a ZF2_PATH environment variable.‘);
}
该文件主要用于引入zf2的类文件,zf2的类文件可以放到服务器环境设置的目录里,也可以放到vendor里。
2.4 创建IndexController.php
在sitefront/Controller/IndexController.php中添加如下代码:
namespace Sitefront\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class IndexController extends AbstractActionController
{
public function indexAction()
{
echo ‘hello world!‘;
}
}
namespace Sitefront\Controller:指定命名空间
use Zend\Mvc\Controller\AbstractActionController:导入相关类库
lass IndexController extends AbstractActionController:indexController必须继承AbstractActionController,这是zf2的语法要求
public function indexAction:控制器的响应动作,indexAction是每个controller默认的动作。
2.5 添加模块文件
zf2使用模块系统将应用程序的主要代码集成到各个模块中去。同时应用模块还应该提供用于阴曹、错误异常、路由等全部配置信息。在模块文件里可以根据自己的需要去调整关于视图,路由、模型等一系列应用程序的设置,同时Module不单起到配置信息的作用,同时也是应用程序的必须中间件和桥梁,因为程序从前端控制器的分配及引导下进入的下层级就是Module类,通过解析Module类到达指定的资源位置。
添加sitefront/module.php的代码如下:
namespace Sitefront;
use Zend\Mvc\ModuleRouteListener;
use Zend\Mvc\MvcEvent;
class Module {
public function onBootstrap(MvcEvent $e) {
$e->getApplication()->getServiceManager()->get(‘translator‘); // 多国语言支持,这个语言文件需要自已添加
$eventManager = $e->getApplication()->getEventManager(); // 获取当前已经有事件管理器
$moduleRouteListener = new ModuleRouteListener(); // 新建一个路由模块监听器
$moduleRouteListener->attach($eventManager); // 附加事件管理器
}
public function getConfig() {
return include __DIR__ . ‘/config/module.config.php‘; // 引入模块配置文件
}
public function getAutoloaderConfig() {
return array(
‘Zend\Loader\StandardAutoloader‘ => array(
‘namespaces‘ => array(
__NAMESPACE__ => __DIR__ . ‘/src/‘ . __NAMESPACE__ // 导入自动加载空间
)
)
);
}
}
namespace sitefront:指定命名空间
use Zend\Mvc\ModeleRouteListener:导入zend类库
class Module:定义类
public function onBootStrap:启动模块,onBootStrap()将调用每个已经实现此功能的模块,并且用于执行轻量级任务和注册事件监听器等。
public function getConfig:获取此模块中的配置信息,返回一个符合zf2自动加载工厂规则的数组
public function getAutoloaderConfig:自动加载配置信息
zf2引入了namespeace空间的概念,空间的含义就相当于一个用来装东西的容器,而对于程序来说,空间可以理解为装类的容器,多有的类库都将被包含到一个指定的空间里面,zf2的文件搜索或路由也是通过空间来定位的,再者就是有了空间可以更好的区管理各种类,方便文件归类及使用。
2.6 module.config.php配置
在/sitefront/config/module.config.php中添加如下代码:
return array(
‘router‘ => array(
‘routes‘ => array(
‘home‘ => array(
‘type‘ => ‘Zend\Mvc\Router\Http\Literal‘,
‘options‘ => array(
‘route‘ => ‘/‘,
‘defaults‘ => array(
‘controller‘ => ‘Sitefront\Controller\Index‘,
‘action‘ => ‘index‘,
),
),
),
‘sitefront‘ => array(
‘type‘ => ‘segment‘,
‘options‘ => array(
‘route‘ => ‘/sitefront[/][:controller][/:action][/:id]‘,
‘constraints‘ => array(
‘controller‘ => ‘[a-zA-Z][a-zA-Z0-9_-]*‘,
‘action‘ => ‘[a-zA-Z0-9_-]*‘,
‘id‘ => ‘[A-Z0-9]+‘,
),
‘defaults‘ => array(
‘__NAMESPACE__‘ => ‘Sitefront\Controller‘,
‘controller‘ => ‘Index‘,
‘action‘ => ‘index‘
),
),
),
‘index‘ => array(
‘type‘ => ‘segment‘,
‘options‘ => array(
‘route‘ => ‘/index[/][:action][/]‘,
‘constraints‘ => array(
‘action‘ => ‘[a-zA-Z0-9_-]*‘,
),
‘defaults‘ => array(
‘controller‘ => ‘Sitefront\Controller\Index‘,
‘action‘ => ‘index‘
),
),
),
),
),
‘controllers‘ => array(
‘invokables‘ => array(
‘Sitefront\Controller\Index‘ => ‘Sitefront\Controller\IndexController‘,
),
),
// ‘service_manager‘ => array(
// ‘aliases‘ => array(
// ‘translator‘ => ‘MvcTranslator‘,
// ),
// ),
// ‘translator‘ => array(
// ‘locale‘ => ‘zh_CN‘,
// ‘translation_file_patterns‘ => array(
// array(
// ‘type‘ => ‘gettext‘,
// ‘base_dir‘ => __DIR__ . ‘/../language‘,
// ‘pattern‘ => ‘%s.mo‘,
// ),
// ),
// ),
‘module_layouts‘ => array(
‘Sitefront‘ => ‘sitefront/layout‘,
),
‘view_manager‘ => array(
‘display_not_found_reason‘ => true,
‘display_exceptions‘ => true,
‘doctype‘ => ‘HTML5‘,
‘not_found_template‘ => ‘error/404‘,
‘exception_template‘ => ‘error/index‘,
‘template_map‘ => array(
‘sitefront/layout‘ => __DIR__ . ‘/../view/layout/layout.phtml‘,
‘sitefront/index/index‘ => __DIR__ . ‘/../view/sitefront/index/index.phtml‘,
‘error/404‘ => __DIR__ . ‘/../view/error/404.phtml‘,
‘error/index‘ => __DIR__ . ‘/../view/error/index.phtml‘,
‘error/layout‘ => __DIR__ . ‘/../view/error/error_layout.phtml‘
),
‘template_path_stack‘ => array(
__DIR__ . ‘/../view‘,
),
),
);
到此,zend framework的配置基本完成。。。。。
---------------------------------------------------------------------------------------------------
未完待续