2017-01-21 10:40



I have read all related question, but failed to remove the bug from my code. Please guide me about possible error in my code. When I try to call following code, it reports Error: Call to undefined method SessionManager::close() in E:\wamp64\www\mjs-cms\private\systemcore\helper\SessionManager.php on line 22 instead of "tried to call close".

Thanks in advance.

defined('BASEPATH') OR exit('No direct script access allowed');
class SessionManager{
    public function __construct() {
    public function is_exist($a){
        return isset($_SESSION["system".$a]);

    public function add($a,$b){
    public function  addCookies($a,$b){
        setcookie($a, $b, time() + (86400 * 30), "/"); // 86400 = 1 day
    public function sessionKey(){
        return session_id();
    public function value($k){
        return $_SESSION[$k];
    public function __get($key)
        echo "tried to call $key";
        return get_instance()->$key;
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答


  • doufei2194 doufei2194 4年前

    __get method is for accessing undeclared properties of a class.

    For calling undeclared functions is __call or __callStatic.

    public function __call($method_name, $arguments)
        echo "tried to call: $method_name";

    If you want to use __get - you must call for undefined property. In this case it is not

    SessionManager::close()  // call method `close()`

    It must be:

    $sm = new SessionManager;
    $sm->propertyName;   // trying to access undefined property `propertyName` of an object

    Take into consideration that

    Property overloading only works in object context.

    which means that trying to access static property like


    will not work with __get.

    点赞 评论 复制链接分享