Re: [請益] class private

看板PHP作者 (選擇那刻 才算開始)時間15年前 (2009/02/11 16:24), 編輯推噓6(6015)
留言21則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《godman362 (Shizuru)》之銘言: : 就是在class中的private的部份 : 當我的對某個class A的width屬性設為private後,再進行繼承的動作 : 但是當我繼承的class去呼叫class A的width屬性,竟然沒有Error? [deleted] 我一時間找不到相關資料 <?php class Hello { private $test; protected $t2; } class H2 extends Hello { } $h = new H2(); $h->test = 1; echo $h->test."\n"; echo $h->unused."\n"; $h->t2 = 2; echo $h->t2."\n"; ?> 你可以觀察一下執行結果 $h->test = 1;可以執行 echo $h->test;也可以執行 不過因為找不到文件在哪 所以我也不確定是不是應該利用這個特性 (如果要用的話,可能__get,__set比較明確:p) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.203.6

02/11 16:30, , 1F
我可以請問一下為甚麼明明已經定義成private屬性
02/11 16:30, 1F

02/11 16:30, , 2F
卻還能被類別外部使用嗎?
02/11 16:30, 2F

02/11 16:31, , 3F
因為我看書上的說法和C++的經驗告訴我這樣是不被允許
02/11 16:31, 3F

02/11 16:31, , 4F
的。
02/11 16:31, 4F

02/11 16:31, , 5F
被限定成private的,應該只有原始類別可用
02/11 16:31, 5F

02/11 16:32, , 6F
不能給予繼承或是類別外部使用
02/11 16:32, 6F

02/11 17:55, , 7F
你覺得你用的是private的那個嗎?
02/11 17:55, 7F

02/11 17:58, , 8F
不是這樣嗎.....是我混淆了嗎?
02/11 17:58, 8F

02/11 20:00, , 9F
你可以用echo試試看 因為你是做設定數值的動作
02/11 20:00, 9F

02/11 20:00, , 10F
echo那個數值(取值)看看XD
02/11 20:00, 10F

02/11 20:21, , 11F
設定數值?? echo的確會變成外部設定的值沒錯...
02/11 20:21, 11F

02/11 20:24, , 12F
呃....我還是聽不懂您的意思..
02/11 20:24, 12F

02/11 20:34, , 13F
echo是沒有值的啊....這個部份我之前就有試過
02/11 20:34, 13F

02/11 20:35, , 14F
但是我覺得應該要產生警告訊息或是錯誤訊息的..
02/11 20:35, 14F

02/11 20:35, , 15F
若是private加在函數前面的話,就會有錯誤訊息產生
02/11 20:35, 15F

02/11 21:39, , 16F
我覺得C++和php一個很大差別是 c++需要宣告變數
02/11 21:39, 16F

02/11 21:39, , 17F
php不用...
02/11 21:39, 17F

02/11 21:41, , 18F
然後也許你可以看一下php oop5 overloading章節
02/11 21:41, 18F


02/11 21:43, , 20F
有些method是針對存取"目前context不可存取的成員"
02/11 21:43, 20F

02/11 22:02, , 21F
謝謝您的指點,也謝謝您給予的參考資料
02/11 22:02, 21F
文章代碼(AID): #19aeioWL (PHP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #19aeioWL (PHP)