《PHP實例:淺析php靜態方法與非靜態方法的用法區別》要點:
本文介紹了PHP實例:淺析php靜態方法與非靜態方法的用法區別,希望對您有用。如果有疑問,可以聯系我們。
PHP應用在php編程中,static關鍵字聲明一個屬性或辦法是和類相關的,而不是和類的某個特定的實例相關,因此,這類屬性或辦法也稱為“類屬性”或“類辦法”
PHP應用如果拜訪控制權限允許,可不必創建該類對象而直接使用類名加兩個冒號“::”調用.
PHP應用static關鍵字可以用來修飾變量、辦法.
PHP應用不經過實例化,就可以直接拜訪類中static的屬性和static的方法.
PHP應用static 的屬性和方法,只能拜訪static的屬性和方法,不能類拜訪非靜態的屬性和方法.因為靜態屬性和方法被創建時,可能還沒有任何這個類的實例可以被調用.
PHP應用static的屬性,在內存中只有一份,為所有的實例共用.
PHP應用使用self:: 關鍵字拜訪當前類的靜態成員.
PHP應用一個類的所有實例,共用類中的靜態屬性.
PHP應用即在內存中即使有多個實例,靜態的屬性也只有一份.
PHP應用例子,設置了一個計數器$count屬性,設置private 和 static 修飾.
PHP應用這樣,外界并不能直接拜訪$count屬性.而程序運行的結果也看到多個實例在使用同一個靜態的$count 屬性.
PHP應用
<?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應用二,靜態屬性直接調用
PHP應用靜態屬性不需要實例化就可以直接使用,在類還沒有創建時就可以直接使用.
PHP應用使用方式:
PHP應用類名:: 靜態屬性名
PHP應用
<?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應用類沒有創建,靜態屬性就可以直接使用.那靜態屬性在什么時候在內存中被創建?
PHP應用在php中沒有看到相關的資料.
PHP應用引用java中的概念,來解釋應該也具有通用性.靜態屬性和辦法,在類被調用時創建.
PHP應用三,靜態辦法
PHP應用靜態辦法不需要所在類被實例化就可以直接使用.
PHP應用使用的方式是類名::靜態辦法名
PHP應用繼續寫這個math類,用來進行數學計算.
PHP應用設計一個辦法用來算出其中的最大值.既然是數學運算,也沒有必要去實例化這個類,如果這個辦法可以拿過來就用就方便多了.
PHP應用這只是為了演示static辦法而設計的這個類.在php提供了 max() 函數比較數值.
PHP應用
<?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應用靜態辦法如何調用靜態辦法
PHP應用第一個例子,一個靜態辦法調用其它靜態辦法時,使用self::
PHP應用
<?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應用?靜態辦法調用靜態屬性
PHP應用使用self:: 調用本類的靜態屬性.
PHP應用
<?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應用?靜態辦法不能調用非靜態屬性 .不能使用self::調用非靜態屬性.
PHP應用
<?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應用也不能使用 $this 獲取非靜態屬性的值.
PHP應用靜態辦法調用非靜態辦法
PHP應用php5中,在靜態辦法中不能使用 $this 標識調用非靜態辦法.
PHP應用
<?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應用當一個類中有非靜態辦法被self:: 調用時,系統會自動將這個辦法轉換為靜態辦法.
PHP應用
<?php
// 實現最大值比較的math類.
class math
{
public 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 = 188;
echo "顯示 $a $b $c 中的最大值是";
echo "<br />";
echo math::max3($a, $b, $c);
?>
PHP應用以上這篇淺析php靜態辦法與非靜態辦法的用法區別就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持維易PHP.
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/6602.html