第一次使用PHP的作曲家

时间:2014-06-13 09:04:42

标签: php composer-php

我试图用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。它会加载其他文件,例如symphonysebastianguzzle等。

我做错了吗?此JSON是否未加载tumblr.php,而是加载其依赖项?

2 个答案:

答案 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的正确方法:

  1. 通过拥有主目录(可能已包含文件)来启动项目。
  2. 运行composer init以轻松创建初始composer.json文件。
  3. 系统将询问您是否要包含依赖项。您可以回答“是”并添加tumblr/tumblr作为项目的依赖项。
  4. 或者,如果您已经有composer.json,则可以致电composer require tumblr/tumblr:~0.1

    要在代码中使用库,您必须包含文件vendor/autoload.php,然后可以根据文档创建所有类。