ホームページ > バックエンド開発 > PHPの問題 > PHPの静的メソッドで非静的変数を呼び出すにはどうすればよいですか?

PHPの静的メソッドで非静的変数を呼び出すにはどうすればよいですか?

青灯夜游
リリース: 2023-03-05 15:20:02
オリジナル
4170 人が閲覧しました

PHP では、静的メソッドは self キーワードを使用して、「self::$name」などの非静的変数を呼び出すことができます。メソッドが「self::」になった後は、自動的に静的メソッドになります。 。

PHPの静的メソッドで非静的変数を呼び出すにはどうすればよいですか?

推奨: 「PHP ビデオ チュートリアル

PHP での静的 (静的) 呼び出し非静的メソッドの詳細説明

ここでは、PHP オブジェクト指向における静的属性と静的メソッドの呼び出しを分析します。呼び出し(呼び出せるかどうか、どのように呼び出すか)については、メモリのどこに保存されているかを理解する必要があるため、非常に理解しやすいです。静的プロパティとメソッド (静的および非静的を含む) は、メモリ内に 1 つの場所しかありません (静的プロパティではなく、インスタンス化されたオブジェクトと同じ数のプロパティがあります)。

例:

<?php
header("content-type:text/html;charset=utf-8");
class Human{
 static public $name = "小妹";
 public $height = 180;
 static public function tell(){
 echo self::$name;//静态方法调用静态属性,使用self关键词
 //echo $this->height;//错。静态方法不能调用非静态属性
//因为 $this代表实例化对象,而这里是类,不知道 $this 代表哪个对象                                                                                     
 }
 public function say(){
 echo self::$name . "我说话了";
 //普通方法调用静态属性,同样使用self关键词
 echo $this->height;
 }
}
$p1 = new Human();
$p1->say(); 
$p1->tell();//对象可以访问静态方法
echo $p1::$name;//对象访问静态属性。不能这么访问$p1->name
//因为静态属性的内存位置不在对象里
Human::say();//错。say()方法有$this时出错;没有$this时能出结果
//但php5.4以上会提示
?>
ログイン後にコピー

1. 静的プロパティを呼び出すには、self:: を使用します。静的メソッドであっても非静的メソッドであっても、次のように呼び出すことができます。 static プロパティ;結論:

2. 静的メソッドは、self キーワードを使用して非静的メソッドを呼び出すことができます。 PHP では、メソッドが self:: と呼ばれた後、自動的に静的メソッドに変換されます;

3. 静的メソッドは非静的属性を呼び出すことはできません。非静的プロパティはインスタンス化してオブジェクトに保存する必要があるため;

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

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