나는 검색, 내게 도움이 질문에 발견 : 그것은, 그러나, 내 모든 문제가 해결되지 않은 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를 호출 할 때 내가 괄호를 놓친했다(). 그러나, 나는 지금 또 다른 문제가있다. 나는 DokuClass의 다른 인스턴스에서 나중에 클래스의 resultCode를 얻는 것처럼 보이지 않습니다. 일부 관련이없는 방법을
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;
}
}
왼쪽 : (i가 그 최대 엉망 듯 때문에 더 이상 예제 코드)
여기 내 관련 코드입니다. 다른 메소드가 resultCode를 설정하거나 가져올 수 없으므로 중요하지 않습니다.
왜 내가 $ result [ 'code'] 객체의 다른 인스턴스 (페이지 아래쪽)에 액세스 할 수 없습니까?
내가 그것을 액세스 할 때 나는이 작업을 수행 :
$plugin = new lightweightContactFormPlugin();
$cfstat = $plugin->getResultCode();
echo '<pre>';
var_dump($fstat);
echo '</pre>';
결과입니다 : 내가 __construct()의 코드를 주석을 해제하는 경우
는NULL
이상한 것은이 올바른 값이 인쇄됩니까됩니다 아웃! 하지만 난 후에 getResultCode()에서 액세스하려고하면 다시 NULL을 반환합니다. 무슨 일 이니?
yourt getResultCode 함수는 아무 것도 반환하지 않습니다. – Najzero
코드의 실수입니다. 방금 알아 챘습니다. 그건 문제가 아니에요, 나는'self :: $ result [ 'code']'를 반환하도록 설정했습니다. 지금 질문에 코드를 수정했습니다. – qwerty
당신은'$ fstat'을 덤프하고 있지만'getResultCode'의 반환 값을'$ cfstat'라는 변수에 씁니다. –