Php 接口不绑定到实现
我正在构建一个Lumen应用程序。我正在尝试为我的存储库使用接口。我所有的逻辑都封装在一个composer包中 以下是我的供应商/package/src/app/Providers/PackageServiceProvider.php:Php 接口不绑定到实现,php,laravel,interface,repository-pattern,lumen,Php,Laravel,Interface,Repository Pattern,Lumen,我正在构建一个Lumen应用程序。我正在尝试为我的存储库使用接口。我所有的逻辑都封装在一个composer包中 以下是我的供应商/package/src/app/Providers/PackageServiceProvider.php: <?php namespace Vendor\Package\App\Providers; use Illuminate\Support\ServiceProvider; class SmsBackendCoreServiceProvider ext
<?php
namespace Vendor\Package\App\Providers;
use Illuminate\Support\ServiceProvider;
class SmsBackendCoreServiceProvider extends ServiceProvider
{
protected $defer = false;
public function register()
{
$this->app->bind(
'Vendor\Package\App\Repositories\Contracts\SmsService',
'Vendor\Package\App\Repositories\Services\SmsJson'
);
}
public function boot()
{
$this->app->group(
['namespace' => 'Vendor\Package\App\Http\Controllers'],
function ($app) {
require __DIR__.'/../../routes/web.php';
}
);
}
}
你的合同被声明为一个类,它必须是一个接口。蒂亚戈你是一个救生员。我刚刚花了4个小时来讨论这个问题。万分感谢!
<?php
$app->get('/sms/send.json', 'JsonController@send');
<?php
namespace Vendor\Package\App\Http\Controllers;
use Vendor\Package\App\Http\Controllers\BaseController;
use Vendor\Package\App\Repositories\Contracts\SmsService;
class JsonController extends BaseController
{
public $service;
public function __construct(SmsService $service)
{
$this->service = $service;
}
public function send()
{
$response = $this->service->sendSms(1, 2, 3);
return $response;
}
}
<?php
namespace Vendor\Package\App\Repositories\Contracts;
class SmsService
{
public function sendSMS($from, $to, $text);
}
<?php
namespace Vendor\Package\App\Repositories\Services;
use Vendor\Package\App\Repositories\Contracts\SmsService;
class SmsJson implements SmsService
{
public function sendSMS($from, $to, $text)
{
echo 'success';
}
}