看板 PHP 關於我們 聯絡資訊
※ 引述《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
godman362 :我可以請問一下為甚麼明明已經定義成private屬性 02/11 16:30
godman362 :卻還能被類別外部使用嗎? 02/11 16:30
godman362 :因為我看書上的說法和C++的經驗告訴我這樣是不被允許 02/11 16:31
godman362 :的。 02/11 16:31
godman362 :被限定成private的,應該只有原始類別可用 02/11 16:31
godman362 :不能給予繼承或是類別外部使用 02/11 16:32
weiyucsie :你覺得你用的是private的那個嗎? 02/11 17:55
godman362 :不是這樣嗎.....是我混淆了嗎? 02/11 17:58
weiyucsie :你可以用echo試試看 因為你是做設定數值的動作 02/11 20:00
weiyucsie :echo那個數值(取值)看看XD 02/11 20:00
septemhill :設定數值?? echo的確會變成外部設定的值沒錯... 02/11 20:21
godman362 :呃....我還是聽不懂您的意思.. 02/11 20:24
godman362 :echo是沒有值的啊....這個部份我之前就有試過 02/11 20:34
godman362 :但是我覺得應該要產生警告訊息或是錯誤訊息的.. 02/11 20:35
godman362 :若是private加在函數前面的話,就會有錯誤訊息產生 02/11 20:35
weiyucsie :我覺得C++和php一個很大差別是 c++需要宣告變數 02/11 21:39
weiyucsie :php不用... 02/11 21:39
weiyucsie :然後也許你可以看一下php oop5 overloading章節 02/11 21:41
weiyucsie :有些method是針對存取"目前context不可存取的成員" 02/11 21:43
godman362 :謝謝您的指點,也謝謝您給予的參考資料 02/11 22:02