2013-11-21 47 views
0

我刚刚将我的第一个composer.json包添加到了我创建的API。创建我的第一个composer.json文件

https://github.com/elvanto/api-php

这是我的文件的副本

{ 
    "name": "elvanto/api-php", 
    "type": "library", 
    "description": "API PHP Library for elvanto church management software.", 
    "keywords": ["elvanto", "api"], 
    "homepage": "https://github.com/elvanto/api-php/", 
    "license": "MIT", 
    "authors": [ 
     { 
      "name": "Ben Sinclair", 
      "homepage": "http://elvanto.com", 
      "role": "Developer" 
     } 
    ], 
    "require": { 
     "php": ">=5.3.0" 
    }, 
    "autoload": { 
     "classmap": [ 
      "." 
     ] 
    } 
} 

当我试图用Composer来安装包我

终端
-$ composer install 
Loading composer repositories with package information 
Installing dependencies (including require-dev) 
Nothing to install or update 
Generating autoload files 

在我的供应商/文件夹中得到这个,它加载自动加载文件,但不包括我的班级文件:

autoload.php 
composer/autoload_classmap.php 
composer/autoload_namespaces.php 
composer/autoload_real.php 
composer/ClassLoader.php 

我做错了什么?我试图改变composer.json文件到以下(这是我见过的其他包做),但我得到了一个完全不同的错误:

"autoload": { 
    "classmap": [ 
     "elvanto_API.php" 
    ] 
} 

错误是:

[RuntimeException] 
Could not scan for classes inside "elvanto_API.php" which does not appear to be a file nor a folder 

我想我'm close我只需要在这一点上的一个小方向:)

回答

1

你第一次就明白了。 classmap部分只是可以找到想要自动加载的类的目录列表。您无需在此部分中指定单个类名称。

如果你看看你产生供应商/作曲/ autoload_classmap.php文件,你会看到它捡了起来:

$ cat vendor/composer/autoload_classmap.php 
<?php 

// autoload_classmap.php @generated by Composer 

$vendorDir = dirname(dirname(__FILE__)); 
$baseDir = dirname($vendorDir); 

return array(
    'elvanto_API' => $baseDir . '/elvanto_API.php', 
); 

现在你可以使用这个类在自动装载风格:

<?php 

require_once 'vendor/autoload.php'; 

$test = new elvanto_API();