在php中访问全局对象

时间:2016-05-25 19:50:14

标签: php class model-view-controller

我有小片段(我的索引页):

-deststorepass -destkeypass

我的家庭控制器

require 'app.php';
$app = new AltoRouter();

$app->setBasePath(CMS_BASE_DIR);
$app->map('GET|POST','/', 'home@index', 'home');

$match = $app->match();
if ($match) {

    list($file, $method) = explode("@", $match['target']);

    $class = ucfirst($file).'Controller';

    if(is_callable(array($class, $method))) {
        $object     = new $class();
        call_user_func_array(array($object, $method), array($match['params']));
    } else {

        header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found", true, 404);
        exit();
    }

} else {
    header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found", true, 404);
    exit();
}

如何在我的模型/视图/控制器中使用$ app对象。 如何将$ app设置为全局?

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您总是要在此对象类型中使用它,那么您可以将它作为构造函数的参数:

class HomeController extends Controller {

    private $app;

    public function __construct($app_p) {
        parent::__construct();
        Auth::checkAuthentication();
        this->app = $app_p;
    }

    public function index() {}
}

答案 1 :(得分:0)

这些以前的方法在你的情况下很好,但是你应该考虑深入研究OOP并停止在类之外进行函数调用或者从控制器中获取类似核心类的东西。

回答杰夫的回答