我正在构建一个Lumen应用程序。我正在尝试使用接口来存储我的存储库。我的所有逻辑都包含在作曲家包中。
这是我的vendor / package / src / app / Providers / PackageServiceProvider.php:
<?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';
}
);
}
}
这是我的vendor / package / src / routes / web.php:
<?php
$app->get('/sms/send.json', 'JsonController@send');
这是我的vendor / package / src / app / Http / Controllers / JsonController.php:
<?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;
}
}
这是我的vendor / package / src / app / Repositories / Contracts / SmsService.php:
<?php
namespace Vendor\Package\App\Repositories\Contracts;
class SmsService
{
public function sendSMS($from, $to, $text);
}
最后,这是我的vendor / package / src / app / Repositories / Services / SmsJson.php:
<?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';
}
}
当我尝试访问http://mydomain.dev/sms/send.json时,我收到此错误:
SmsService.php中的FatalErrorException第7行:非抽象方法 Mitto \ SmsBackendCore \软件\库\合同\ SmsService :: sendSMS() 必须包含正文
我哪里出错了?
答案 0 :(得分:1)
您的合同被声明为一个类,它必须是一个接口。