[解決済み] PHP Fatal error: 空のプロパティにアクセスできません
2022-02-06 13:52:31
質問
を初めて利用します。
php
で、以下のコードを実行しました。
<?php
class my_class{
var $my_value = array();
function my_class ($value){
$this->my_value[] = $value;
}
function set_value ($value){
// Error occurred from here as Undefined variable: my_value
$this->$my_value = $value;
}
}
$a = new my_class ('a');
$a->my_value[] = 'b';
$a->set_value ('c');
$a->my_class('d');
foreach ($a->my_value as &$value) {
echo $value;
}
?>
以下のようなエラーが発生しました。どのようなエラーなのでしょうか?
Notice: Undefined variable: my_value in C:\xampp\htdocs\MyTestPages\f.php on line 15
Fatal error: Cannot access empty property in C:\xampp\htdocs\MyTestPages\f.php on line 15
解決方法は?
間違った方法でプロパティにアクセスしている。この場合
$this->$my_value = ..
構文では、$my_valueに値の名前を付けてプロパティを設定します。必要なのは
$this->my_value = ..
$var = "my_value";
$this->$var = "test";
と同じです。
$this->my_value = "test";
あなたの例からいくつかの点を修正するために、以下のコードはより良いアプローチです。
class my_class {
public $my_value = array();
function __construct ($value) {
$this->my_value[] = $value;
}
function set_value ($value) {
if (!is_array($value)) {
throw new Exception("Illegal argument");
}
$this->my_value = $value;
}
function add_value($value) {
$this->my_value = $value;
}
}
$a = new my_class ('a');
$a->my_value[] = 'b';
$a->add_value('c');
$a->set_value(array('d'));
これにより、set_value を呼び出したときに my_value の型が文字列や他のものに変更されないことが保証されます。しかし、my_valueはパブリックなので、直接値を設定することができます。最後のステップは、my_value をプライベートにして、ゲッター/セッターメソッドでのみ my_value にアクセスするようにすることです。
関連
-
[解決済み】++と*+の意味は何ですか?
-
[解決済み】php, mysql - データベースへの接続数が多すぎるエラー
-
[解決済み】PHP フェイタルエラー。未定義の関数mssql_connect()をコールしています。
-
[解決済み] * vchiqインスタンスを開くのに失敗しました。
-
[解決済み】書き込みコンテキストでメソッドの戻り値を使用することができない
-
[解決済み] 致命的なエラーです。mysqli_result 型のオブジェクトを使用できません [終了] 。
-
[解決済み] 致命的なエラーです。Uncaught Error: 未定義の関数 mysql_connect() への呼び出し。
-
[解決済み] "お知らせ 未定義変数"、"Notice: Notice: 未定義のインデックス", "Notice:未定義のインデックス", "Notice."。PHPを使用した「未定義のオフセット
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
-
[解決済み] phpで変数として指定されたオブジェクトのプロパティにアクセスするにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] Fatal error: メンバ関数bind_param()のbooleanに対する呼び出し [重複] [重複
-
[解決済み】phpのob_start()の使い道は?
-
[解決済み】PHPで空の値からデフォルトオブジェクトを作成する?
-
[解決済み】新しいPHPMailerはPHPMailerAutoload.phpが必要?
-
[解決済み】php, mysql - データベースへの接続数が多すぎるエラー
-
[解決済み】Xampp ローカルホスト/ダッシュボード
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: パラメータが定義されていません
-
[解決済み】警告:mysql_fetch_array()はパラメータ1がリソースであることを期待、ブール値は[重複]で与えられる]
-
[解決済み] [Solved] Fatal error: 非オブジェクトのメンバ関数fetch_assoc()の呼び出し [重複]。
-
[解決済み] [Solved] Fatal error: メンバ関数 query() の null への呼び出し。