0

关于 ZendFramework 的几个问题:

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

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

  3. 开发时可以不用终端使用 ZendFramework 吗?假设我正在使用 FTP 客户端创建新课程?

提前致谢!:)

4

1 回答 1

1

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

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

/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);
...
于 2012-07-31T11:48:17.043 回答