码迷,mamicode.com
首页 > 其他好文 > 详细

zend framework2学习(二)项目配置

时间:2016-06-17 12:30:27      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

项目的基本环境已经调通,下面开始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的配置基本完成。。。。。

---------------------------------------------------------------------------------------------------

未完待续

zend framework2学习(二)项目配置

标签:

原文地址:http://www.cnblogs.com/simplelan/p/5591758.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!