cachet.php是 Cachet 狀態頁面 (https://cachethq.io/) 的 PHP 用戶端函式庫。
該程式庫可用於顯示其他系統中 Cachet 狀態頁面的詳細信息,例如監控儀表板、用戶端票務系統或任何其他 Web 應用程式。
如果你想用 Composer 取得cachet.php ,請查看 Packagist:https://packagist.org/packages/divineomega/cachetphp
開始之前,透過 Composer 安裝cachet.php函式庫。
現在,您需要建立一個代表您安裝的 Cachet 的 CachetInstance 物件。你可以這樣做:
require_once ' vendor/autoload.php ' ;
use DivineOmega CachetPHP Factories CachetInstanceFactory ;
// The API token for the demo instance is 9yMHsdioQosnyVK4iCVR.
$ cachetInstance = CachetInstanceFactory:: create ( ' https://demo.cachethq.io/api/v1/ ' , ' 9yMHsdioQosnyVK4iCVR ' );
從 Cachet 實例的各個元素檢索資料很容易。只需在$cachetInstance
物件上呼叫適當的 getter 方法即可。將聯絡 Cachet 安裝並傳回一組請求適當的物件。
$ components = $ cachetInstance -> getAllComponents (); // Components
$ incidents = $ cachetInstance -> getAllIncidents (); // Incidents
$ incidentUpdates = $ incidents [ 0 ]-> getAllIncidentUpdates (); // Incident Updates (Cachet 2.4.0 or above required)
$ metrics = $ cachetInstance -> getAllMetrics (); // Metrics
$ metricPoints = $ metrics [ 0 ]-> getAllMetricPoints (); // Metric Points
$ subscribers = $ cachetInstance -> getAllSubscribers (); // Subscribers
若要按 ID 擷取單一 Cachet 元素,您可以使用類似下列方法的程式碼。
// Get incident by id
$ incident = $ cachetInstance -> getIncidentById ( $ incidentId );
如果您希望對結果進行排序,可以使用下列語法。這適用於元件、事件、指標、指標點和訂閱者。
// Get components sorted by name ascending
$ components = $ cachetInstance -> getAllComponents ( ' name ' , ' asc ' );
從檢索到的 Cachet 元素物件讀取資料很容易。只需存取它們的公共成員變數即可。
下面是輸出 Cachet 元件的 id、名稱、描述和狀態的範例。
// Get components
$ components = $ cachetInstance -> getAllComponents ();
// Display components
foreach ( $ components as $ component ) {
echo $ component -> id . ' - ' . $ component -> name . ' - ' . $ component -> description . ' - ' . $ component -> status ;
echo " <br/> " ;
}
有關每種類型的 Cachet 元素可用的變數的信息,請參閱官方 Cachet 文件。
您可以使用cachet.php庫非常輕鬆地建立Cachet 元素,例如元件或事件。這涉及創建 Cachet 元素的詳細資訊的關聯數組,然後將其傳遞給相關的創建方法。
以下範例向您展示如何製作一個簡單的測試組件。
$ componentDetails = [ ' name ' => ' Test Component ' . rand ( 1 , 99999 ), ' status ' => 1 ];
$ component = $ cachetInstance -> createComponent ( $ componentDetails );
echo $ component -> id . ' - ' . $ component -> name . ' - ' . $ component -> description . ' - ' . $ component -> status ;
下面更全面的範例展示如何建立事件並向其添加事件更新。請注意,如果您希望使用事件更新,則需要 Cachet 2.4.0 或更高版本。
$ incidentDetails = [ ' name ' => ' Test Incident ' . rand ( 1 , 99999 ), ' message ' => ' Incident message ' . rand ( 1 , 99999 ), ' status ' => 1 , ' visible ' => 1 ];
$ incident = $ cachetInstance -> createIncident ( $ incidentDetails );
$ incidentUpdateDetails = [ ' status ' => 2 , ' message ' => ' Test incident update ' . rand ( 1 , 99999 )];
$ incidentUpdate = $ incident -> createIncidentUpdate ( $ incidentUpdateDetails );
echo $ incidentUpdate -> id . ' - ' . $ incidentUpdate -> incident_id . ' - ' . $ incidentUpdate -> status . ' - ' . $ incidentUpdate -> message ;
cachet.php可讓您對 Cachet 元素進行變更並將這些變更儲存回您的 Cachet 安裝中。這是透過直接更改 Cachet 元素的公共成員變量,然後呼叫物件的save()
方法來完成的。
以下範例顯示如何變更元件的名稱和狀態,然後儲存變更。
// Get components
$ components = $ cachetInstance -> getAllComponents ();
// Change component details
$ component [ 0 ]-> name = ' My awesome component ' ;
$ component [ 0 ]-> status = 1 ;
$ component [ 0 ]-> save ();
如果您使用component_id
建立事件,則也可以包含component_status
以在建立事件的同時變更元件的狀態。請參閱下面的範例。
$ incidentDetails = [ ' name ' => ' Test Incident ' . rand ( 1 , 99999 ), ' message ' => ' Incident message ' . rand ( 1 , 99999 ), ' status ' => 1 , ' visible ' => 1 ,
' component_id ' => 1 , ' component_status ' => 1 ];
$ incident = $ cachetInstance -> createIncident ( $ incidentDetails );
建立事件更新時,您也可以指定component_status
以在建立事件更新時變更元件的狀態。請參閱下面的範例。
$ incidentUpdateDetails = [ ' status ' => 2 , ' message ' => ' Test incident update ' . rand ( 1 , 99999 ), ' component_status ' => 2 ];
$ incidentUpdate = $ incident -> createIncidentUpdate ( $ incidentUpdateDetails );
您也可以透過事件或事件更新來更改元件狀態,方法是更改相關物件上的component_status
並儲存,如下面的範例所示。請注意,只有當事件是使用關聯的component_id
建立時,這才有效。
$ incident -> component_status = 2 ;
$ incident -> save ();
$ incidentUpdate -> component_status = 3 ;
$ incidentUpdate -> save ();
要從 Cachet 安裝中刪除 Cachet 元素,您只需在對應的 Cachet 元素物件上呼叫delete()
方法即可。
例如,要刪除事件,您可以執行下列操作。
// Get incidents
$ incidents = $ cachetInstance -> getAllIncidents ();
// Delete the first one
$ incidents [ 0 ]-> delete ();
如果您發現錯誤或新功能,請將其作為 GitHub 問題報告。
對於其他疑問,可以透過 Twitter(Jordan Hall)聯繫我。