Fatal error: Call to a member function **() on a non-object in ○○ on line △△

エラーメッセージFatal error

概要

 状態:-  閲覧数:46,601  投稿日:2010-04-27  更新日:2013-04-06  
○○ファイルの△△行目付近(以前)で、オブジェクトに関連付けられていないメンバー関数を呼び出したことによる、致命的エラー


エラーメッセージ


Fatal error: Call to a member function **() on a non-object in ○○ on line △△


エラーレベル


致命的エラー


原因


・オブジェクトに関連付けられていないメンバー関数の呼び出し
ファイルのパスと行番号
・○○ ファイル △△ 行目


遭遇例


1.インスタンス作成以前の、メンバー関数呼び出し
2.メンバー関数を呼び出す際のオブジェクト名が、作成したインスタンス名と異なる
3.「子クラスで明示的に呼び出していない親クラスコンストラクタ」内に記述された内容に関連するメソッドの呼び出し

遭遇例1.インスタンス作成以前の、メンバー関数呼び出し

 閲覧数:806 投稿日:2013-04-06 更新日:2013-04-06 

遭遇例


▽インスタンス作成以前に、メンバー関数を呼び出した

class CHARACTER{
function CHARACTER($stamina){//コンストラクタ
処理内容;
}
function get_stamina(){
処理内容;
}
}
$character->get_stamina();
$character = new CHARACTER(60);


対応例


▽インスタンス作成後、メンバー関数を実行

class CHARACTER{
function CHARACTER($stamina){//コンストラクタ
処理内容;
}
function get_stamina(){
処理内容;
}
}
$character = new CHARACTER(60);
$character->get_stamina();


遭遇例2.メンバー関数を呼び出す際のオブジェクト名が、作成したインスタンス名と異なる

 閲覧数:743 投稿日:2013-04-06 更新日:2013-04-06 

遭遇例


▽メンバー関数を呼び出す際のオブジェクト名が、作成したインスタンス名と異なる

class CHARACTER{
function CHARACTER($stamina){//コンストラクタ
処理内容;
}
function get_stamina(){
処理内容;
}
}
$character = new CHARACTER(60);
$characterman->get_stamina();


対応例


▽作成したインスタンス名で、メンバー関数を呼び出す

class CHARACTER{
function CHARACTER($stamina){//コンストラクタ
処理内容;
}
function get_stamina(){
処理内容;
}
}
$character = new CHARACTER(60);
$character->get_stamina();


遭遇例3.「子クラスで明示的に呼び出していない親クラスコンストラクタ」内に記述された内容に関連するメソッドの呼び出し

 閲覧数:734 投稿日:2013-04-06 更新日:2013-04-06 

遭遇例


・「子クラスで明示的に呼び出していない親クラスコンストラクタ」内に記述された内容に関連するメソッドの呼び出し

対応例


parent::__construct();//派生クラスのコンストラクタ内で、基底クラスのコンストラクタを実行


補足


・PHP仕様により、親クラスのコンストラクタは自動実行されない
・本来であれば子クラス側から明示的に呼び出す必要があるのだが、その記述が抜けていたため、親クラスコンストラクタに記述された処理内容は、実質的にないものと同じ状態になっていた
・その状態で、関連するメソッドを呼び出そうとしても、存在しないメンバー関数の呼び出しとなり、同エラー


Fatal error: Class '**' not found in ○○ on line △△

Fatal error: Class declarations may not be nested in ○○ on △△

コメント投稿(ログインが必要)



週間人気ページランキング / 7-20 → 7-26
順位 ページタイトル抜粋 アクセス数
1 Parse error: syntax error, unexpected 'public' (T_PUBLIC) | Parse error(エラーメッセージ) 6
2 ブラウザを閉じたらセッションデータはどうなるの? | セッション 5
3 コード例 … 「例外処理」はネストすることができる 4
4 Fatal error: Access level to ▲::$△ must be protected (as in class ●) or weaker | Fatal error(エラーメッセージ) 3
4 PHPで定数を定義する方法は2種類ある / 配列定数の定義 3
4 Parse error: syntax error, unexpected 'new' (T_NEW) | Parse error(エラーメッセージ) 3
4 ブラウザを閉じたらセッションデータはどうなるの? | セッション 3
4 curl で Cookie を使用する 3
4 ( ! ) Deprecated: implode(): Passing glue string after array is deprecated. Swap the parameters in ★★★ headless-chromium-php/vendor/wrench/wrench/lib/Wrench/Protocol/Protocol.php | エラーメッセージ 3
4 or(||) | 演算子 3
5 Composer | 依存関係マネージャ 2
5 グローバル変数 | 変数 2
5 new clone違い | 演算子 2
5 php-devel とは? 2
5 session_start() | セッション 2
5 Fatal error: Uncaught Error: Class 'Mecab_Tagger' not found in /var/www/★★.php:☆☆ | Fatal error(エラーメッセージ) 2
5 例外処理 | 制御構造 2
5 ( ! ) Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined | Fatal error(エラーメッセージ) 2
5 関数 2
6 セッション単位 | セッション 1
2024/7/27 1:01 更新