2017-02-23 79 views
1

我有一个类叫做SeleniumUtility并试图扩展PortalController(仅用于测试)。如何扩展在另一个目录中的类?

enter image description here

我想它是这样的:

<?php 
namespace App\Http\Utility; 

require_once(__DIR__.'/../Controllers/PortalController.php'); 

class SeleniumUtility extends PortalController 
{ 
... 

不过,我得到FatalErrorException in SeleniumUtility.php line 14: Class 'App\Http\Utility\PortalController' not found

所以还是会尝试在Utilty文件夹进行搜索。

它是如何工作的?

+1

确保你的类名'PortalController.php'是'PortalController' –

+1

像你扩展(扩展类的名称应该是相同的情况下),你的父类的名字。这个项目命名空间是基于什么? –

+0

@B。德赛,是类名是'PortalController',我刚刚检查过它 – Black

回答

3

如果你有一个自动加载,如PSR-4 autoloader,您可以实现use句法。

<?php 
namespace App\Http\Utility; 

use App\Http\Controllers\PortalContoller as PortalController; 

class SeleniumUtility extends PortalController 
{ 

...

+0

符合PSR-2的答案。 http://www.php-fig.org/psr/psr-2/#overview –

0

你需要这样使用。

class SeleniumUtility extends \App\Http\Controllers\PortalController 
{ 

} 

use App\Http\Controllers\PortalController; 
class SeleniumUtility extends PortalController 
{ 

} 
+0

这应该是一条评论。没有答案。 – Loko

+0

使用PSR-2格式。 http://www.php-fig.org/psr/psr-2/#overview –

1

根据您所使用的命名空间更改如下代码:

namespace App\Http\Utility; 

require_once(__DIR__.'/../Controllers/PortalController.php'); 
use App\Http\Controllers as Controllers; 
class SeleniumUtility extends Controllers\PortalController 
{ 
+1

标准化PSR-2在这里可能是件好事。 http://www.php-fig.org/psr/psr-2/#overview –

+1

如果他有一个自动加载器,他可能不需要'require_once'语句。 –

+0

是的,我不需要'require_once' – Black

相关问题