我有这个控制器类
<?php
namespace App\Controllers;
use Application\Controller;
use Application\FlightApplication;
class TestController extends Controller {
public function test(){
$this->app->logger->debug('test');
echo 'test';
}
}它扩展了这个类
<?php
namespace Application;
class Controller {
public $app = null;
public function __construct(){
$this->app = FlightApplication::getInstance();
}
}当我运行这条路线时:
Flight::route('/test', array('App\Controllers\TestController','test'));我知道这个错误:
致命错误:在非对象上下文中使用$this
为什么?
这是FlightApplication类:
<?php
namespace Application;
class FlightApplication {
private static $instance = null;
public function __construct(){
self::$instance = $this;
}
/**
*
* @return \Application\FlightApplication
*/
public static function getInstance(){
return self::$instance;
}
public function start(){
\Flight::start();
}
}发布于 2015-06-01 20:31:59
你的辛格尔顿错了。您从不实例化类,因此get函数总是返回NULL。您需要进行检查才能实例化该类。
public static function getInstance(){
if(!self::$instance) self::$instance = new self();
return self::$instance;
}此外,您还应该将构造函数的设置取出来。
public function __construct(){
self::$instance = $this; // Remove this line as your Singleton handles this
}https://stackoverflow.com/questions/30582325
复制相似问题