PHP Zend library results in Fatal Error: class 'Zend\[whatever]' not found

PHP Zend library results in Fatal Error: class 'Zend\[whatever]' not found

我希望有人能发现我忘记做的事情。这是我的步骤:

  1. 下载 ZendFramework-2.3.5 并将其解压到 /usr/share.

  2. 在我的 php.ini 文件中更新了 include_path 以根据 INSTALL.md 包含“/usr/share/ZendFramework-2.3.5/library”,并且重新启动 Apache 以确认路径已设置(现在“.:/usr/share/php:/usr/share/ZendFramework-2.3.5/library”)。

  3. 在我的网络文档根目录中创建了一个测试脚本(以 class 'CamelCaseToUnderscore' 为例):

    使用Zend\Filter\Word\CamelCaseToUnderscore;

    $filter = new CamelCaseToUnderscore();

    echo $filter->filter('BigsAndLittles');

...我收到致命错误 "class 'zend\filter\word\camelcasetoseparator' not found"。

为了像这样使用 Zend classes,我是否需要做一些额外的配置或创建一个自动加载器或其他东西来找到它们?看起来这应该有效。如果我在 require_once 语句中包含 CamelCaseToUnderscore.php 文件,则会收到一个致命错误,指出它的父 class 不存在 (CamelCaseToSeparator.php)。我错过了什么?

您可以使用 require 'Zend/Mvc/Application.php' 来测试您的包含路径是否正确,但您需要一个自动加载器:

http://framework.zend.com/manual/current/en/modules/zend.loader.standard-autoloader.html.

您可以在此处找到示例(第 18-20 行): https://github.com/zendframework/zf2/blob/master/demos/Zend/Feeds/consume-feed.php

我强烈建议使用 composer,因为它可以为您节省大量排除包含路径问题的时间,而且还可以让您更好地管理版本。它使其他开发人员更容易部署您的代码。

从 composer 开始非常简单,只需安装并创建 composer.json:

https://getcomposer.org/doc/01-basic-usage.md#composer-json-project-setup

运行:

composer require zendframework/zendframework

Composer 会将所有库下载到 vendor 文件夹并生成一个自动加载器,您所要做的就是包含

require 'vendor/autoload.php';

https://getcomposer.org/doc/01-basic-usage.md#autoloading

最流行的 PHP 框架使用 Composer 来管理依赖项: https://github.com/zendframework/zf2/blob/master/composer.json https://github.com/symfony/symfony/blob/2.7/composer.json