首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >飞行php控制器类

飞行php控制器类
EN

Stack Overflow用户
提问于 2015-06-01 20:08:10
回答 1查看 1.1K关注 0票数 0

我有这个控制器类

代码语言:javascript
复制
<?php

namespace App\Controllers;

use Application\Controller;
use Application\FlightApplication;

class TestController extends Controller {

    public function test(){
       $this->app->logger->debug('test');
       echo 'test';
    }

}

它扩展了这个类

代码语言:javascript
复制
<?php

namespace Application;

class Controller {

    public $app = null;

    public function __construct(){
        $this->app = FlightApplication::getInstance();
    }

}

当我运行这条路线时:

代码语言:javascript
复制
Flight::route('/test', array('App\Controllers\TestController','test'));

我知道这个错误:

致命错误:在非对象上下文中使用$this

为什么?

这是FlightApplication类:

代码语言:javascript
复制
<?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();
}

}
EN

回答 1

Stack Overflow用户

发布于 2015-06-01 20:31:59

你的辛格尔顿错了。您从不实例化类,因此get函数总是返回NULL。您需要进行检查才能实例化该类。

代码语言:javascript
复制
public static function getInstance(){
    if(!self::$instance) self::$instance = new self();
    return self::$instance;
}

此外,您还应该将构造函数的设置取出来。

代码语言:javascript
复制
public function __construct(){
    self::$instance = $this; // Remove this line as your Singleton handles this
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30582325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档