私は現在、クライアント向けの大規模なプロジェクトに取り組んでいます。物事を簡素化し、セッションの管理を容易にするために、セッションクラスを作成しました。これは、セッションの管理方法を変更した場合でも、セッションの構造にアクセスできることを意味します。セッションがエコーされた複数のファイルではなく、1つのファイル(ユーザー名や現在のページなど)
私のクラスには、セッター、ゲッター、アンセッターの3種類の関数があり、これは一種の自明です。
この例では、セッションクラスに直接エラーメッセージを設定してから、その中のセッションから関数を呼び出す別のクラスからエラーメッセージを取得しています。
以下は、私が関連していると感じるコードを示す私のファイルの簡略化されたバージョンです
c_session.php
class session {
private $instance = 'isntname';
private $A_user = 'user';
private $A_page = 'page';
private $A_message = 'message';
//Set messages to the session.
public function set_message($type, $value) {
$_SESSION[$this->instance][$this->A_message][$type] = $value;
}
//Get messages from the session.
public function get_message() {
return $_SESSION[$this->instance][$this->A_message];
}
//Unset messages from the session.
public function unset_message() {
#unset($_SESSION[$this->instance][$this->A_message]);
}
}
c_operations.php
class operations {
//Display all pending messages.
public function display_pending_messages() {
if(session::get_message() != null) {
foreach(session::get_message() as $type => $value) {
if(strlen($type) != null) {
echo '
<div class="panel ' . $type . '">
' . $value . '
<span class="close" onclick="hide_parent_element(this);">X</span>
</div>
';
}
}
session::unset_message();
}
}
}
example.php
$session->set_message('confirm', 'THIS IS A CONFIRM');
$session->set_message('error', 'THIS IS AN ERROR');
$session->set_message('notice', 'THIS IS A NOTICE');
$session->set_message('warning', 'THIS IS A WARNING');
var_dump($_SESSION);
$operation->display_pending_messages();
受け取ったエラー/通知など
Notice: Undefined property: operations::$instance in /var/www/_classes/parent_session.php on line 43
Notice: Undefined property: operations::$A_message in /var/www/_classes/parent_session.php on line 43
Notice: Undefined index: in /var/www/_classes/parent_session.php on line 43
43行目は次の行を指しますreturn $_SESSION[$this->instance][$this->A_message];
これで、呼び出しget_message()
てunset_message()
直接それを介し$session->get_message()
て期待どおりに機能しますが、この場合は別の関数を実行する$operation->display_pending_messages()
と、上記のエラーが返されます。明らかにこれは$this->
オペレーターと関係がありますが、これを止めるために何をすべきかわかりません。私はさまざまな検索を試しましたが、似たようなものを見つけましたが、この場合は役に立ちませんでした。
誰かが私がどこで間違っているのか、そしてこれを修正する方法を説明できますか?
前もって感謝します。