この質問には簡単な答えがあると思いますが、私の人生ではそれを見つけることができません。PHP5を使用していて、クラス変数の値を変更しようとしていますが、変更されていないようです。たとえば、私は次のようなものを持っています:
<?php
include_once "../includes/global.php";
loadDAOs('yweightGroups','yweightCourses','yweightUsers','user','yweightData');
class yweight {
private $header_includes;
private $user;
private $yweightUser;
//Description:
// Constructor.
//Parameters:
// -none-
//Returns:
// -nothing-
function __construct() {
global $r_action;
global $r_page;
$this->user = login_required();
if(!$this->user || empty($this->user)){
die();
goHome();
}
$this->header_includes = "";
if(isset($r_action)) {
$this->$r_action();
}
else if (isset($r_page)) {
$this->$r_page();
}
else {
$this->draw();
}
}
//Description:
// Draws the YWeight page
//Parameters:
// -none-
//Returns:
// -nothing-
function draw() {
global $r_page;
global $colorDAO;
global $yweightUsersDAO;
ob_start();
?>
<script type='text/javascript' src="./yweight.js"></script>
<link rel="stylesheet" type="text/css" href="yweight.css" />
<?php
$this->header_includes .= ob_get_clean();
$col = $colorDAO->read(17);
print_top("",$this->header_includes,"resources","",$col->value,$col->fontcolor);
$users = $yweightUsersDAO->GetByUserID($this->user->id);
if(!$users){
echo "<div class='msg_failed'>You are not authorized to view this page.</div>";
die();
}
$this->yweightUser = $users;
echo serialize($this->yweightUser[0]);
?>
<div id="yweight_area"></div>
<script type='text/javascript'>
<?php
if($users[0]->yweightUsers_intern == 0)
echo "drawPage('main_participant');";
else
echo "drawPage('main_intern');";
?>
</script>
<?php
print_bottom();
echo ob_get_clean();
}
//Description:
// Draws the main intern page.
//Parameters:
// -none-
//Returns:
// -nothing-
function main_intern() {
ob_start();
echo "hello intern";
echo ob_get_clean();
}
//Description:
// Draws the main participant page.
//Parameters:
// -none-
//Returns:
// -nothing-
function main_participant() {
global $yweightDataDAO;
ob_start();
$this->yweightUser = $this->yweightUser[0];
echo serialize($this->yweightUser);
?>
<div id="banner_div">
<img class="banner" width="927" src="images/ParticipantsMain.jpg" />
<img id="tracker_btn" class="std_btn" src="images/trackerButton.png" />
<img id="summary_btn" class="std_btn" src="images/summaryButton.png" />
<img id="requirements_btn" class="std_btn" src="images/reqButton.png" />
</div>
<div id="discussion_board_input_div">
<textarea id="discussion_board_input" />
<?php
echo build_btn("green",100,25,"Submit","","","","",
'submit_post()',"margin-top:5px; margin-bottom:5px; float:right;");
?>
<div class="clear_floats" />
</div>
<div id="discussion_board_div">
</div>
<?php
echo ob_get_clean();
}
function submit_post(){
global $yweightDataDAO;
global $userDAO;
global $r_post;
echo serialize($this->yweightUser);
$userDataID = $yweightDataDAO->GetByUserID($this->yweightUser->user_id);
if($userDataID){
$userData = $yweightDataDAO->read($userDataID);
$userDiscussion = unserialize($userData->yweightData_discussionBoard);
}
$userDiscussion[$this->user->firstName . time()] = $r_post;
$userData->yweightData_discussionBoard = serialize($userDiscussion);
$yweightDataDAO->save($userData);
}
}
$recs = new yweight();
?>
submit_post()は、関数と呼ばれるajaxです。私が得ているエラーは、$this->yweightUserが未定義であると言っていることです。クラス変数がどのように宣言されているかを誤解しているだけだと思ったので、元々すべてのコードを含めていませんでした。