我目前正在尝试为Laravel构建我的第一个API包装器,但在自动加载实际的PHP-Lirbary时遇到了一些问题。
当我尝试在视图中访问窗口小部件时收到以下错误。
错误:
ErrorException (E_ERROR)
Class 'Uploadcare\Api' not found
查看
{!! app()->uploadcare->widget->getInputTag('file_input') !!}
我的包ServiceProvider看起来像这样。
UploadcareServiceProvider
use Illuminate\Support\ServiceProvider;
use Uploadcare\Api as Uploadcare;
class UploadcareServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
$this->publishes([
__DIR__.'/config/uploadcare.php' => config_path('uploadcare.php'),
]);
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
$this->app->singleton('uploadcare', function($app) {
$publicKey = config('uploadcare.public_key');
$privateKey = config('uploadcare.private_key');
return new Uploadcare($publicKey, $privateKey);
});
}
/**
* Get the services provided by the provider.
*
* @return array
*/
public function provides()
{
return [
Uploadcare::class,
];
}
}
在我的包中,composer.json文件需要包。
包composer.json
"require": {
"uploadcare/uploadcare-php": "^2.1"
}
在软件包的Vendor文件夹中,我能够找到 Uploadcae \ Api 类,所以我不确定为什么我收到此错误。
包composer.json
{
"name": "company/uploadcare",
"description": "An uploadcre integration for Laravel",
"type": "library",
"authors": [
{
"name": "Stan Barrows",
"email": ""
}
],
"require-dev": {
"orchestra/testbench": "^3.5",
"phpunit/phpunit": "^6.3"
},
"autoload": {
"psr-4": {
"Company\\Uploadcare\\": "src/"
}
},
"autoload-dev": {
},
"extra": {
"laravel": {
"providers": [
"Company\\Uploadcare\\UploadcareServiceProvider"
]
}
},
"require": {
"uploadcare/uploadcare-php": "^2.1"
}
}
主项目composer.json文件
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"repositories": [
{
"type": "path",
"url": "packages/company/uploadcare"
}
],
"require": {
"php": ">=7.0.0",
"fideloper/proxy": "~3.3",
"laravel/framework": "5.5.*",
"laravel/tinker": "~1.0",
"laravelnews/laravel-twbs4": "^1.3",
"ramsey/uuid": "^3.7"
},
"require-dev": {
"filp/whoops": "~2.0",
"fzaninotto/faker": "~1.4",
"laravel/dusk": "^2.0",
"mockery/mockery": "~1.0",
"phpunit/phpunit": "~6.0",
"symfony/thanks": "^1.0"
},
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"Genusshaus\\": "app/",
"Smart6ate\\Roles\\": "packages/company/roles/src",
"Smart6ate\\Uploadcare\\": "packages/company/uploadcare/src/"
},
"files": ["tests/Helpers/functions.php"]
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"extra": {
"laravel": {
"dont-discover": [
]
}
},
"scripts": {
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate"
],
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover"
]
},
"config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true
}
}