我搜索,發現這個問題,這讓我: php static variable is not getting set靜態變量未設置?
它沒有,但是,沒有解決不了我的整個問題。
代碼:
Class DummyClass {
public static $result;
function __construct() {
$this->_setResultCode('testing');
}
public function getResultCode() {
return self::$result['code'];
}
private function _setResultCode($val) {
echo 'Im gonna set it to: ' . $val . '<br />';
self::$result['code'] = $val;
echo 'I just set it to: ' . $this->getResultCode;
die();
}
}
輸出:
Im gonna set it to: testing
I just set it to:
這是怎麼回事嗎?這怎麼可能?
編輯:問題是調用getResultCode當我錯過了括號()。不過,我現在有另一個問題。我似乎無法將resultCode從類中取出(稍後在DummyClass的另一個實例中)。
這裏是我的相關編碼(沒有更多的示例代碼,因爲我似乎一團糟,最多):
Class lightweightContactFormPlugin {
// Set up/Init static $result variable
public static $result;
function __construct() {
//echo 'I just inited<br/><pre>';
//var_dump($this->getResultCode());
//echo '</pre><br/>';
}
public function run() {
// Set default value for resultCode
$this->_setResultCode('no_identifier');
// Check if form was posted
if(isset($_POST['cfidentifier'])) {
$fields = $this->_get_fields_to_send();
$valid = $this->_validate_fields($fields);
// Only continue if validatation was successful
if($valid == true) {
// Store mail result in $mail
$mail = $this->_send_mail($fields);
// Yay, success!
if($mail) {
$this->_setResultCode('sent_successfully');
return;
} else {
// Couldn't send mail, bu-hu!
$this->_setResultCode('not_sent');
return;
}
}
$this->_setResultCode('validation_fail');
return;
}
}
// Get and Set methods
public function getResultCode() {
return isset(self::$result['code']) ? self::$result['code'] : '';
}
private function _setResultCode($val) {
self::$result['code'] = $val;
}
}
留下了一些不相關的方法了。沒有其他方法設置或獲取resultCode,它應該沒關係。
任何想法,爲什麼我不能訪問對象的另一個實例中的$ result ['code']?
我這樣做,當我訪問它:
$plugin = new lightweightContactFormPlugin();
$cfstat = $plugin->getResultCode();
echo '<pre>';
var_dump($fstat);
echo '</pre>';
結果是:
NULL
奇怪的是,如果我在__construct()取消註釋代碼,正確的值不會獲取打印出來了!但是,如果我嘗試從getResultCode()之後訪問它,它將再次返回NULL。到底是怎麼回事?
yourt getResultCode函數不返回任何東西。 – Najzero
這是代碼中的一個錯誤,我剛剛注意到了。這不是問題,我已經設置它返回self :: $ result ['code']'它應該是。我現在解決了問題中的代碼。 – qwerty
您正在傾銷'$ fstat',但正在將'getResultCode'的返回值寫入名爲'$ cfstat'的變量。 –