为什么我的全局变量不为空

为什么我的全局变量不为空

问题描述:

我使用php $GLOBALS变量时出现问题。为什么我的全局变量不为空

我有一个名为PostController的类:

class postController 
{ 
    public function Start() 
    { 
     switch($GLOBALS["Action"]) 
     { 
      case "404": 
       require_once(blog("root").'/protected/404.php'); 
      break; 

      default: 
       new query("posts"); 
       require_once(blog("root")."/protected/layout/".blog("temName")."/single.php"); 
      break; 
     } 
    } 
} 

该类使得从查询类从数据库中获取结果的对象。

  new query("posts"); 

查询类:

​​

在这个类中,我把对象在一个全局变量(global $myQuery;),之后在single.php中我使用global $myQuery;,以显示与havePosts();

结果

的single.php:

<?php echo havePosts(); ?> 

但我不能看到任何结果。 如果我把new query("posts");行放在single.php中,它可以工作,但我不想在single.php中写这行。我该怎么办?

+0

您意识到'havePosts'返回一个布尔值,它不能被回显? – wavemode 2014-09-28 05:45:48

我有一个类命名管理器,保存用户信息:

<?php 
global $manager; 
class manager 
{ 
    private $user = ""; 
    private $pass = ""; 
    private $name = ""; 
    private $displayName = ""; 
    private $email = ""; 
    private $mobile = ""; 
    private $tel = ""; 
    private $post = ""; 
    private $department = ""; 
    private $avatar = ""; 

    public function manager($user,$pass) 
    { 
     $this->user = $user; 
     $this->pass = md5($pass); 
     $GLOBALS["manager"] = $this; 
    } 

    public function Login() 
    { 
     $GLOBALS["DataBase"]->query("select * from ".$GLOBALS["tbPrefix"]."managers where ma_username=N'".$this->user."' and ma_password=N'".$this->pass."'"); 
     if($GLOBALS["DataBase"]->numRows() > 0) 
     { 
      $ma = $GLOBALS["DataBase"]->fetchAssoc(); 
      $this->name = $ma["ma_name"]; 
      $this->displayName = $ma["ma_displayname"]; 
      $this->email = $ma["ma_email"]; 
      $this->mobile = $ma["ma_mobile"]; 
      $this->tel = $ma["ma_tel"]; 
      $this->post = $ma["ma_post"]; 
      $this->department = $ma["ma_department"]; 
      $this->avatar = $ma["ma_avatar"]; 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 

    public function the_manager() 
    { 
     return array("username" => $this->user,"name" => $this->name,"displayname" => $this->displayName,"email" => $this->email,"mobile" => $this->mobile,"tel" => $this->tel,"post" => $this->post, "department" => $this->department,"photo" => $this->avatar); 
    } 
} 

function get_admin() 
{ 
    if($GLOBALS["manager"] != null){ 
     return $GLOBALS["manager"]->the_manager(); 
    } 
} 

function the_admin_name() 
{ 
    if($GLOBALS["manager"] != null){ 
     $info = $GLOBALS["manager"]->the_manager(); 
     echo $info["name"]; 
    } 
} 

和一个名为adminController类:

class adminController 
{ 
    public function Start() 
    { 
     session_start(); 
     $message = ""; 
     if(isset($_POST["username"]) && isset($_POST["password"])) 
     { 
      $username = mysql_real_escape_string($_POST["username"]); 
      $password = mysql_real_escape_string($_POST["password"]); 
      if(empty($username) or empty($password)) 
      { 
       $message = "اطلاعات وارد شده معتبر نمی باشد."; 
      } 
      else 
      { 
       new manager($_POST["username"],$_POST["password"]); 
       if($GLOBALS["manager"]->Login()) 
       { 
        $_SESSION["ulogin"] = $username; 
        header("Location: ".$GLOBALS["sitepath"]["url"]."/admin/manage"); 
       } 
       else 
       { 
        $message = "نام کاربری یا کلمه عبور اشتباه می باشد!"; 
       } 
      } 
     } 

      if(!isset($_SESSION["ulogin"]) && empty($_SESSION["ulogin"])) 
       require_once($GLOBALS["sitepath"]["root"].'/protected/model/login.php'); 
      else 
      { 
       switch($GLOBALS["Action"]) 
       { 
        case "manage": 
         if(isset($_SESSION["ulogin"]) && !empty($_SESSION["ulogin"])) 
          require_once($GLOBALS["sitepath"]["root"].'/protected/model/admin.php'); 
         else 
          header("Location: ".$GLOBALS["sitepath"]["url"]."/admin"); 
         break; 

        case "logout": 
         session_destroy(); 
         session_unset(); 
         header("Location: ".$GLOBALS["sitepath"]["url"]."/admin"); 
         break; 

        case "uploader": 
         if(isset($_GET['method'])) 
         { 
          switch($_GET['method']) 
          { 
           case 'upload': 
            require_once(blog("root").'/protected/model/handleupload.php'); 
           break; 
           case 'get': 
            require_once(blog("root").'/protected/model/panelfiles.php'); 
           break; 
           case 'info': 
            require_once(blog("root").'/protected/model/fileinfo.php'); 
           break; 
           case 'delete': 
            require_once(blog("root").'/protected/model/deletefile.php'); 
           break; 
           default: 
            throw new Exception('404'); 
           break; 
          } 
         } 
         else 
         { 
          throw new Exception('404'); 
         } 
        break; 

        default: 
         if(isset($_SESSION["ulogin"]) && !empty($_SESSION["ulogin"])) 
          header("Location: ".$GLOBALS["sitepath"]["url"]."/admin/manage"); 
         else 
          require_once($GLOBALS["sitepath"]["root"].'/protected/model/login.php'); 
         break; 
       } 
      } 
    } 
} 

和文件的login.php命名。

在经理类中我有$ GLOBALS变量名为“经理”,用于admin.php与函数“the_admin_name()”。

这个函数调用$ GLOBALS [ “经理人”],但其空和错误:

致命错误:调用一个成员函数the_manager(d)中一个非对象:\ XAMPP \ htdocs中\ Rastak \ protected \ model \ functions \ manager.class.php on line 64