我试图用PHP的作曲家来解决问题。特别是,我尝试加载此project and its dependencies.
我在必要的文件夹(我的应用程序的根目录)中安装composer,因此创建了composer.phar
。
我确保在同一目录中为项目提供了正确的JSON文件:
{
"name": "tumblr/tumblr",
"description": "Official Tumblr PHP Client",
"keywords": ["tumblr", "api", "sdk", "gif"],
"homepage": "https://github.com/tumblr/tumblr.php",
"authors": [{
"name": "John Crepezzi",
"email": "john.crepezzi@gmail.com",
"homepage": "https://github.com/seejohnrun",
"role": "developer"
}],
"license": "Apache-2.0",
"type": "library",
"require": {
"eher/oauth": "1.0.*",
"guzzle/guzzle": ">=3.1.0,<4"
},
"require-dev": {
"phpunit/phpunit": "*"
},
"autoload": {
"psr-0": {
"Tumblr\\API": "lib"
}
}
}
然后我将它写在适当的目录中,终端:php composer.phar install
。
但是,这不会加载tumblr.php
。它会加载其他文件,例如symphony
,sebastian
,guzzle
等。
我做错了吗?此JSON是否未加载tumblr.php
,而是加载其依赖项?
答案 0 :(得分:1)
Composer会生成一个文件vendor/autoload.php
。如果你想在你自己的代码中使用你在Composer中安装的任何东西,你只需要require_once 'vendor/autoload.php'
然后只需在你想要的任何Composer安装的库中调用任何代码;自动加载器将负责查找并包含必要的文件,而无需担心vendor
文件夹中的特定目录。
composer.json文件中的autoload
条目存在,因此任何库都可以指定其文件应如何自动加载的详细信息。您通常不必在应用程序中自行使用它。如果您愿意,可以使用此条目为您自己的代码“免费”添加自动加载功能。但是,再次,您不需要添加它来使用任何已安装的依赖项,这些依赖项应该已经正确配置,以便在各自的composer.json文件中进行自动加载。
答案 1 :(得分:0)
如果您显示的JSON数据位于您的OWN项目中,那么您做错了。 JSON数据来自最初的Tumblr项目,你不应该将它复制到你的项目中,因为你发现它并不会真正帮助你使用Tumblr客户端。
使用Composer的正确方法:
composer init
以轻松创建初始composer.json
文件。tumblr/tumblr
作为项目的依赖项。或者,如果您已经有composer.json
,则可以致电composer require tumblr/tumblr:~0.1
。
要在代码中使用库,您必须包含文件vendor/autoload.php
,然后可以根据文档创建所有类。