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

エラーメッセージFatal error

概要

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


エラーメッセージ


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


エラーレベル


致命的エラー


原因


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


遭遇例


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

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

 閲覧数:1,023 投稿日: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.メンバー関数を呼び出す際のオブジェクト名が、作成したインスタンス名と異なる

 閲覧数:952 投稿日: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.「子クラスで明示的に呼び出していない親クラスコンストラクタ」内に記述された内容に関連するメソッドの呼び出し

 閲覧数:947 投稿日: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 △△

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



週間人気ページランキング / 11-29 → 12-5
順位 ページタイトル抜粋 アクセス数
1 ブラウザを閉じたらセッションデータはどうなるの? | セッション 5
2 PHPにおけるメソッドのオーバーライドについて /「引数の数や型は、親クラスのメソッドと完全に一致していなければなりません。」とは具体的にどういう意味ですか? 4
3 ob紛らわしい関数()一覧 | 出力バッファリング制御(関数) 3
3 「POSIX正規表現」と「PCRE正規表現」の違い 3
3 curl で Cookie を使用する 3
4 define と const の違い | 定数 2
4 クロージャ | 関数 2
4 MySQL接続方法比較 | データベース関連 2
4 エラーレベル | エラー設定(エラーメッセージ) 2
4 対応例1.メモリ不足なので、PHPの最大使用メモリを増加するよう変更 2
4 Warning: mb_convert_encoding(): Unable to detect character encoding | Warning(エラーメッセージ) 2
4 Parse error: syntax error, unexpected 'new' (T_NEW) | Parse error(エラーメッセージ) 2
4 Fatal error: Access level to ▲::$△ must be protected (as in class ●) or weaker | Fatal error(エラーメッセージ) 2
4 Parse error: syntax error, unexpected 'public' (T_PUBLIC) | Parse error(エラーメッセージ) 2
4 Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting | エラーメッセージ 2
4 set_error_handler | 例外処理(制御構造) 2
4 セッション管理が必要な理由は、HTTPプロトコルには状態を保持する機能がないため | セッション 2
5 ( ! ) Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'カラム名' cannot be null | Fatal error(エラーメッセージ) 1
5 Parse error: syntax error, unexpected T_REQUIRE_ONCE, expecting T_FUNCTION | Parse error(エラーメッセージ) 1
5 エラーメッセージ 1
2025/12/6 1:01 更新