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)联系我。