簡體   English   中英

如何在php中創建依賴關系結構?

[英]How do you create a dependency structure in php?

我有很多職位,並且正在為每個職位建立職能。 我試圖弄清楚如何根據狀態還原更改。 更加清楚一點:假設您有5個狀態:START INSTALLED PROC COMPLETE UPLOADED

為了從COMPLETE狀態變為UPLOADED,我必須運行PROC status和INSTALLED。 我正在嘗試構建一個簡單的系統,在該系統中我可以調用一個函數,它將知道要運行的函數取決於它們在數組中定義的依賴項。

假設:每個狀態只能向后還原。 因此,如果在上面的示例中,UPLOADED無法進入COMPLETE狀態。 每個狀態都可以恢復為自身狀態(狀態為“已加載”並恢復為“已加載”)。

有人知道我該怎么做嗎? 當然會有更多的狀態,我只是想避免使用50條if語句:/

使用可能的狀態路徑創建DAG(有向無環圖)。 然后,您可以使用提供的起點遍歷圖形,並根據要訪問的節點的值調用函數。

因此,如果您的節點具有complete值,則假定您要調用complete(...)函數。 因此,您可以執行以下操作:

call_user_func($nodeValue, ...);

我將其包裝為一個簡單的舊整數。 這樣想:

class Foo {
    const START     = 1; // 2^0
    const INSTALLED = 2; // 2^1
    const PROC      = 4; // 2^2
    const COMPLETE  = 8; // 2^3
    const UPLOADED  = 16;// 2^4

    // all powers of 2
}

如果您在數據庫中備份任務,那么它也將非常優雅,單個整數可以包含整個狀態。 您還可以使用位掩碼輕松地快速查詢具有給定狀態的所有作業。

我離題了。 如果您想到要從事PROC的工作,它將看起來像這樣:

00111

(實際上是7)

因此,向前移動工作和向后滾動,只是檢查下一個問題的方法...大量的方法可以使貓變皮。 然后,您將獲得一種輕松的將函數與位相關聯的方法,一種緊湊的狀態存儲方法以及大量的數學運算來幫助您評估所需的步驟。

暫無
暫無

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

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