PHP 板


LINE

看板 PHP  RSS
我先假設 PHP 對 static 的定義跟 Java 完全一樣 (版主可以因此直接砍掉這篇,我不會有怨言的 [逃]) ※ 引述《tails32100 (Tails)》之銘言: : 小弟這問題一年前就有了 : 原文: : https://disp.cc/b/tails#!546-3zvE : 剛剛把程式碼再拿出來試 : 發現出現錯誤 : Strict standards: Non-static method A::testA() should not be called statically : , assuming $this from incompatible context in BALABALA : 然後上網google一下錯誤,這好像是error_reporting的等級有包括E_STRICT : 可是好像網路有些framework都有用到這個寫法 (CakePHP、XOOPS) : 小弟的問題是: : 這個寫法是建議不要用,還是可以用? static 的 method 要用不 static 的方法呼叫 這不太好,但通常會被接受 非 static 的 method 用 static 的方法呼叫 喵的,PHP 還能讓你執行真是有點莫名其妙 [無誤] 還是看一下 [php.net] 對 static 的解說 [php.net]: http://php.net/manual/en/language.oop5.static.php Declaring class properties or methods as static makes them accessible without needing an instantiation of the class. A property declared as static can not be accessed with an instantiated class object (though a static method can). 用擬人化一點的講法,以 static 修飾的東西(method/field 均可) 他是超然「物」外的(謎之聲:X你X的完全沒有比較好懂 [毆]) 他跟你有沒有 new 出那個 instance 沒有關係 你就算是 new 出 100 個 instance 那個 static 修飾的東西還是只有一個 當然,不可否認的,這樣子惡搞很多時候很好用 [遮臉] //也許不能這樣用,我沒有實際測試過 [逃] class Foo { private static $counter = 0; private $id; public function Foo() { Foo::$counter++; $this->id = Foo::$counter; } public funtion getId() { return $this->id; } } 但這樣的惡搞,其實還是凸顯了 $counter 超然於 Foo 以外 你可以想成,$counter 放在 Foo 底下只是為了方便呼叫 & 管理而已 所以在 static 的 method 當中,因為根本沒有 instance 所以也就根本不可能知道什麼叫驚喜... 我是說 $this 如果能讓我大放厥詞的話 我會說(過去某版?)PHP 炸 error 的點太奇怪了 怎麼會用 static 的方式叫用非 static 的 method 還可以過 噴的 error 反而是 $this 找不到....... (沒用到 $this 的人就會一直以為這樣可以用.... [抖]) ==== 然後剛剛看報紙 (X) php.net (O) 才知道 PHP 的 static field,限制還蠻大的...... Orz 果然我的智商低到只能乖乖寫 Java 嗎? [淚目] -- 錢鍾書: 說出來的話 http://www.psmonkey.org 比不上不說出來的話 Java 版 cookcomic 版 只影射著說不出來的話 and more...... --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.25.5.37
1F:推 rickysu:基本上PHP是一個很"友善"的語言,他會盡力去指正你的錯誤 07/18 11:02
2F:→ rickysu:但是他不會阻止你幹"蠢事"。 07/18 11:04
3F:→ rickysu:這沒什麼對錯,只是語言設計哲學的不同。 07/18 11:04
4F:→ PsMonkey:因為我太蠢了,所以希望語言可以阻止我阿 [淚目] 07/18 11:05
5F:→ rickysu:除非你已經踩到他的底限例如從外部呼叫 private...XD 07/18 11:06
6F:推 tails32100:推猴大您超認真Orz 07/18 11:38
7F:→ tails32100:不過小弟是說 非static method 用static呼叫是可行 07/18 11:40
8F:→ tails32100:不過會報 Strict 等級的錯誤 07/18 11:40
9F:→ tails32100:欸 小弟好像眼花看錯了 sorry 07/18 11:42
10F:推 tkdmaf:曾經聽說PHP6打算採用嚴謹的架構,但目前還不知道狀況。 07/18 11:52
11F:→ chaoms:-.- PHP預設是為了相容古早長久累積的程式 07/18 15:54
12F:→ chaoms:想要嚴謹一點也可以自己打造成那樣的環境! 07/18 15:55
13F:推 a60301:推猴大用心,真的PHP會接受任何可能執行的程式碼,真的走不 07/18 18:14
14F:→ a60301:下去的時候才會噴 error 07/18 18:14







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:e-shopping站內搜尋

TOP