zend framework2学习(二)项目配置

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

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

未完待续

时间: 2024-12-29 07:35:01

zend framework2学习(二)项目配置的相关文章

Jetty学习二:配置概览-怎么配置Jetty

Jetty POJO配置 Jetty的核心组件是Plain Old Java Objects(POJOs):配置Jetty的大部分工作就是在Jetty POJOs上的初始化.装配和设置域的处理,你能通过以下的方式来实现:  1)直接通过Java代码初始化和装配Jetty对象.这个在后面Embedding Jetty讲. 2)用Jetty XML配置(一个控制反转(IoC)框架)初始化和装配Jetty对象.etc/jetty.xml文件是基本的Jetty XML配置文件,但有一些其它的etc/je

zend framework2 实现多数据库配置使用的另一种方法

相比之前我发过的第一种在zend framework2中实现多数据库配置使用的方法:http://blog.csdn.net/a437629292/article/details/41121455:我更喜欢一下这种方法! 别急,听我慢慢道来. 1. 问题:第一种方法(参见上述连接),是没实例化一个model,都去实例化一个数据库适配器,这样是不是有点浪费资源呢? 所以,本人一直不满意这种实现方式,一直在寻找如何能一个请求(无论包含多少个model的调用),甚至从项目启动后,就只实例化一次数据库适

【git学习二】git基础之git管理本地项目

1.背景 git基础打算分两部分来说,一部分是对于本地项目的管理,第二部分是对于远程代码仓库的操作.git执行本地项目管理包括对于相关文件的追踪,暂存区的比较分析,提交,撤销等功能. 2.本地项目管理 首先mkdir一个文件夹,叫做GitTestFile,然后执行下面代码,创建git的管理配置 git init 接着加入如下代码,git add . ,把项目加入跟踪队列 git add . 可以用git status查看状态 加入readme文件,vim readme.txt .输入git st

使用亚马逊的云服务器EC2做深度学习(二)配置Jupyter Notebook服务器

这是<使用亚马逊的云服务器EC2做深度学习>系列的第二篇文章. (一)申请竞价实例  (二)配置Jupyter Notebook服务器  (三)配置TensorFlow Jupyter Notebook是Python中的一个开源编辑器.它的主界面就是一个网页,可以在浏览器中远程执行程序. 同时它可以方便地混杂代码和程序的说明,有许多TensorFlow的教程就是用Jupyter Notebook来编写的. 出于安全的考虑,Jupyter Notebook默认只能在本地访问,如果要远程访问需要进

CentOS 7 学习(二) 配置Nginx反向代理

Nginx可以通过php-fpm来运行PHP程序,也可以转向apache,让apache调用php程序来运行. 不过对于Nginx来说,其反向代理功能更值得研究,下面配置一下让Nginx反向代理3台Apache服务器,同时配置memcache作为session保存路径1.环境 CentOS 7 ,192.168.1.14, Apache 80, Nginx 808 CentOs 7 ,192.168.1.12,Apache 80 Ubuntu 14.04 Server, 192.168.1.16

个人第一个开源分布式项目distributeTemplate的实现二 分布式配置以及上下文的维护同步

我们实现分布式 也是按照 这样一步一步来的,首先是公用的资源对象,第一个必须的公用资源 对象是配置,这配置交给用户外部填写 手动配置 并能维持同步 更新 所以需要一个配置对象 维护在内存里面,需要事件驱动监听配置文件的变化情况 ok下面来 看看代码是怎么做的 ,首先 配置 有多重配置方式 ini conf prop xml 各种方式本质上 我们分布式就是要各台主机 自己所在的节点 都能知道我在网络上情况,或者所可以找到像zookeeper 只要知道或者找到了 才能进行以后的通讯同步 我们为了能够

zend framework2 之入口文件详解以及原理解析

zend framework2 之入口文件详解 转载请注明出处,尊重原创:http://blog.csdn.net/a437629292/article/details/41545297,谢谢! 一.基本配置解析 1. 详细配置: 如下代码: <?php // 定义程序目录 defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); // D

深度学习主机环境配置: Ubuntu16.04 + GeForce GTX 1070 + CUDA8.0 + cuDNN5.1 + TensorFlow

深度学习主机环境配置: Ubuntu16.04 + GeForce GTX 1070 + CUDA8.0 + cuDNN5.1 + TensorFlow 最近在公司做深度学习相关的学习和实验,原来一直在自己的电脑上安装虚拟机跑,速度实在太慢,主机本身性能太弱,独显都没有,物理安装Ubuntu也没多大意义,所以考虑用公司性能最强悍的游戏主机(i7 6700+GTX 1070) 做实验,这台主机平时是用来跑HTC VIVE的,现在归我用了o(*≧▽≦)ツ. 原本以为整个一套安装下来会很顺利,一路火花

zend framework学习笔记(windows下)

zend framework安装 下载地址:https://framework.zend.com/downloads/archives 修改php.ini文件,将library目录添加到include_path路径中 *如没有权限修改php.ini文件,可以创建.htaccess文件中,在文件中添加php_value include_path ".;library路径",将该文件放在服务器的文档根目录 配置 ①将 php.exe目录添加到系统环境变量中 将zend framework目