And*_*708 4 php autoloader zend-framework2 composer-php
以前我只使用与Zend Framework 2一起使用命名空间的第三方库.现在我需要使用不使用命名空间的库,而我似乎无法使其工作.我通过Composer安装它,它安装在vendor目录中.我试图使用它如下:
$obj = new \SEOstats();
结果是致命错误,表明找不到该类.我试图手动配置StandardAutoloader,但到目前为止没有任何运气.我认为通过Composer安装时会自动为我完成自动加载,但我想不是没有命名空间的情况?我没有看到Composer生成的自动加载文件中对库的任何引用.我想我必须手动完成 - 但是如何?
提前致谢.
您可以使用文件和类映射键.
作为一个例子,考虑一下这个composer.json:
{
"require": {
"vendor-example/non-psr0-libraries": "dev-master",
},
"autoload":{
"files": ["vendor/vendor-example/non-psr0-libraries/Library01.php"]
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用文件密钥,您可以使用
$lib = new \Library01();
Run Code Online (Sandbox Code Playgroud)
需要加载包含类的多个文件时,请使用classmap键.composer.json将是:
{
"require": {
"vendor-example/non-psr0-libraries": "dev-master",
},
"autoload":{
"classmap": ["vendor/vendor-example/non-psr0-libraries/"]
}
}
Run Code Online (Sandbox Code Playgroud)
Composer将扫描指定目录中的.php和.inc文件,为每个文件/类配置自动加载器.
有关详细信息,请查看http://getcomposer.org/doc/04-schema.md#files和http://getcomposer.org/doc/04-schema.md#classmap
如果您在创建对象时位于命名空间下,则必须使用"\"(根命名空间),否则您将使用当前命名空间下的Library01类(如果您有一个,如果您没有,那么您将使用得到一个错误).
| 归档时间: |
|
| 查看次数: |
2947 次 |
| 最近记录: |