PHP类问题/会话问题
我试图创建一个对象并将其存储在会话变量中,以便在不同的页面上访问它 我遇到了一个问题,我的对象中的属性被莫名其妙地重写了。具体来说,getMenu方法似乎显示了错误的属性。不知道为什么,也许这里的人一眼就会知道 下面是我的user.class.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;
<?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'){