→ kuAIpAI:推~~~~~~~~~~ 06/13 22:04
※ 引述《JYHuang (夏天到了,冷不起來了說)》之銘言:
: 在直接宣告一新的物件時
: 有無可能把其中一個元件宣告成函式?
: Ex:
: $object = new stdclass;
: $object->best() = function(){
: Do some thing here....
: return $something;
: }
: 因為裡面是會計算到其它的資料
: 在不同時間執行會有不同的結果
: 在需要時再echo $object->best()->name;
: 這樣~
如果只想用單一函式卻要對不同時間進行不同功能可以如此考量:
class object{
function __construct(){
$this->_init();
}
private function _init(){
$this->myfunc = 依照不同時間需求載入功能性物件,物件一樣全部都
提供func()這個功能。
當然你也可以讓單一物件另外依時間幫你處理func()要傳回的函式內容。
不過事實上這和你寫在本體物件就變成是一樣的東西了。
}
function best(){
$this->name = $this->myfunc->func();
$something = 放資料
return $something;
}
}
如果僅是因為你的需求在於要單純化單一功能的執行方法。
這是我覺得可行的做法。
只是說實在的,光是看你那樣的概念性想法我還不是很清楚你是要做什麼。
何況,如果物件的方法內容是能在外部被隨時抽換的話。
我不知道還要寫物件幹嘛。
你已經在內部抽換你所想要的方法,但不應該想說從外部定義他。
但事實上能不能外部抽換?當然行。
可是你抽換的也只是函式內的承載物件,而非本身的程式碼。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 112.105.95.58