php - ZF2 : autoloading libraries without namespaces

标签 php zend-framework2 composer-php autoloader

以前我只使用第三方库,这些库将命名空间与 Zend Framework 2 一起使用。现在我需要使用 a library不使用命名空间,我似乎无法让它工作。我通过 Composer 安装它,并且它安装在 vendor 目录中。我正在尝试按如下方式使用它:

$obj = new\SEOstats();

结果是一个 fatal error ,表示找不到该类。我曾尝试手动配置 StandardAutoloader,但到目前为止还没有成功。我以为通过 Composer 安装时会自动为我完成自动加载,但我想如果没有 namespace ,情况并非如此?我没有在 Composer 生成的自动加载文件中看到任何对库的引用。我想我必须手动完成 - 但怎么做?

提前致谢。

最佳答案

您可以使用 filesclassmap 键。

举个例子,考虑这个 composer.json:

{
    "require": {
        "vendor-example/non-psr0-libraries": "dev-master",
    },
    "autoload":{
        "files": ["vendor/vendor-example/non-psr0-libraries/Library01.php"]
    }
}

使用你可以使用的文件 key

$lib = new \Library01();

当您需要加载多个包含类的文件时,请使用类映射键。 composer.json 将是:

{
    "require": {
        "vendor-example/non-psr0-libraries": "dev-master",
    },
    "autoload":{
        "classmap": ["vendor/vendor-example/non-psr0-libraries/"]
    }
}

Composer 将扫描指定目录中的 .php.inc 文件,为每个文件/类配置自动加载器。

更多信息您可以查看http://getcomposer.org/doc/04-schema.md#fileshttp://getcomposer.org/doc/04-schema.md#classmap

创建对象时如果在命名空间下,必须使用“\”(根命名空间),否则会使用当前命名空间下的Library01类(有则无你会得到一个错误)。

关于php - ZF2 : autoloading libraries without namespaces,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16366663/

相关文章:

json - Paypal Json上的 Composer 错误

php - 如何减少 TTFB(到第一个字节的时间)响应?

php - 错误 : mysqlnd cannot connect to MySQL 4. 1+ 使用旧的不安全身份验证

php - 电子邮件未在 magento 中发送新订单

php - 接收到的数据正确时,Doctrine2 hydration 不正确

zend-framework2 - 按照添加的顺序循环遍历表单元素

installation - 使用composer在TYPO3 11中安装介绍包

php - CakePHP 错误 : cake_core_ cache was unable to write 'cake_dev_en-us' on Centos

javascript - ZF2- 如何在 Zend Form 上使用 Ajax 设置依赖下拉列表

composer-php - 通过 Composer 提取 silverstripe/upgrader 的 zip 文件时出错