[PHP5]”Notice: Trying to get property of non-object”の警告が表示される

PHPのプログラムを実行すると、以下の警告が表示される場合があります。

PHP Notice:  Trying to get property of non-object in C:test.php on line 77



これは、存在しない(or 値がnullな)変数のプロパティを参照しようとしたときに発生します。

例としては、以下のプログラムの実行で再現させることが出来ます。

<?php
$a = null;
echo $a->value;	// ここでTrying to get property of non-objecが発生する




対処法としては、以下の3つあります。

その1:is_nullでチェックする


対象のオブジェクトがnullで無いことを,is_null()で事前にチェックします。

<?php
$a = null;
if ( is_null( $a ) || is_null( $a->value ) ) {
  // エラー処理
  echo "valueは存在しません\n";
}
echo $a->value;




その2:emptyでチェックする


empty()を使用して、プロパティの存在チェックを行うことも可能です。

<?php
$a = null;
if ( empty( $a->value ) ) {
  // エラー処理
  echo "valueは存在しません\n";
}
echo $a->value;



その3:issetでチェックする


isset()を使用すると、値がnullで無い事に加え、値がセットされているかどうかのチェックができます。

<?php
$a = null;
if ( !isset( $a->value ) ) {
  // エラー処理
  echo "valueは存在しません\n";
}
echo $a->value;




ちなみに、PHP4のときは$aがnullのとき、$a->valueはnullを返す仕様でした。
ですのでPHP4のスクリプトをPHP5に移植した際に警告が出るようになった場合は、データのチェックを追加するか、元変数がnullの場合はプロパティ値もnullとみなすと良いです。


PHPの入門書は、下記の書籍がおすすめです。
通読してもよいですし、手元に置いておき必要な時に見るためのリファレンスとして最適です。

PHPの資格試験の認定教材にも選ばれているため、内容も安心です。

初めてのPHP5 増補改訂版

関連記事

コメントを残す

メールアドレスが公開されることはありません。