2013-05-03 22 views
3

以前我只使用第三方库和Zend Framework 2一起使用命名空间。现在我需要使用不使用命名空间的a library,我似乎无法使它工作。我通过Composer安装它,并且它安装到vendor目录中。我想,如下所示使用它:ZF2:没有命名空间的自动加载库

$obj = new \SEOstats();

结果表明类找不到一个致命的错误。我试图手动配置StandardAutoloader,但目前为止没有任何运气。我认为在通过Composer进行安装时会自动为我自动加载,但是我想这不是没有名称空间的情况?我还没有看到Composer生成的自动加载文件中的库的任何引用。我想我必须手动做 - 但是怎么做?

在此先感谢。

回答

8

您可以使用文件classmap键。

例如,考虑这个composer.json:

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

使用文件的关键,那么你可以使用

$lib = new \Library01(); 

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

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

作曲家将扫描.PHP。公司文件指定的目录内配置为每个文件/类自动加载。

欲了解更多信息,您可以检查http://getcomposer.org/doc/04-schema.md#fileshttp://getcomposer.org/doc/04-schema.md#classmap

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