对于我的生活,我无法弄清楚如何设置Zend Framework

时间:2013-05-08 17:23:54

标签: php zend-framework

对不起,我知道有很多这方面的教程,我尝试过但没有用。

我在c:中安装了WAMP。它的文档根目录是d:/ Sites / Wamp。我已经能够从那里加载常规的html,php,wordpress和Code Igniter。

使用Code Igniter,它非常简单,因为我只需要将库粘贴到d:/ sites / Wamp文件夹并配置数据库。

使用Zend框架,我想做类似的事情,我只需要将一些文件复制到Wamp文件夹中。那可能吗?我现在想避免使用Zend Tool。有些人可以指出我正确的方向,请使用教程或要复制的文件。

3 个答案:

答案 0 :(得分:2)

如果出于某种原因你不想使用Zend_Tool,这里是默认的基本应用程序结构:

project
|-- application
|   |-- Bootstrap.php
|   |-- configs
|   |   `-- application.ini
|   |-- controllers
|   |   |-- ErrorController.php
|   |   `-- IndexController.php
|   |-- models
|   `-- views
|       |-- helpers
|       `-- scripts
|           |-- error
|           |   `-- error.phtml
|           `-- index
|               `-- index.phtml
|-- library
|   `--Zend //zend framework  goes here ***
|-- public
|   |-- .htaccess
|   `-- index.php
`-- tests
    |-- application
    |   `-- bootstrap.php
    |-- library
    |   `-- bootstrap.php
    `-- phpunit.xml

在Zend Framework下载中,您将找到library文件夹,在那里您将找到Zend文件夹。将整个Zend文件夹复制到project/library,以便最终为project/library/Zend/

您的默认.htaccess看起来像属于公共文件夹:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

同样在您的公共文件夹中将是您的index.php,并且看起来像是:

<?php
//the next line is optional and is only to remove the index.php from the url
//$_SERVER["REQUEST_URI"] = str_replace('index.php', '', $_SERVER["REQUEST_URI"]);
// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    get_include_path(),
)));

/** Zend_Application */
require_once 'Zend/Application.php';

// Create application, bootstrap, and run
$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
            ->run();
project/application/configs/上的

将显示application.ini文件,并且在开头看起来像:

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

默认Bootstrap.php如下:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
}

默认indexController如下:

class IndexController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        // action body
    }
}

最后默认的错误控制器如下所示:

class ErrorController extends Zend_Controller_Action
{

    public function errorAction()
    {
        $errors = $this->_getParam('error_handler');

        switch ($errors->type) {
            case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE:
            case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
            case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:

                // 404 error -- controller or action not found
                $this->getResponse()->setHttpResponseCode(404);
                $this->view->message = 'Page not found';
                break;
            default:
                // application error
                $this->getResponse()->setHttpResponseCode(500);
                $this->view->message = 'Application error';
                break;
        }

        $this->view->exception = $errors->exception;
        $this->view->request   = $errors->request;
    }
}

现在您应该能够在URL http://localhost/project/public访问您的项目,Zend Framework应用程序的所有请求都将通过index.php进行路由。

我真的推荐Zend_Tool,它是出于某种原因而建立的。

如果您还需要...... RTM所有这些都是正确的。

答案 1 :(得分:0)

确保你在apache中设置一个虚拟主机就是我在WAMP安装时只需要一个测试环境:

<VirtualHost *:80>
    ServerName zend.local
    DocumentRoot "c:/wamp/www/zend/public"
    SetEnv APPLICATION_ENV "development"
    <Directory "c:/wamp/www/zend/public">
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

显然我还在主机文件中添加了一行,将zend.local指向127.0.0.1

答案 2 :(得分:0)

我建议您关注Rob Allen的教程,您可以在http://akrabat.com/zend-framework-tutorial/找到该教程。这将建议使用Zend Tool来设置骨架应用程序,但由于您已经说过您不想这样做,您可以从他的网站下载完成的代码并阅读教程以了解它是如何组合在一起的。