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灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP