ZendFramewok在一个文件夹中


ZendFramewok in one folder

关于ZendFramework:的几个问题

  1. 创建新项目时,是否可以将所有内容都放在一个文件夹中,如CodeIgniter。那么一个应用程序和一个系统文件夹,或者类似的东西?

  2. 当我用ZendFramework完成一个项目时,把它放在服务器上(不使用控制台共享主机)有多难?

  3. 在开发时,我可以在没有终端的情况下使用ZendFramework吗?假设我正在使用FTP客户端创建一个新类?

提前感谢!:)

Zend Framework与任何其他框架(CakePHP、CodeIgniter、Symfony…)一样,您可以通过CLI命令(项目生成器)或手动设置项目文件夹和include路径来设置新项目。

最佳实践是使用类似于以下形式的手动方法:

/project/
/project/vendors/...  - all vendor libraries you may use in your project
/project/lib/... - your common libraries (if you have some)
/project/application/... - application files like controllers, views, temp folders etc...

示例:

/project/vendors/Zend/... (zend framework)
/project/vendors/Symfony/... (symfony framework)
/project/lib/MyLib/... (your lib)
/project/application/Bootstrap.php
/project/public_html/index.php

index.php片段:

<?php
define('VENDORS_PATH', '/project/vendors');
define('LIB_PATH', '/project/lib');
set_include_path(
    LIB_PATH . PATH_SEPARATOR . 
    VENDORS_PATH . PATH_SEPARATOR . 
    get_include_path()
);
// setup class autoloading
require_once VENDORS_PATH . '/Zend/Loader/Autoloader';
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->setDefaultAutoloader(create_function('$class', "include str_replace('_', '/', '$class) . '.php';"));
$autoloader->setFallbackAutoloader(true);
// run application, include Symfony or MyLib files...

至于在生产服务器上迁移项目,您应该首先使用环境设置设置项目配置。

setup.ini示例:

[production]
database.hostname = localhost
database.username = username
database.password = password1
database.dbname = live_db
[staging:production]
database.hostname = localhost
database.username = root
database.password = password2
database.dbname = local_db

使用apache.htaccess文件可以轻松地设置要加载的配置的环境:

本地环境中的.htaccess文件:

SetEnv APPLICATION_ENV staging

生产环境中的.htaccess文件:

SetEnv APPLICATION_ENV production

使用环境变量的index.php代码段:

<?php
...
define('APPLICATION_ENV', getenv('APPLICATION_ENV'));
$config = new Zend_Config_Ini(APPLICATION_LIB . '/setup.ini', APPLICATION_ENV);
...