Я хотел был бы загрузить serviceprovider от моей папки поставщика. Я на самом деле добавил поставщик в мой проектКак загрузить пользовательский поставщик услуг в Laravel
Теперь в одной из папок
vendor/
- paypal/
- rest-api-sdk-php/
- config/
- paypal.php
- docs/
- lib/
- PayPal/
- PayPalConfigServiceProvider.php
- sample/
- test/
- composer.json
Как вы можете видеть, что я добавил некоторые элементы на поставщике. Я добавил config
папку и файл конфигурации под ним именно paypal.php
, а также под Lib папку я добавил PayPalConfigServiceProvider.php
Полный путь поставщика услуг является my_project/vendor/paypal/rest-api-sdk-php/lib/PayPalConfigServiceProvider.php
Теперь я хотел бы добавить, что PayPalConfigServiceProvider так, что когда я бегу композитор обновления или что-то, что PayPalConfigServiceProvider скопирует файл конфигурации в папку myproject\config
. Поэтому я добавил
'providers' => [
Illuminate\Validation\ValidationServiceProvider::class,
Illuminate\View\ViewServiceProvider::class,
Illuminate\Html\HtmlServiceProvider::class,
PayPal\PayPalServiceProvider::class,
]
на config/app.php в массиве поставщиков. Но теперь, когда я пытаюсь запустить PHP ремесленника я получаю эту ошибку
PHP Fatal error: Class 'PayPal\PayPalServiceProvider' not found in myproject/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php
Так я предположил, что это что-то делать с моей composer.json на моем корневом каталоге, и это содержание его
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"php": ">=5.5.9",
"laravel/framework": "5.1.*",
"illuminate/html": "^5.0",
"doctrine/dbal": "^2.5",
"paypal/rest-api-sdk-php": "*"
},
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~4.0",
"phpspec/phpspec": "~2.1"
},
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
"autoload-dev": {
"classmap": [
"tests/TestCase.php"
]
}
}
Кажется, что paypal уже включен сейчас. Я не уверен, что мне нужно добавить для его распознавания. Мне просто нужно мое PayPalServiceProvider быть инициализирован так, что этот код будет работать
PayPalServiceProvider.php
namespace PayPal;
use Illuminate\Support\ServiceProvider;
class PayPalServiceProvider extends ServiceProvider {
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
// TODO: Implement register() method.
}
public function boot()
{
$this->mergeConfigFrom(__DIR__ . '../config/paypal.php', 'paypal');
}
}
Я также проверил PAYPAL папку поставщика и проверил его composer.json и вот содержание
{
"name": "paypal/rest-api-sdk-php",
"description": "PayPal's PHP SDK for REST APIs",
"keywords": ["paypal", "payments", "rest", "sdk"],
"type": "library",
"license": "Apache2",
"homepage": "http://paypal.github.io/PayPal-PHP-SDK/",
"authors": [
{
"name": "PayPal",
"homepage": "https://github.com/paypal/rest-api-sdk-php/contributors"
}
],
"require": {
"php": ">=5.3.0",
"ext-curl": "*",
"ext-json": "*"
},
"require-dev": {
"phpunit/phpunit": "3.7.*"
},
"autoload": {
"psr-0": {
"PayPal": "lib/"
}
}
}
Я знаю, что всегда можно добавить что-то вроде этого на composer.json на моем корневом каталоге
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/",
"PayPal\\": "vendor/paypal/rest-api-sdk-php/lib",
}
}
И это будет работать, когда я запустил композитор dumpautoload. Но я не хочу такого подхода, я вижу много библиотек, но не из них делал что-то вроде этого. Есть ли какой-нибудь подход, когда я могу загрузить свой сервисный сервис без добавления записи на автозагрузке под моим компоновым.json в корневом каталоге? Это нормально, если я добавлю что-то в композитор.json из папки поставщика. Но как я это сделаю? пожалуйста, помогите по этому поводу. Благодаря
Каков путь к файлу 'PayPalServiceProvider.php'? Покажите также строку на 'config/app.php', где вы регистрируете своего поставщика услуг – Moppo
Хорошо. Я добавлю это на вопрос –
. В пакете неверная конфигурация, он должен использовать' psr-4' вместо 'psr-0' –