ホームページ >バックエンド開発 >PHPチュートリアル >【緊急ヘルプ】致命的なエラー: 非オブジェクト上のメンバー関数 *** の呼び出し

【緊急ヘルプ】致命的なエラー: 非オブジェクト上のメンバー関数 *** の呼び出し

WBOY
WBOYオリジナル
2016-06-23 14:21:02959ブラウズ

この投稿の最終編集者は keric2008 です。 2013-08-26 18:33:02

php クラス

ソースコードは非常に長く、抽象化すると、プロセスはおおよそ次のようになります。

{
$instest = new test();
$insobject = new object();

クラステスト{
関数 test(){
$insobject-> hello(); }
}

class object{
function hello(){
echo "hello";
}
}
これにより、次のようなエラーが発生します: Fatal error: Call to a member function hello() /home/latelx64/workspace/zhebo/init.php の 158 行目の非オブジェクト上で

インスタンスが他のインスタンスのパブリック関数を呼び出せないためでしょうか?

そうでない場合、同様の方法でどのように解決する必要がありますか? ? ?
私は PHP の初心者なので、専門家が指導してくれることを願っています。 ! !


ディスカッションに返信 (解決策)
これを行う必要がある場合、関数はパラメーターとオブジェクトを渡す必要があります。

{$instest = new test();$insobject = new object();$instest->test($insobject);}class test{function test($insobject){$insobject->hello();}}class object{function hello(){echo "hello";}}

一般に、設計の観点からは、継承を使用する方が良いでしょう。

継承を使用した例を教えていただけますか? ありがとうございます

ソースコードは非常に長くなりますが、抽象化すると、このようなプロセスになります。


{
$instest = new test();
$insobject = new object();

クラステスト{
関数 test(){
$insobject-> hello(); }
}

class object{
function hello(){
echo "hello";
}
}
これにより、次のようなエラーが発生します: Fatal error: Call to a member function hello() /home/latelx64/workspace/zhebo/init.php の 158 行目の非オブジェクト上で

インスタンスが他のインスタンスのパブリック関数を呼び出せないためでしょうか?

そうでない場合、同様の方法でどのように解決する必要がありますか? ? ?
私は PHP の初心者なので、専門家が指導してくれることを願っています。 ! !

継承を使用すると、親クラスで宣言されたインスタンス内のデータは、サブクラスで宣言されたインスタンスには存在しません。

これはオブジェクト指向とは何の関係もありません。
それは変数スコープの問題です!
class test{

function test(){

$insobject->hello();

}

}
$insobject はローカル変数であり、値は割り当てられません。
もちろん hello メソッドはありません

各関数でグローバル変数を宣言する必要がありますか?

これはオブジェクト指向とは何の関係もありません。
それは変数スコープの問題です!
class test{

function test(){

$insobject->hello();
}
}
$insobject はローカル変数であり、値は割り当てられません。
もちろん、hello メソッドはありません

class test{
。それほど複雑ではありません なんと! !もっと気の利いたものはないでしょうか


これはオブジェクト指向とは何の関係もありません。

それは変数スコープの問題です!

class test{
function test(){
$insobject->hello();
}
}
$insobject はローカル変数であり、値は割り当てられません。
もちろん、hello メソッドはありません

$_ENV['?量名']

?玩意可以超全局使用,?似的?有:

$_GLOBALS['?量名'];$_GET['?量名'];$_POST['?量名'];$_REQUEST['?量名']等

如果你非要这样做的话,那么函数就需要传参,传一个对象进来。

{$instest = new test();$insobject = new object();$instest->test($insobject);}class test{function test($insobject){$insobject->hello();}}class object{function hello(){echo "hello";}}


一般从设计的角度来说,采用继承的方式,会更好。


用你这方法不行。Warning: Missing argument 1 for test::test(), called in C:\wamp\www\zhebo\index.php on line 24 and defined in C:\wamp\www\zhebo\x\init.php on line 170

class test{    function test(){        object::hello();    }}class object{    Public static function hello(){        echo "hello";    }}

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:for出次の記事:for出