亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP靜態屬性和const覆蓋

PHP靜態屬性和const覆蓋

PHP
LEATH 2021-04-26 22:25:04
我想創建一個繼承(擴展)另一個PHP類的類,該類具有受保護的const,我想在我的擴展類中重寫該類。我創建了一個父類(該示例為A)和一個繼承類(該示例為B)。定義class A了protected const(名為CST)。class B也會覆蓋此const。調用從display繼承的A繼承的方法類B時self::CST,打印的值是來自A的CST值,而不是B中覆蓋的const CST。我使用名為的靜態屬性觀察到了相同的行為$var。似乎self在方法中使用的總是引用定義類(在我的示例中為A),而不是用于調用靜態方法的類。class A{        protected static $var = 1;        protected const CST = 1;        public static function printVar()        {                print self::$var . "\n";        }        public static function printCST()        {                print self::CST . "\n";        }}class B extends A{        protected static $var = 2;        protected const CST =2;}A::printVar();A::printCST();B::printVar();B::printCST();有沒有一種方法可以讓我的靜態方法printCST()在調用時顯示2B::printCST()而無需重寫該方法class B,從而提高OOP的代碼可重用性?
查看完整描述

1 回答

?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

達曼(Dharman)建議使用static::CST代替self::CST。

這是解決我的問題的方法。


查看完整回答
反對 回復 2021-05-07
  • 1 回答
  • 0 關注
  • 216 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號