我的__construct()中有很少的行和变量应该启动并传递给我的控制器中的方法。
现在我已经在__construct()
中找到了它们 class myController extends Controller {
public function __construct()
{
$this->pageTitle= DB::(...)
$this->user = Auth::(...)
(+100 rows)
}
public function index()
{
echo $this->pageTitle;
}
}
由于incluce()不能与类和__construct()一起使用,并且上面的确切行在60%的控制器中使用,如何从一个源更容易地实现代码?
编辑:
它是一个多站点,带有通配符子域。
100行由ie:
组成对于60%以上的页面和控制器(包括mysql提取的页面和现场应用程序),Thiese都是相同的
答案 0 :(得分:1)
您可以创建一个BaseController,它由需要这些共享变量的所有控制器进行扩展。
<强> BaseController.php 强>
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class BaseController extends Controller
{
public function __construct(){
$this->foo = 'foo';
$this->bar = 'bar';
}
}
<强> TestController.php 强>
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\BaseController;
class TestController extends BaseController
{
public function index()
{
dump($this->foo);
dump($this->bar);
}
}
<强> routes.php文件强>
Route::get('test', 'TestController@index');
<强>结果:强>
"foo"
"bar"
但我仍然对你要添加的100多行或变量感到好奇,这听起来像是可以优化的东西。你能提供更多关于此的信息吗?
答案 1 :(得分:0)
这对你有帮助吗?
<?php
class myClass {
public function __construct() {
echo "myClass init'ed successfuly!!!";
}
}
?>
./index.php
<?php
// we've writen this code where we need
function __autoload($classname) {
$filename = "./". $classname .".php";
include_once($filename);
}
// we've called a class ***
$obj = new myClass();
?>