PHP类问题/会话问题

PHP类问题/会话问题,php,class,oop,Php,Class,Oop,我试图创建一个对象并将其存储在会话变量中,以便在不同的页面上访问它 我遇到了一个问题,我的对象中的属性被莫名其妙地重写了。具体来说,getMenu方法似乎显示了错误的属性。不知道为什么,也许这里的人一眼就会知道 下面是我的user.class.php: <?php /** * Created by PhpStorm. * User: * Date: 6/26/14 * Time: 2:55 PM */ class user{ private $company;

我试图创建一个对象并将其存储在会话变量中,以便在不同的页面上访问它

我遇到了一个问题,我的对象中的属性被莫名其妙地重写了。具体来说,getMenu方法似乎显示了错误的属性。不知道为什么,也许这里的人一眼就会知道

下面是我的user.class.php:

    <?php

/**
 * Created by PhpStorm.
 * User:
 * Date: 6/26/14
 * Time: 2:55 PM
 */

class user{
    private $company;
    private $userName;
    private $menuType;
    private $viewState;
    private $gridType;

    public function setGrid($gridType){
        $this->gridType = $gridType;

    }
    public function getGrid(){
        if($this->gridType='salesGrid'){
             include 'gridView.php';
        }elseif($this->gridType='truckingGrid'){
             include 'lActiveLoadView.php';
        }
    }

    public function setCompany($company){
        $this->company = $company;

    }
    public function getCompany(){
        return $this->company;
    }

    public function setUserName($userName){
        $this->userName = $userName;

    }
    public function getUserName(){
        return $this->userName;
    }

    public function setMenu($menuType){
        $this->menuType = $menuType;
    }

    public function getMenu(){
        if($this->menuType='salesMenu'){
            $x = <<< 'Menu'
     <button id='carrierEditor'  class='alignRight' onclick="location.href='gridManager.php?action=alert'">Alerts</button>
     <button id='carrierEditor'  class='alignRight' onclick="location.href='gridManager.php?action=carrier'">Carriers</button>
     <button id='vendorEditor'  class='alignRight' onclick="location.href='gridManager.php?action=vendor'">Vendors</button>
     <button id='productEditor'  class='alignRight' onclick="location.href='gridManager.php?action=product'">Products</button>
     <button id='customerEditor'  class='alignRight' onclick="location.href='gridManager.php?action=customer'">Customer</button>
     <button id='home'  class='alignRight' onclick="location.href='index.php'">Home</button>
Menu;

            echo $x;

        }
        elseif($this->menuType='truckingMenu'){
            $x = <<< 'Menu'
            <button id='generateNewLoad' onclick=\"location.href='index.php?viewState=NewLoad'\">Generate New Load</button>
            <button id='openloads'  onclick=\"location.href='index.php?viewState=All'\">Open Loads</button>
            <button id='viewToday'  class='alignLeft' onclick=\"location.href='index.php?viewState=Today'\">Today</button>
            <button id='viewTomorrow'  class='alignLeft' onclick=\"location.href='index.php?viewState=Tomorrow'\">Tomorrow</button>
            <button id='viewWeek'  class='alignLeft 'onclick=\"location.href='index.php?viewState=Week'\">Week</button>
            <button id='trackingloads'  onclick=\"location.href='index.php?viewState=Tracking'\">Tracking Loads</button>
            <button id='closedloads'  onclick=\"location.href='index.php?viewState=Completed'\">Closed Loads</button>
            <button id='deliveryRequest'  class='alignRight'>Delivery Request</button>
            <button id='bolGenerator'  class='alignRight'>Manage BOLs</button>
            <button id='manageContacts'  class='alignRight' onclick=\"location.href='gridManager.php?action=contacts'\">Manage Contacts</button>
            <button id='btnEmailBlast'  class='alignRight' >Email Blast</button>
Menu;
             echo $x;
        }
    }
    public function setViewState($viewState){
        $this->viewState = $viewState;
    }
    public function getViewState(){
        return $this->$viewState;
    }
}
下面是一些案例: 加载对象的var转储将公开以下内容:

    object(user)[1]
  private 'company' => string 'Trucking' (length=14)
  private 'userName' => string 'gpigb' (length=5)
  private 'menuType' => string 'truckingMenu' (length=12)
  private 'viewState' => string 'All' (length=3)
  private 'gridType' => string 'truckingGrid' (length=12)
如果调用存储在会话变量中的类中的任何方法,由于某种原因,这些方法的属性会被错误的数据覆盖

$x = $_SESSION['userObject'];
    $x->getMenu();
对象的vardump显示:

object(user)[1]
  private 'company' => string 'Trucking' (length=14)
  private 'userName' => string 'gpigb' (length=5)
  private 'menuType' => string 'salesMenu' (length=9)
  private 'viewState' => string 'All' (length=3)
  private 'gridType' => string 'truckingGrid' (length=12)
查看菜单类型现在如何显示“salesMenu”?我从未调用过setMenu方法来更改它,但它已经更改了。有什么好处


请在
user.class.php
文件中帮助(
=
)将(
=
)分配给
菜单类型
类/对象变量,而不是将(
=
)与其进行比较

应该是:

if($this->menuType == 'salesMenu'){
    ...
}
elseif($this->menuType == 'truckingMenu'){
    ....

您还在
getGrid()
函数中覆盖
gridType
变量。

如果
条件错误,您的

正确:

//..

if($this->menuType=='salesMenu'){

//..

elseif($this->menuType=='truckingMenu'){

首先,你有一些if语句使用1
=
而不是2:
if($this->gridType='salesGrid')
。请不要这样做:读这个->天哪,我很尴尬。就这样。我想有时候你可以看一个小时同样的事情,却看不到最明显的错误。非常感谢。
if($this->menuType == 'salesMenu'){
    ...
}
elseif($this->menuType == 'truckingMenu'){
    ....
//..

if($this->menuType=='salesMenu'){

//..

elseif($this->menuType=='truckingMenu'){