2

我有一个需要 Zend 类的 php 脚本。它可以在浏览器中运行,但是在命令提示符下通过命令行运行脚本时会出现错误。

require_once 'Zend/Loader.php'; // It can work in a browser but failed by command lines

我也试过:

require_once 'C:\wamp\www\zf_project\library\Zend\Loader.php';

ini_set('include_path', 
ini_get('include_path') . 
PATH_SEPARATOR . 
dirname(__FILE__). DIRECTORY_SEPARATOR. 'library');

但是失败了。

然后我需要加载类:

Zend_Loader::loadClass('Zend_Rest_Client');

如何使用 Zend 类?

提前致谢!

4

2 回答 2

2

如果您只想通过自动加载来使用 Zend 类——而不引导整个应用程序——那么您需要在 ZF1 中做所有事情(您似乎正在使用它):

<?php
// if ZF is not in your include path to begin with
set_include_path(implode(PATH_SEPARATOR, array('/path/to/zend/library', get_include_path())));
include 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance(); // registers autoloader

// now can access Zend classes without having to include
$client = new Zend_Http_Client(...);

另请注意,您不需要调用Zend_Loader::loadClass来加载类,当您在普通代码中使用类名时,自动加载器会自动完成,例如通过调用构造函数,就像我在上面所做的那样。

于 2013-11-26T22:32:40.617 回答
0

当您从 Web 浏览器运行它时,包含路径在 public/index.php 中设置,然后引导应用程序。同样,您可以复制 public/index.php(例如 setup.php)并将其包含在您的命令行代码中。此外,将您需要的引导位复制到该文件中。

请注意,在 ZF2 中有一个“控制台路由”,可让您创建 MVC 命令行脚本。

这是我的 setup.php,请注意我如何使用“new Zend_Config”加载配置。只需在要从命令行(控制台)运行的文件中“要求”此文件。

编辑:您必须在“/relative/path/to/application/”中正确设置 APPLICATION_PATH。

<?php

error_reporting(E_ALL & ~E_NOTICE | E_STRICT);
// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/relative/path/to/application/'));

// Define application environment
define('APPLICATION_ENV', 'development');
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(),
)));

require_once 'Zend/Application.php';

$app = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH  . '/configs/application.ini');
$res = $app->getOption('resources');
$config = new Zend_Config($res);
于 2013-11-25T22:22:41.410 回答