我怎样才能在php class 中正确地use/import 接口?
How can I correctly use/import an interface in a php class?
我无法让接口在我的 php/laravel 项目中工作。我有一系列控制器,我想实现一个接口。 PhpStorm 似乎对我的语法很满意。但是当我检查当前对象是否确实有接口时,我得到一个运行时错误,提示找不到接口:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use iTeamEntryController;
class TeamController extends Controller implements iTeamEntryController {...}
然后是界面:
<?php
use Illuminate\Http\Request;
interface iTeamEntryController
{
public function saveTeam(Request $request);
}
这里我在定义 class 的行上得到一个错误,说 interface 'iTeamEntryController' is not found
。 class 和界面都在同一个文件夹中。
我一直在网上找例子,但是大家要么在同一个文件中同时拥有接口和class声明,要么使用'include_once'或'require_once',这对我来说似乎是指文件,而不是 OOP。那我在这里做错了什么?为什么找不到我的界面?
请记住,use
子句希望您指定一个 绝对 class/interface/trait 名称,不是 相对于您当前的命名空间。
以下是错误的,除非你的控制器在全局命名空间中(我敢肯定不是这样):
use iTeamEntryController; // wrong
下面这个是正确的:
use App\Http\Controllers\iTeamEntryController;
如果您将界面保存在 app/Http/Controllers
目录中,请不要忘记指定命名空间:
namespace App\Http\Controllers;
另一方面,如果您希望您的界面位于根目录中,请确保它在那里。然后,不需要名称空间并且您的 use
子句是正确的。除了,我很确定你不希望你的界面在你的 Laravel 应用程序的根目录中。
我无法让接口在我的 php/laravel 项目中工作。我有一系列控制器,我想实现一个接口。 PhpStorm 似乎对我的语法很满意。但是当我检查当前对象是否确实有接口时,我得到一个运行时错误,提示找不到接口:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use iTeamEntryController;
class TeamController extends Controller implements iTeamEntryController {...}
然后是界面:
<?php
use Illuminate\Http\Request;
interface iTeamEntryController
{
public function saveTeam(Request $request);
}
这里我在定义 class 的行上得到一个错误,说 interface 'iTeamEntryController' is not found
。 class 和界面都在同一个文件夹中。
我一直在网上找例子,但是大家要么在同一个文件中同时拥有接口和class声明,要么使用'include_once'或'require_once',这对我来说似乎是指文件,而不是 OOP。那我在这里做错了什么?为什么找不到我的界面?
请记住,use
子句希望您指定一个 绝对 class/interface/trait 名称,不是 相对于您当前的命名空间。
以下是错误的,除非你的控制器在全局命名空间中(我敢肯定不是这样):
use iTeamEntryController; // wrong
下面这个是正确的:
use App\Http\Controllers\iTeamEntryController;
如果您将界面保存在 app/Http/Controllers
目录中,请不要忘记指定命名空间:
namespace App\Http\Controllers;
另一方面,如果您希望您的界面位于根目录中,请确保它在那里。然后,不需要名称空间并且您的 use
子句是正确的。除了,我很确定你不希望你的界面在你的 Laravel 应用程序的根目录中。