【发布时间】:2018-04-05 08:00:43
【问题描述】:
我有一个 Laravel 网络应用程序,其中我的每个其他控制器都有一个“父”控制器。我以这种方式构建逻辑是因为数据库由在线 SOAP 服务提供支持。
我的父控制器的构造函数如下所示:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Lang;
use SoapClient;
use Session;
class SoapCtrl extends Controller
{
public $client;
public function __construct(Request $request) {
// SoapClient
$wsdl = '******';
$args = [
'trace' => true,
'exceptions' => true,
'soap_version' => SOAP_1_2,
'cache_wsdl' => WSDL_CACHE_NONE,
];
$this->client = new SoapClient($wsdl, $args);
}
}
我还有很多其他控制器扩展了这个 SoapCtrl,例如这个:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Lang;
use SoapClient;
use Session;
class MagistralCtrl extends SoapCtrl {
public function __construct(Request $request) {
parent::__construct($request);
if(!parent::loggedin()) {
return '';
}
if(!parent::have_right('magisztralis')) {
return view('nopermission', $this->args);
}
}
}
他们都可以在视图函数中使用$this->client->anySoapMethod,所以看起来client 是被继承的并且可以工作。但是__construct 函数不运行。我用die('hello') 尝试过,仍然没有发生任何事情。我在扩展控制器中的构造函数不起作用。
请帮忙,我做错了什么?
【问题讨论】:
-
你在哪里试过
die()?? -
在我的第二个控制器构造函数中,像这样:
public function __construct(Request $request) { die('hello'); }
标签: php laravel constructor