请教:
 一个zend FW 的修改框架
里面一个 M层文件:
class Sysadminuser{
    var $db;
    var $ctx;
    
    function __construct(){
        $this->ctx = $GLOBALS['context'];
        $this->db = $GLOBALS['context']->db;
    }   function check_admin_user_resource($action,$main ){
     $admin_user_id = $this->ctx->get_session ('user_id');
        var_dump($admin_user_id);
   }
}
如果把 check_admin_user_resource函数 变成静态的 有问题了.也就是  static  function check_admin_user_resource($action,$main ){           }
里面怎么写呢 ?
self:: 后面怎么写 都好像不对;

解决方案 »

  1.   

    $admin_user_id = $this->ctx->get_session ('user_id');这句要改,static里不能有$this指针试试这样,如果不行,检查你的$GLOBALS['context']在调用时是否已经有值
    $admin_user_id = $GLOBALS['context']->get_session ('user_id');
      

  2.   


    class Sysadminuser{
      private static $ctx;
       
      private function __construct(){
      $this->ctx = $GLOBALS['context'];
      $this->db = $GLOBALS['context']->db;
      }
    static function instance(){
    if(self::$ctx==null)
    self::$ctx=$GLOBALS['context'];
    return self::$ctx;
    }
      public static function check_admin_user_resource($action,$main ){
      $admin_user_id = self::instance()->get_session ('user_id');
      var_dump($admin_user_id);
      }
    }
      

  3.   

    class Sysadminuser{
      private static $ctx;
       
      private function __construct(){
      }
    static function instance(){
    if(self::$ctx==null)
    self::$ctx=$GLOBALS['context'];
    return self::$ctx;
    }
      public static function check_admin_user_resource($action,$main ){
      $admin_user_id = self::instance()->get_session ('user_id');
      var_dump($admin_user_id);
      }
    }