日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

@value 静态变量_你理解 PHP 中的静态方法吗?

發布時間:2025/3/21 php 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 @value 静态变量_你理解 PHP 中的静态方法吗? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

它仍然是一個有爭議的話題。讓我們嘗試了解原因。

函數中的靜態變量

您可能已經看過以下代碼:

function testStatic() {static $x = 0;$x++;return $x; }

在這里,我們每次調用 testStatic() 時,關鍵字 static 允許遞增 $x:

testStatic(); testStatic(); testStatic(); echo testStatic();

最后輸出 “4”。與其他局部變量不同,靜態變量將其值保留在函數作用域之外。

關于這點有一些有趣的用法,例如備忘錄。人們使用此技術存儲復雜運算之后的結果來優化其腳本。

PHP 類中的靜態

每次在 PHP 類中使用關鍵字 static 時,都在設置與類相關的內容。你無需實例化類即可訪問它們:

class MyClass {public static $myStaticVar;public static function myStaticFunction() {} }MyClass::myStaticFunction(); MyClass::$myStaticVar;

換句話說,你不會將變量和函數綁定到特定對象示例上。

但是,它與過程編程有何不同?為什么還要通過類來使用呢?

靜態方法與過程函數

你的代碼經常需要一些輔助類,大多數時候,它們以靜態調用的形式存在。

$title = TextUtils::normalizeTitle($title);

但是與下面這個有什么不同呢?

$title = normalizeTitle($title);

對于 PHP 而言,這可能沒什么不同。靜態方法相當于命名空間函數,僅此而已。

命名空間從 PHP 5.5 開始引入。從技術上講,下面例子中的簡單的函數與靜態方法沒什么不同。

$title1 = TheNamespaceTextUtils::normalizeTitle($title); $title2 = TheNamespacenormalizeTitle($title);

所以如果類中的所有成員都是靜態的,那么就可以改寫成過程函數和命名空間的形式。但是總是如此嗎?

靜態 VS 面向對象

你不需要實例化類來訪問其靜態方法。因此,你的類的所有實例都共享相同的靜態方法。

在 PHP 類中,你可通過 $this 來獲取當前實例,而靜態方法無法訪問它。

來看看下面這個例子

<?php class Order {public $price;public function __construct($price) {$this->price = self::formatPrice($price);}protected static function formatPrice($price) { return round($price, 3);} }$order = new Order('73.1111'); echo $order->price;

formatPrice() 不需要使用 $this,因為該方法并沒有涉及到實例的變更。它是靜態的,所有的實例共享該方法。

利弊

許多開發更喜歡用非靜態方法而不是靜態方法。一些人認為靜態方法會破壞類的封裝性,另外一些則說靜態方法會導致代碼異味。

不要誤解我,這些確實是事實。我的意思是對于該話題的討論存在一些迷思,例如:

靜態代碼不安全。

相反,在應用中設置非可變元素似乎更安全。

如果你有大量的數據,使用靜態可能不是一個好主意。如果你需要狀態機制,也就是說,需要使用邏輯隔離的實例,這似乎也不是一個好主意。

總結

靜態可能不錯,但可能被誤用了。只是在同等條件下,你不能將其應用于任何事情。

我喜歡 OOP,這是一個很棒的范例,但是我想知道是否所有的東西都需要一個對象。我想不是,我有想聽聽你的意見。

更多學習內容請訪問:

八重櫻:騰訊T3-T4標準精品PHP架構師教程目錄大全,只要你看完保證薪資上升一個臺階(持續更新)?zhuanlan.zhihu.com

以上內容希望幫助到大家,很多PHPer在進階的時候總會遇到一些問題和瓶頸,業務代碼寫多了沒有方向感,不知道該從那里入手去提升,對此我整理了一些資料,包括但不限于:分布式架構、高可擴展、高性能、高并發、服務器性能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell腳本、Docker、微服務、Nginx等多個知識點高級進階干貨需要的可以免費分享給大家,需要的可以加入我的官方群點擊此處。

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的@value 静态变量_你理解 PHP 中的静态方法吗?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。