2016-04-14 23 views
1

我正在使用框架将路由路由到控制器及其各自的方法,但是我不确定如何在构造函数中初始化类,然后通过同一个类的静态成员访问它。PHP - 在类的构造函数中初始化对象实例,在静态成员中访问

class Controller { 

    static private $test = null; 

    private function __construct(){ 

     #$this->test = new Test(); 
     self::$test = new Test(); 

    } 

    public static function Index(){ 

     // rather than this 
     #$test = new Test(); 
     #echo $test->greet(); 

     // something like this 
     #echo self::$test->greet(); 

    } 

} 

回答

1

您必须先初始化控制器。您可以致电new Controller();这个然后提出的Test实例中private $test

<?php 
Class Test { 

    public function greet(){ 
     return "hello world"; 
    } 

} 

class Controller { 

    static private $test = null; 

    private function __construct(){ 

     self::$test = new Test(); 

    } 

    public static function Index(){ 

     new Controller(); 
     echo self::$test->greet(); 

    } 

} 

Controller::Index(); //Returns hello world 
+0

我不认为我能做到这一点作为我使用的路由控制器的方法,而不是对其进行初始化这样的框架。 App :: route('/',array('\ Prj \ Controller','Index'));是通过在静态方法中调用类本身来访问构造函数属性的唯一方法吗? – mhvvzmak1

+0

如果我是正确的,你从路由中的控制器调用'Index'方法?那么它应该工作。 – Daan

+0

是的,很抱歉,我已更新我的评论 – mhvvzmak1

相关问题