如何扩展在另一个目录中的类?
我有一个类叫做SeleniumUtility并试图扩展PortalController(仅用于测试)。如何扩展在另一个目录中的类?
我想它是这样的:
<?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文件夹进行搜索。
它是如何工作的?
如果你有一个自动加载,如PSR-4 autoloader,您可以实现use
句法。
<?php
namespace App\Http\Utility;
use App\Http\Controllers\PortalContoller as PortalController;
class SeleniumUtility extends PortalController
{
...
符合PSR-2的答案。 http://www.php-fig.org/psr/psr-2/#overview –
你需要这样使用。
class SeleniumUtility extends \App\Http\Controllers\PortalController
{
}
或
use App\Http\Controllers\PortalController;
class SeleniumUtility extends PortalController
{
}
这应该是一条评论。没有答案。 – Loko
使用PSR-2格式。 http://www.php-fig.org/psr/psr-2/#overview –
根据您所使用的命名空间更改如下代码:
namespace App\Http\Utility;
require_once(__DIR__.'/../Controllers/PortalController.php');
use App\Http\Controllers as Controllers;
class SeleniumUtility extends Controllers\PortalController
{
标准化PSR-2在这里可能是件好事。 http://www.php-fig.org/psr/psr-2/#overview –
如果他有一个自动加载器,他可能不需要'require_once'语句。 –
是的,我不需要'require_once' – Black
确保你的类名'PortalController.php'是'PortalController' –
像你扩展(扩展类的名称应该是相同的情况下),你的父类的名字。这个项目命名空间是基于什么? –
@B。德赛,是类名是'PortalController',我刚刚检查过它 – Black