2017-02-23 2 views
1

私はSeleniumUtilityというクラスを持っていて、ポータルコントローラー(テスト用)を拡張しようとしています。別のディレクトリにあるクラスを拡張するには?

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。 Desai、はいクラス名は '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

関連する問題