ホームページ > バックエンド開発 > PHPの問題 > PHPでは静的メソッドと非静的メソッドはどのように相互に呼び出しますか?

PHPでは静的メソッドと非静的メソッドはどのように相互に呼び出しますか?

coldplay.xixi
リリース: 2023-03-03 06:40:01
オリジナル
3633 人が閲覧しました

PHP で静的メソッドと非静的メソッドが相互に呼び出す方法: 1. 非静的メソッドは静的メソッドを呼び出します。これらは、[self] またはクラス名に [::] を加えた形式で呼び出すことができます。 ; 2. 静的メソッドは非静的メソッドを呼び出します 静的メソッド: クラス内の静的メソッドでは、オブジェクトをインスタンス化してからクラス内のメソッドを呼び出す必要があります。

PHPでは静的メソッドと非静的メソッドはどのように相互に呼び出しますか?

php で静的メソッドと非静的メソッドが相互に呼び出す方法:

静的メソッドが非静的メソッドを呼び出すメソッド: クラス内の静的メソッドでは、オブジェクトをインスタンス化してからクラスのメソッドを呼び出す必要があります。

非静的メソッドは静的メソッドを呼び出します。self## が可能です。 # または、クラス名に を追加します。::form call

以下の場合:

<?php
class A{
    public function noneStaticFun(){
        echo  __CLASS__." none static function<br/>";
    }
    public static function staticFun(){
        echo __CLASS__." static function<br/>";
        //静态方法调用非静态方法,需要实例化对象然后再调用对象中的非静态方法
        (new A())->noneStaticFun();
    }
    public function testCallStaticFun(){
        echo "call static function<br/>";
        //调用本类的静态方法,使用 self关键字或者类名
        self::staticFun();
        //A::staticFun(); //也可以使用这种方式
        //调用其它类的静态方法,直接使用类名::方法名的形式调用
        B::myStaticFun();
    }
}
class B{
    public static function myStaticFun(){
        echo __CLASS__." static function<br/>";
    }
}
//演示
$testA = new A();
$testA->testCallStaticFun();
A::staticFun();
ログイン後にコピー

実行結果:

call static function
A static function
A none static function
B static function
A static function
A none static function
ログイン後にコピー

関連学習に関する推奨事項:

PHP プログラミングをマスターするには

以上がPHPでは静的メソッドと非静的メソッドはどのように相互に呼び出しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート