我正在尝试使用composer将第三方库自动加载到我的ZF2应用程序中 - 特别是Google api。 我在this post上关注了SO,编辑了我的composer.json
"autoload": {
"psr-0": {"Googleanalytics\\": "vendor/google-api-php-client/src/"}
}
并运行更新。 我可以在composer / autoload_namespaces.php中看到该条目
'Googleanalytics\\' => array($vendorDir . '/google-api-php-client/src'),
但是当我尝试在该目录中实例化一个类时,我仍然遇到致命的错误类(Google_Client.php)。
我缺少什么想法? 我将该文件包含在我正在尝试使用它的类中:
use Googleanalytics\Google_Client;
我已经尝试重命名目录,以防 - 如果是问题,并且在该目录中创建一个简单的test.php文件,以防类名(Google_Client.php)中的下划线出现问题,但仍然是同样的错误
我需要添加到我的ZF2应用程序中以自动加载此库吗? 另请注意,我决定不使用ZendGdata,因为此组件似乎不再维护。 提前致谢
答案 0 :(得分:1)
软件的自动加载定义不应包含任何供应商模块的自动加载定义。将其移至您用于包含软件的包定义。
在其他新闻中:如果它不能与PSR-0一起使用,那么classmap自动加载器应该处理它。
如何为不提供composer.json的存储库创建软件包
基本上你只需要几条信息:
如果是“google-api-php-client”,则a)存储库的URL为http://google-api-php-client.googlecode.com/svn/
,b)最新版本号为0.6.7
,A)下载URL该包的内容是http://google-api-php-client.googlecode.com/files/google-api-php-client-0.6.7.tar.gz
。
现在你把它填入这个“模板”:
"repositories": [
{
"type": "package",
"package": {
"name": "name from (2)",
"version": "version from (1)",
"dist": {
"url": "URL from (4/2)",
"type": "tar or zip according to download"
},
"source": {
"url": "URL from (4/1)",
"type": "svn",
"reference": "tags/version from (1)"
},
"autoload": {
"classmap": ["path from (3)"]
}
}
}
]
然后您可以在要求中要求确切的包裹:"require": { "name from (2)": "version from (1)" }
对于谷歌套餐,你使用它基本上可以让你使用它:
"require": {
"google/google-api-php-client":"*"
},
"repositories": [
{
"type": "package",
"package": {
"name": "google/google-api-php-client",
"version": "0.6.7",
"dist": {
"url": "http://google-api-php-client.googlecode.com/files/google-api-php-client-0.6.7.tar.gz",
"type": "tar"
},
"source": {
"url": "http://google-api-php-client.googlecode.com/svn/",
"type": "svn",
"reference": "tags/0.6.7"
},
"autoload": {
"classmap": ["src/"]
}
}
}
]
添加这个主要是样板文件的好处是你可以免费下载软件。您无需关心如何手动下载,解压缩和安装软件包。您确实将此软件的自动加载信息添加到您自己的composer.json中,但它包含在您要使用的软件的软件包定义中,它不包含在您自己软件的自动加载区域中。
您也不必担心Composer会意外删除手动下载的软件包。
答案 1 :(得分:1)
对于任何想要使用作曲家向ZF2添加第三方库的人来说,以下是适用于我的步骤。
将以下行添加到composer.json
“autoload”:{ “classmap”:[“vendor / PATH TO LIBRARY”] }
运行php composer.phar update
然后你应该看到composer文件夹中文件中第三方库中的所有类:composer / autoload_classmap.php
在zf2应用程序中实例化库中的任何类时,不要忘记在类名前加上\。 例如:
$client = new \Google_Client();