2011-09-19 74 views
0

所以我有一個我不能(不允許)修改的類,我需要擴展其中的一個方法。問題是我的子類的方法需要使用本地擴展的父級方法中設置的變量。這就是我的意思是:是否可以訪問不是對象屬性的方法變量?

class ParentClass 
{ 
    function process_data() 
    { 
     $data['x'] = "This is some data."; 
    } 
} 

class ChildClass extends ParentClass 
{ 

    function process_data() { 
     parent::process_data(); 
     $clean_data = strtolower(parent::$data); 
    } 
} 

是否有訪問從父方法的局部變量$data沒有以任何方式修改父類的方法嗎?

+4

nope,'$ data'是在'process_dat()'scoop內部定義的,並且不會返回,因此無法訪問它。 – 2011-09-19 01:33:13

+0

即使我的方法是父方法的擴展?這令人失望。 – Anthony

+0

如果父類'process_data()'方法有'return $ data ['x .....'你的代碼可以工作得很好! – 2011-09-19 01:43:05

回答

0

你可以聲明它在全局範圍內,但是......這是OOP。你爲什麼不把它變成財產?

+0

我正在爲該軟件編寫定製,其中一項要求是核心代碼無法修改,只能擴展。我可以擴展該方法,並簡單地複製整個內容而不是調用父方法,然後進行我需要的更改,但是我想確認我沒有缺少某些有助於實現目標的php oop功能。我正在寫這個星期的原創開發者,讓他們知道他們需要把它變成一個財產。 – Anthony

+0

啊,我明白了。那麼,除非他們故意將這個'$ data' var放在本地範圍內 - 我想你會和他們進行更多的對話。祝你好運。 – Narf

相關問題