2013-03-03 92 views
0

我已经看了这个代码超过一个小时,它看起来对我来说很好。但是,当我使用insertSubmit()函数时,description变量正在丢失范围。该变量在构造期间设置,但不是在使用insertSubmit()时设置。我在这里错过了什么吗?奇怪的行为与类级变量

<?php session_start(); 

class SubmitNew { 

var $title = ""; 
var $category = ""; 
var $summary = ""; 
var $description = ""; 
var $username = ""; 
var $timestamp = ""; 
var $errors = ""; 
var $errorStr = ""; 
var $link = ""; 
var $db = ""; 

public function __construct() { 
    $this->setVariables(); 
    $this->errors = 0; 
    $this->p_id = 1; 

} 
public function setVariables() { 
    $this->title = "1"; 
    $this->category = "2"; 
    $this->summary = "3"; 
    $this->description = "4"; 
    echo $this->description; 
    $this->timestamp = mktime(date("G"), date("i"), 
    date("s"), date("m") , date("d"), date("Y")); 
} 
public function errorBlank() { 
    if($this->title == null) { 
     $this->errorStr = $this->errorStr."blanktitle"; 
     $this->errors++;  
    } if($this->summary == null) { 
     $this->erroStr = $this->errorStr."blanksummary"; 
     $this->errors++;    
    } if($this->description = null) { 
     $this->erroStr = $this->errorStr."blankdescription"; 
     $this->errors++;  
    } 
} 
public function errorAll() { 
    if($this->errors == 0) { 
     return "success"; 
    } else { 
     return $this->errorStr; 
    } 
} 
public function insertSubmit() { 
    echo $this->description; 
} 
} 
+2

请说明你是如何使用这个类的,因为当我执行以下时,我会看到“4”echo'd两次:'$ s = new SubmitNew(); $ s-> insertSubmit();' – 2013-03-03 13:55:03

+0

我看到'$ this-> description = null',所以你给'$ this-> description'分配'null'。使用'==' – metadings 2013-03-03 13:58:53

+0

metadings谢谢! – user2128903 2013-03-03 13:59:05

回答

2

问题是位于errorBlank()功能,当你这样做:

} if($this->description = null) { 

而不是做这个的:

} if($this->description == null) { 

注意额外的等号!您将null分配到$this->description,而不是将它们进行比较!

+1

是的,这是问题所在。谢谢。它总是小的那些让我:)。 – user2128903 2013-03-03 14:06:15