確定方法調用的來源,我不知道是否有一個「更好」的方式來做到這一點:在運行時
class Foo {
final public function bar() {
if (is_subclass_of(get_called_class(), __CLASS__)) {
throw new Exception();
}
}
}
class Bar extends Foo {
public function baz() {
parent::bar(); // shouldn't be allowed
}
}
從本質上講,我想在我的父類中的某些方法從美其名曰禁止子類。這需要防彈,我懷疑這是否是,所以如果你知道這可以被規避,那麼我有興趣知道(如果可能的話,以及如何防止它)。
編輯︰對於每個人建議私人方法,這是不是一種選擇,因爲我需要接口保持公開外部訪問。對不起,我猜我認爲這很明顯。
呃,使它'私人'這是否? – Wrikken 2012-01-29 00:17:34
@Wrikken,哈哈..我編輯了我的問題。 – FtDRbwLXw6 2012-01-29 00:32:11
一個函數可以被任何人公開調用,但不能被對象本身調用?這很奇怪。也許你試圖對自己的程序員/子程序員過於強烈地辯護? :) – deceze 2012-01-29 00:37:06