以下のエディターは、PHP の静的メソッドと非静的メソッドの使用法の違いを簡単に分析します。編集者はこれがとても良いものだと思ったので、皆さんの参考として今から共有します。エディターに従って見てみましょう
PHP プログラミングでは、static キーワード は、クラスの特定のインスタンスではなく、クラスに関連する 属性またはメソッドを宣言します。 したがって、このタイプの属性またはメソッドは、 「クラス属性」または「クラスメソッド」とも呼ばれます
アクセス制御権限が許可されている場合は、クラスオブジェクトを作成する必要はありませんが、クラス名と2つのコロン「::」を直接使用してそれを呼び出すことができます。
static キーワードは変数とメソッドを変更するために使用できます。 インスタンス化せずに、クラス内の静的属性と静的メソッドに直接アクセスできます。 static の 静的属性はメモリ内に 1 つのコピーのみを持ち、すべてのインスタンスによって共有されます。 現在のクラスの静的メンバーにアクセスするには、self:: キーワードを使用します。 クラスのすべてのインスタンスは、クラス内の静的プロパティを共有します。 つまり、メモリ内に複数のインスタンスがあっても、静的属性のコピーは 1 つだけ存在します。 例、カウンター $count 属性を設定し、プライベートおよび静的な変更を設定します。 このように、外部の世界は $count 属性に直接アクセスできません。プログラムの実行結果には、複数のインスタンスが同じ静的 $count 属性を使用していることも示されています。<?php class user { private static $count = 0 ; //记录所有用户的登录情况. public function construct() { self::$count = self::$count + 1; } public function getcount() { return self::$count; } public function destruct() { self::$count = self::$count - 1; } } $user1 = new user(); $user2 = new user(); $user3 = new user(); echo "now here have " . $user1->getcount() . " user"; echo "<br />"; unset($user3); echo "now here have " . $user1->getcount() . " user"; ?>
<?php class math { public static $pi = 3.14; } // 求一个半径3的园的面积。 $r = 3; echo "半径是 $r 的面积是<br />"; echo math::$pi * $r * $r; echo "<br /><br />"; //这里我觉得 3.14 不够精确,我把它设置的更精确。 math::$pi = 3.141592653589793; echo "半径是 $r 的面积是<br />"; echo math::$pi * $r * $r; ?>
<?php class math { public static function max($num1, $num2) { return $num1 > $num2 ? $num1 : $num2; } } $a = 99; $b = 88; echo "显示 $a 和 $b 中的最大值是"; echo "<br />"; echo math::max($a, $b); echo "<br />"; echo "<br />"; echo "<br />"; $a = 99; $b = 100; echo "显示 $a 和 $b 中的最大值是"; echo "<br />"; echo math::max($a,$b); ?>
<?php // 实现最大值比较的math类。 class math { public static function max($num1, $num2) { return $num1 > $num2 ? $num1 : $num2; } public static function max3($num1, $num2, $num3) { $num1 = self::max($num1, $num2); $num2 = self::max($num2, $num3); $num1 = self::max($num1, $num2); return $num1; } } $a = 99; $b = 77; $c = 88; echo "显示 $a $b $c 中的最大值是"; echo "<br />"; echo math::max3($a, $b, $c); ?>
<?php // class circle { public static $pi = 3.14; public static function circleacreage($r) { return $r * $r * self::$pi; } } $r = 3; echo " 半径 $r 的圆的面积是 " . circle::circleacreage($r); ?>
<?php // 这个方式是错误的 class circle { public $pi = 3.14; public static function circleacreage($r) { return $r * $r * self::pi; } } $r = 3; echo " 半径 $r 的圆的面积是 " . circle::circleacreage($r); ?>
<?php // 实现最大值比较的math类。 class math { public function max($num1, $num2) { echo "bad<br />"; return $num1 > $num2 ? $num1 : $num2; } public static function max3($num1, $num2, $num3) { $num1 = $this->max($num1, $num2); $num2 = $this->max($num2, $num3); $num1 = $this->max($num1, $num2); return $num1; } } $a = 99; $b = 77; $c = 188; echo "显示 $a $b $c 中的最大值是"; echo "<br />"; echo math::max3($a, $b, $c); //同样的这个会报错 ?>
りー
以上がPHPの静的メソッドと非静的メソッドの使用法の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。