php中静态类与静态变量用法区别解析_PHP教程
php中静态类与静态变量用法区别解析
static是定义一个静态对象或静态变量,关于static 定义的变量或类方法有什么特性我们看完本文章的相关实例后就见分晓了.
1. 创建对象$ob ject = new Class(),然后使用”->”调用:$ob ject->attribute/function,前提是该变量/方法可访问.
2. 直接调用类方法/变量:class::attribute/function,无论是静态/非静态都可以,但是有前提条件.
A. 如果是变量,需要该变量可访问.
B. 如果是方法,除了该方法可访问外,还需要满足.
① 如果是静态方法,没有特殊条件.
② 如果是非静态方法,需要改方法中没有使用$this,即没有调用非静态的变量/方法,当然,调用静态的变量/方法没有问题.
然后我们再看一下使用$ob ject->… 和使用class::… 都有什么区别:
1. 使用$ob ject->… ,需要执行构造函数创建对象.
2. 使用class::… 调用静态方法/变量,不需要执行构造函数创建对象.
3. 使用class::… 调用非静态方法/变量,也不需要执行构造函数创建对象.
然后奇怪的地方就出来了,既然2和3都一样,那静态方法/变量存在还有什么意义呢?
静态static:声明类成员或方法为 static,就可以不实例化类而直接访问,不能通过一个对象来访问其中的静态成员(静态方法除外),静态成员属于类,不属于任何对象实例,但类的对象实例都能共享.
例子,代码如下:
[代码]php代码:
01
02Class Person{
03 // 定义静态成员属性
04 public static $country = "中国";
05 // 定义静态成员方法
06 public static function myCountry() {
07 // 内部访问静态成员属性
08 echo "我是".self::$country."人
";
09 }
10}
11class Student extends Person {
12 function study() {
13 echo "我是". parent::$country."人
";
14 }
15}
16// 输出成员属性值
17echo Person::$country."
"; // 输出:中国
18$p1 = new Person();
19//echo $p1->country; // 错误写法
20// 访问静态成员方法
21Person::myCountry(); // 输出:我是中国人
22// 静态方法也可通过对象访问:
23$p1->myCountry();
24
25// 子类中输出成员属性值
26echo Student::$country."
"; // 输出:中国
27$t1 = new Student();
28$t1->study(); // 输出:我是中国人
29?>
运行该例子,输出:
中国
我是中国人
我是中国人
中国
我是中国人
小结:在类内部访问静态成员属性或者方法,使用 self::(注意不是 $slef),代码如下:
slef:: $country
slef:: myCountry()
在子类访问父类静态成员属性或方法,使用 parent::(注意不是 $parent),代码如下:
parent:: $country
parent:: myCountry()
外部访问静态成员属性和方法为 类名/子类名::,代码如下:
Person::$country
Person::myCountry()
Student::$country
但静态方法也可以通过普通对象的方式访问.
例子,声明静态变量,代码如下:
[代码]php代码:
1
2 function foo(){
3 static $int = 0;// correct
4 static $int = 1+2; // wrong (as it is an ex pression)
5 static $int = sqrt(121); // wrong (as it is an ex pression too)
6 $int++;
7 echo $int;
8 }
9?>
例子,使用静态变量的例子,代码如下:
[代码]php代码:
1
2 function Test()
3 {
4 static $w3sky = 0;
5 echo $w3sky;
6 $w3sky++;
7 }
8?>
现在,每次调用 Test() 函数都会输出 $w3sky 的值并加一.
静态变量也提供了一种处理递归函数的方法,递归函数是一种调用自己的函数,写递归函数时要小心,因为可能会无穷递归下去,必须确保有充分的方法来中止递归,一下这个简单的函数递归计数到 10,使用静态变量 $count 来判断何时停止.
例子,静态变量与递归函数,代码如下:
[代码]php代码:
01
02 function Test()
03 {
04 static $count = 0;
05
06 $count++;
07 echo $count;
08 if ($count
09 Test();
10 }
11 $count--;
12 }
13?>
注:静态变量可以按照上面的例子声明,如果在声明中用表达式的结果对其赋值会导致解析错误.

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP用於構建動態網站,其核心功能包括:1.生成動態內容,通過與數據庫對接實時生成網頁;2.處理用戶交互和表單提交,驗證輸入並響應操作;3.管理會話和用戶認證,提供個性化體驗;4.優化性能和遵循最佳實踐,提升網站效率和安全性。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP在現代Web開發中仍然重要,尤其在內容管理和電子商務平台。 1)PHP擁有豐富的生態系統和強大框架支持,如Laravel和Symfony。 2)性能優化可通過OPcache和Nginx實現。 3)PHP8.0引入JIT編譯器,提升性能。 4)雲原生應用通過Docker和Kubernetes部署,提高靈活性和可擴展性。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。
