當前位置:首頁 » 編程語言 » php修飾符

php修飾符

發布時間: 2024-10-15 21:44:33

php 為什麼第一個函數前面不能加public

這些是類里的修飾符,訪問控制(可見性),用於對屬性或方法的訪問控制
比如 public protected private
所以在非class用public是不正確的

⑵ PHP常用正則表達式匯總

1、w就是匹配字母或數字或下劃線或漢字,+則與*差不多,區別是+包括重復0次,而*就可以。=就ushi匹配=號兩個斜杠則表示正則表達式的分界。

2、正則表達式的限定符有:ThinkPHP的自動驗證機制是為了進行表單數據驗證,驗證可以支持function、callback、confirm、equal、unique和regex,這里要講的是使用正則表達式進行驗證。特殊字元許多元字元要求在試圖匹配它們時特別對待。

3、^/?[a-zA-Z0-9=:]*$!是對php中單引號的轉義。或者還有更簡單的!^/?[a-z0-9=:]*$!ii表示忽略大小寫。模式分隔符就是為了區分表達式和像i這樣的模式修飾符而設計的。

⑶ 說說php面向對象編程時static,public,private,protected 各有什麼意義

staticpublic與publicstatic是等價的,這兩者只是兩個修飾符的順序不同。根據oracle.com教材中第八章的描述,如果兩個或兩個以上的(不同的)欄位修飾符出現在欄位聲明,它們出現的順序需與FieldModifier一致,這只是習慣,但不是必需的。部分修飾符說明:public是訪問許可權修飾符,用於控制外界對類內部成員的訪問,聲明為public的對象成員是完全共有的,外界可以隨意訪問,除此之外還有private,protected和默認。static控制類成員變化的修飾符。static是靜態成員修飾符,其修飾的靜態變數脫離具體對象獨立存在,在內存中之後一份拷貝,所有的對象都公用這一個存儲空間,所以對static修飾的靜態變數進行的修改對該類的所有對象都起作用。static修飾的靜態函數代表所有對象的統一操作,只能調用靜態變數。static是針對面向對象中的「多態」而提出來的,static修飾的靜態成員不存在多態性。附:FieldModifier順序

⑷ php正則表達式的修飾符,小寫u是什麼意思

一般寫在字元串前面,u是代表Unicode字元串,r代表頌肢原野察世字元串【裡面的特殊字元不轉義,如\n不會當作換行符,就是字面的意思】沒如

⑸ PHP正則表達式((:[0-9a-zA-Z$_.`-]|[\xC2-\xDF][\x80-\xBF])+)/is是什麼意思

(?: )表示只進行分組,不進行捕獲

[0-9a-zA-Z$_.`-] ——0-9、a-z、A-Z或$、_、.、`、-中的一個字元
| ——表示或者
[\xC2-\xDF][\x80-\xBF] ——用十六進製表示的字元范圍【具體是什麼字元不太清楚,比如漢字的范圍一般是 4E00-9FA5】
+ ——前面的字元有一個或多個
(?: +) 外面的括弧( )——是捕獲括弧。即不捕獲單個匹配字元,只捕獲匹配的最大字串。
/is——是PHP中正則表達式模式修飾符,其中i代表 不區分大小寫,s代表:如果設定了這個修正符,那麼,被匹配的字元串將視為一行來看,包括換行符,換行符將被視為普通字元串。
模式修飾符還有:m、x、e等

⑹ php中聲明變數var與private、public、static的區別

var
是聲明一個變數/對象,public,
private,
是類/類的屬性/類的欄位的訪問修飾符,static是類/類的屬性/類的欄位的修飾符

⑺ php和c,c++的區別是什麼

的區別:
一個有protected成員變數(假設為i)的類型Base,他的子類Derived直接繼承自Base,同時Derived有一個成員函數func,他的參數是Base類型的,這個函數可以訪問Base對象的protecte的成員嗎?在C++中不可以,而在PHP中可以。


關於重載:
PHP中不支持C++中的重載,重新定義個函數(不管是參數相同還是不同,都會導致重復定義錯誤)。PHP有自己的重載方法,而且比C++中的更廣泛,他不僅可以重載函數(通過使運散用__call()方法),還可以重載成員變數(通過使用__get()和__set())。而C++中只能對函數進行重載,而且重載的方法只有:不同的參數類型,不同的函數修飾符(const)。


關於abstract和interface
PHP中配悄余有這兩個修飾符,因為PHP不支持對一個普通類的多繼承,因此interface用於實現多繼承。Abstract類在C++中也存在,只是實現方培滾式不一樣,C++中使用pure virtual函數來表明這個類是抽象類,不能單獨被實例化。而PHP中不僅可以使用函數的修飾符abstract(另外class前也必須標明abstract)來標明這個意思,也可以只使用abstract修飾符修飾class更直接的表明他是抽象類。另外, C++中的pure virtual函數不受訪問類型的限制,不管是什麼訪問類型,都會被看作是public;而php中的abstract函數不能被聲明成private,僅此而已。


多態
因為PHP是弱類型語言,所以他的多態性到處都有體現,導致他的多態性不像C++中那麼明顯。比如,在PHP中基類的函數可以看作全是virtual的,因此它不需要加任何修飾符,子類中和基類同名的函數都會被動態調用,而C++不一樣,如果基類中的這個函數沒有加virtual修飾符,子類中的那個同名函數就不會被動態調用,只能靜態調用了。

操作符重載
PHP中不存在,而C++存在。重點在==操作符,在PHP中他可以運用在任何類型上,即使這個類型沒有(像C++中一樣)寫自己的==重載函數。PHP中對於對象的比較,==表示兩個對象的屬性和值都一樣,而且類型也一樣;PHP也存在一個===操作符,表示他們引用了同一個對象,這跟java中很像吧。


final關鍵字
PHP中存在這個關鍵字,表示這個函數不能被重寫(如果他用來修飾函數),或者類不能被繼承(如果用類修飾class)。而C++中沒有這個關鍵字,也無法模擬出那個效果。


對象賦值和拷貝
C++中的拷貝或者賦值大致有這三種方式。

一種是指針的賦值,即p1 = &obj,相當於PHP和java中的賦值操作;

另一種是memberwise assignment,也就是在obj1 = obj2時發生的事情,默認情況下執行淺度拷貝,和PHP中clone的效果一樣。他可以通過重載賦值拷貝操作來執行你的深度拷貝或者其他自定義的拷貝,這就相當於PHP中的__clone()成員函數;

第三種是memberwise initialization,也就是在參數傳遞時,傳遞返回值時或者包含對象的容器初始化的時候自動運行的,你可以通過自己定義拷貝構造函數來控制它的效果。

拷貝構造函數在PHP中幾乎用不到,因為他的傳遞是完全按引用傳遞,而不是對象的直接拷貝。

熱點內容
安卓vivo藍牙耳機掉了一隻怎麼找 發布:2024-11-24 08:45:28 瀏覽:846
加油站腳本 發布:2024-11-24 08:44:02 瀏覽:433
絕地求生和cod哪個更吃配置 發布:2024-11-24 08:42:36 瀏覽:944
在哪裡可以下載小游戲安卓版 發布:2024-11-24 08:42:30 瀏覽:691
移動硬碟怎麼解除加密 發布:2024-11-24 08:42:30 瀏覽:492
資料庫可以存儲圖片嗎 發布:2024-11-24 08:33:55 瀏覽:592
linux私房菜基礎篇 發布:2024-11-24 08:32:36 瀏覽:327
高創腳本 發布:2024-11-24 08:32:22 瀏覽:77
java字元串byte 發布:2024-11-24 08:08:18 瀏覽:636
idc資料庫 發布:2024-11-24 08:04:58 瀏覽:81