簡體   English   中英

PHP-通過引用傳遞/存儲對象實例方法?

[英]PHP - Passing/storing object instance methods by reference?

為了提高OOP的能力,我想實現一個任務隊列對象,該對象可以構建任務列表並執行它們。 我正在用PHP編寫代碼,因為我所做的大部分工作都必須使用該語言,並且這是在我要構建的非常基本的Web框架的背景下進行的。

最簡單的說,任務將由一個函數,一個變量數組和一個布爾值組成,以表示任務已完成。

有沒有一種方法可以傳遞對象的功能,使我可以將其存儲在列表中,然后在以后執行它? 理想情況下,我想要類似的東西:

$tasks->register($log->outputAllEntries, $logLevel);
$tasks->register($database->remove, $someRecord);
$tasks->register($log->toHTML, null);

然后再

$tasks->run();

然后任務中的運行方法將運行:

$log->outputAllEntries($logLevel);
$database->remove($someRecord);
$log->toHTML();

我在弄清楚如何存儲對我要運行的函數的引用時遇到了麻煩...在PHP中有某種方法可以做到這一點嗎? 還是我以一種愚蠢的方式思考問題? 用Javascript似乎很容易做到這一點,但是我在PHP中沒有任何運氣。

有幾種方法可以實現此目的。 一個簡單的方法將代替:

$tasks->register($log->outputAllEntries, $logLevel);

你會做

$tasks->register($log, 'outputAllEntries', array($logLevel));

您將擁有自己的功能:

function register($class, $method, $params) {
    $this->tasks[] = array($class, $method, $params);
}

function run() {
    foreach($this->tasks as $task) {
        list($class, $method, $params) = $task;
        call_user_func_array(array($class, $method), array($params));
    }
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM