php在類定義一個我靜態變量,php中靜態類與靜態變量用法的區別分析_PHP教程

php中靜態類與靜態變量用法的區別分析

static是定義一個靜態對象或靜態變量,關于static 定義的變量或類方法有什么特性我們看完本文章的相關實例后就見分曉了.

1. 創建對象$object = new Class(),然后使用”->”調用:$object->attribute/function,前提是該變量/方法可訪問.

2. 直接調用類方法/變量:class::attribute/function,無論是靜態/非靜態都可以,但是有前提條件.

A. 如果是變量,需要該變量可訪問.

B. 如果是方法,除了該方法可訪問外,還需要滿足.

① 如果是靜態方法,沒有特殊條件.

② 如果是非靜態方法,需要改方法中沒有使用$this,即沒有調用非靜態的變量/方法,當然,調用靜態的變量/方法沒有問題.

然后我們再看一下使用$object->… 和使用class::… 都有什么區別:

1. 使用$object->… ,需要執行構造函數創建對象.

2. 使用class::… 調用靜態方法/變量,不需要執行構造函數創建對象.

3. 使用class::… 調用非靜態方法/變量,也不需要執行構造函數創建對象.

然后奇怪的地方就出來了,既然2和3都一樣,那靜態方法/變量存在還有什么意義呢?

靜態static:聲明類成員或方法為 static,就可以不實例化類而直接訪問,不能通過一個對象來訪問其中的靜態成員(靜態方法除外),靜態成員屬于類,不屬于任何對象實例,但類的對象實例都能共享.

例子,代碼如下:

代碼如下:

運行該例子,輸出:

中國

我是中國人

我是中國人

中國

我是中國人

小結:在類內部訪問靜態成員屬性或者方法,使用 self::(注意不是 $slef),代碼如下:

代碼如下:

slef:: $country

slef:: myCountry()

在子類訪問父類靜態成員屬性或方法,使用 parent::(注意不是 $parent),代碼如下:

代碼如下:

parent:: $country

parent:: myCountry()

外部訪問靜態成員屬性和方法為 類名/子類名::,代碼如下:

代碼如下:

Person::$country

Person::myCountry()

Student::$country

但靜態方法也可以通過普通對象的方式訪問.

例子,聲明靜態變量,代碼如下:

代碼如下:

例子,使用靜態變量的例子,代碼如下:

代碼如下:

現在,每次調用 Test() 函數都會輸出 $w3sky 的值并加一.

靜態變量也提供了一種處理遞歸函數的方法,遞歸函數是一種調用自己的函數,寫遞歸函數時要小心,因為可能會無窮遞歸下去,必須確保有充分的方法來中止遞歸,一下這個簡單的函數遞歸計數到 10,使用靜態變量 $count 來判斷何時停止.

例子,靜態變量與遞歸函數,代碼如下:

代碼如下:

注:靜態變量可以按照上面的例子聲明,如果在聲明中用表達式的結果對其賦值會導致解析錯誤.

http://www.bkjia.com/PHPjc/944486.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/944486.htmlTechArticlephp中靜態類與靜態變量用法的區別分析 static是定義一個靜態對象或靜態變量,關于static 定義的變量或類方法有什么特性我們看完本文章的相...

相關文章

相關視頻

網友評論

文明上網理性發言,請遵守 新聞評論服務協議我要評論

47d507a036d4dd65488c445c0974b649.png

立即提交

專題推薦064df72cb40df78e80e61b7041ee044f.png獨孤九賤-php全棧開發教程

全棧 100W+

主講:Peter-Zhu 輕松幽默、簡短易學,非常適合PHP學習入門

7dafe36c040e31d783922649aefe0be1.png玉女心經-web前端開發教程

入門 50W+

主講:滅絕師太 由淺入深、明快簡潔,非常適合前端學習入門

04246fdfe8958426b043c89ded0857f1.png天龍八部-實戰開發教程

實戰 80W+

主講:西門大官人 思路清晰、嚴謹規范,適合有一定web編程基礎學習

php中文網:公益在線php培訓,幫助PHP學習者快速成長!

Copyright 2014-2020 https://www.php.cn/ All Rights Reserved | 蘇ICP備2020058653號-1e6cebb680dfe320dad7e62bd6442c3a6.gif

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/443193.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443193.shtml
英文地址,請注明出處:http://en.pswp.cn/news/443193.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

matlab 排序點,matlab如何進行排序?

來自SORT的MATLAB文檔&#xff1a;If A has complex entries r and s,sort orders them according to thefollowing rule: r appears before s insort(A) if either of the followinghold:abs(r) < abs(s)abs(r) abs(s) and angle(r) < angle(s)換言之&#xff0c;具有復…

matlab不同調制方式下性能比較,用不同調制方式實現跳/擴頻混合通信的抗干擾性能...

論文寫作指導&#xff1a;請加QQ229366758摘要&#xff1a;介紹了BPSK&#xff0c;QPSK&#xff0c;16PSK&#xff0c;FSK&#xff0c;MSK及GMSK 6種數字調制方式的特點&#xff0c;采用Matlab中的Simulink建立了各種調制方式實現DS/FH混合擴頻系統的仿真模型。重點研究了跳/擴…

matlab cd參數,MATLAB變量參數列表?

默認值default value對于用戶沒有傳遞參數值時給函數進行自動賦給該參數的值?比如上述的例子中&#xff0c;阻尼系數&#xff0c;用戶通常不清楚&#xff0c;可以由系統給出更為合適。怎么做到呢&#xff1f;?可以結合MATLAB的一個函數nargin&#xff0c;它能給出函數輸入參數…

java 旋轉方向,Java 2d方向鼠標點旋轉

使用Graphics2D旋轉方法確實是最簡單的方法.這是一個簡單的實現&#xff1a;int centerX width / 2;int centerY height / 2;double angle Math.atan2(centerY - mouseY, centerX - mouseX) - Math.PI / 2;((Graphics2D)g).rotate(angle, centerX, centerY);g.fillRect(...)…

基于matlab 的燃油噴霧圖像處理方法,基于MATLAB的燃油噴霧圖像處理方法.doc

基于MATLAB的燃油噴霧圖像處理方法基于MATLAB的燃油噴霧圖像處理方法摘要:提出了基于MATLAB的燃油噴霧圖像處理方法。通過對噴霧圖像的采集, 分割和濾波處理, 將多幅圖像轉換融合為一幅比較清楚的二值圖像, 對拍攝的噴霧圖像進行了去噪及二值化等初步處理, 并提取其輪廓圖, 求取…

matlab聲音信號時域頻域轉換,關于處理用采集卡采集到的聲音時域信號轉化成頻域信號........

求助各位大神&#xff0c;我用麥克風通過采集卡采集到了一段聲音數據&#xff0c;數據在附件里&#xff0c;矩陣中第一列為時間&#xff0c;第二列為采集到的聲音的電壓信號&#xff0c;采樣頻率為1萬Hz&#xff0c;做出時域圖和頻域圖的程序如下所示&#xff1a;clear;clc;loa…

win7和mysql亂碼,windows本地mysql數據庫存入中文亂碼

windows本地mysql數據庫存入中文亂碼作者:PHPYuan 時間:2018-07-23 03:41:20出現的問題&#xff1a; 我這頁面存中文到數據庫會亂碼 我打了斷點 中文是傳到后臺dao層的 然后我試了下 把我本地項目連服務器數據庫 保存不會亂碼 我就懷疑是本地數據庫有問題 然后我用navicat寫了個…

畢業設計matlab在誤差處理中的應用,畢業設計MATLAB在誤差處理中的應用要點分析.doc...

畢業論文任務書院(系) 機械工程學院 專業班級 測控082級 學生姓名 馬 魁一、畢業論文題目 MATLAB在誤差理論中的應用二、畢業論文工作自______ ___年____ _月___ __日 起至____ _____年 月_____日止三、畢業論文進行地點: 陜西理工學院四、畢業論文內容要求&#xff1a;傳統的數…

帝國cms 未審核 showinfo.php,帝國CMS批量修改文章未審核狀態及批量修改上線時間...

帝國CMS批量修改審核文章未審核狀態&#xff0c;批量自定義指定文件上線時間&#xff01;用法&#xff1a;后臺增加自定義頁面 PHP CODE:$infouptimeto_time(2016-06-12 10:50:19); //上線時間$sql$empire->query("select * from {$dbtbpre}ecms_".$class_r[2][…

php 完美防sql注入,PHP 完美的防XSS 防SQL注入的代碼

PHP "完美"的防XSS 防SQL注入的代碼function gjj($str){$farr array("/s/","/]*?)>/isU","/(]*)on[a-zA-Z]s*([^>]*>)/isU",);$str preg_replace($farr,"",$str);return addslashes($str);}function hg_input_b…

oracle 并行執行 殺掉會話,oracle – 為什么即使我禁用并行DML和并行DDL也會創建并行會話...

READ和WRITE并行性并不總是捆綁在一起.alter session disable parallel dml;僅禁用語句的WRITE部分的并行性. READ部分可能仍然并行運行.由于這是MERGE操作,因此并行提示請求讀寫并行寫入.此外,并行提示覆蓋alter session disable parallel query;,即使它不覆蓋alter session d…

oracle臨時表空間占用率過高,ORACLE 臨時表空間使用率過高的原因及臨時解決方案...

數據庫temp臨時表空間增大&#xff0c;一般在數據安裝時設置臨時表空間大小&#xff0c;默認的情況下都是設置為自動增長。這樣會引起一個問題&#xff1a;在數據庫使用中temp表空間會自動擴展的越來越大&#xff0c;造成磁盤空間使用不足。引起臨時表空間增大主要使用在以下幾…

oracle11g中的join,sql - 使用Oracle 11g中的+符號進行左外連接

()相當于()。在Oracle中&#xff0c;()表示JOIN中的“可選”表。 所以在你的第一個查詢中&#xff0c;它是一個().在你的第二個查詢中&#xff0c;它是()。它們在功能上是等價的。在術語中&#xff0c;RIGHT或LEFT指定連接的哪一側始終具有記錄&#xff0c;而另一側可能為空。 …

oracle中order by 2,關于oracle中ROWNUM和ORDER BY的問題(2)

SQL code16:29:53 scottTUNGKONG> SELECT a.*,rownum FROM (SELECT good_id, good_nm, prc FROM tb_ag001 ORDER BY prc) a;GOOD_I GOOD_NM PRC ROWNUM------ ------------------------------ ---------- ----------133337 陽光寶貝防曬修復套SPF-30 0 1133424 旋覆透白繡花…

oracle 600 侯,oracle在導入數據時報600錯誤的解決方法

前言前幾天導入一個大容量dmp數據文件&#xff0c;報一個600錯誤&#xff0c;咨詢網上的解決方法&#xff0c;按上面的處理一圈也沒有整好&#xff0c;最后咨詢組里一個大神&#xff0c;出現此錯誤 思路是&#xff0c;單個數據文件大小最大為32G&#xff0c;分析數據庫后解決如…

php null截斷 漏洞,CVE-2015-3412,CNNVD-201507-164|PHP NULL Character 安全漏洞 - 信息安全漏洞門戶 VULHUB...

PHP(PHP&#xff1a;Hypertext Preprocessor&#xff0c;PHP&#xff1a;超文本預處理器)是PHP Group和開放源代碼社區共同維護的一種開源的通用計算機腳本語言。該語言主要用于Web開發&#xff0c;支持多種數據庫及操作系統。 PHP中存在安全漏洞&#xff0c;該漏洞源于程序沒有…

Oracle插數據timeout,oracle 11g 頻繁報kmgs_parameter_update_timeout

各位 好&#xff01;我的數據庫RAC 11g 最近頻繁報錯&#xff0c;數據庫版本是11.2.0.1.0 詳細錯誤信息如下&#xff1a;Errors in file /u01/app/oracle/diag/rdbms/glddb/glddb1/trace/glddb1_mmon_27429.trc (incident123874):ORA-00600: internal error code, arguments: …

shell從oracle中獲取變量,shell 如何讀取環境變量的值

筆者最近在開發中遇到新舊版本不兼容的問題&#xff0c;需要我解析的內容更新到最新后對于舊的日志將不支持&#xff0c;所以我需要設置開關來區分是用新的腳本還是原來舊的腳本&#xff1b;這樣我就遇到了比較基礎的問題&#xff0c;那就是在shell腳本中如何讀取環境變量并使用…

linux touch更新文件時間,Linux文件時間的查看和修改touch

1. Linux文件的時間Linux下文件時間主要有下面三種&#xff1a;1.1 modification time(mtime)文件修改時間&#xff0c;即文件內容的修改時&#xff0c;更新這個時間&#xff0c;不包括文件權限和屬性的修改。使用ls -l查看&#xff0c;默認顯示時間為mtime$ ls -l uconv.h-rw-…

linux中ftp禁止匿名,linux下禁止root和匿名用戶登錄ftp

1、ftp通過root或其他用戶進入可視化界面權限過大&#xff0c;容易導致系統文件誤刪windows下輸入ftp://IP去訪問&#xff0c;不需要賬號密碼就可以訪問到ftp文件夾剛進去pub是空的&#xff0c;在linux上新增一個txt文件&#xff0c;再去windows下刷新可以看到txt文件&#xff…