class Controller extends BaseController
{
use AuthorizesRequests, AuthorizesResources, DispatchesJobs, ValidatesRequests;
private $host;
private function __construct()
{
$environment = App::environment();
if ($environment == "local"){
$this->host = config('customs.localHost');
}
else if ($environment == "prod"){
$this->host = config('customs.productionHost');
}
}
public function getHost()
{
return $this->host;
}
}
上記はLaravelのコントローラです。これはメインコントローラですが、私は他のコントローラクラスでこのコントローラを拡張しています。基本的には、現在の環境に応じて現在のホストを返すメソッドをこのコントローラに作成したかったのです。Laravel:なぜ私の変数がコントローラの構成機能中に設定されていないのですか?
他のコントローラからgetHost()関数を呼び出していますが、nullが返されています。
__construct()のコードは、getHost()メソッドに入れると動作します。しかし、ここで私の質問は、なぜ__construct()のコードが実行されないのですか?
public $host;
と機能__constructの可視性:
public function __construct()
、あなたのサブクラスの構造機能に:
parent::__construct();
コンストラクタはパブリックであるか、クラス(たとえばシングルトンなど)によって呼び出されている必要があります。 –
私はそれを公開しましたが、コードはまだ実行されていません。 – Pops
このURLを見てくださいhttps://laravel.io/index.php/forum/07-01-2014-extending-basecontroller-when-constructor-has-params –