decodelabs/glitch

当事情出错时的更好工具


README

PHP from Packagist Latest Version Total Downloads GitHub Workflow Status PHPStan License

当事情出错时的更好工具

Glitch是一个独立的PHP包,旨在在开发应用程序时显著提高错误处理和检查。

该项目旨在提供深入的数据检查工具和异常处理界面。

DecodeLabs博客上获取新闻和更新。

v0.15.0 interface

安装

应通过composer安装Glitch

composer require decodelabs/glitch

用法

Glitch使用Veneer,其前端注册在DecodeLabs\Glitch。您可以通过此前端访问所有主要功能

use DecodeLabs\Glitch;

Glitch::getRunMode();
Glitch::dump('hello');

设置

否则,Glitch无需任何特殊设置即可直接使用。但是,您可以选择一些步骤来自定义操作。

注册为默认错误处理器

use DecodeLabs\Glitch;

Glitch::registerAsErrorHandler();

注册基本路径别名,以便在转储中更容易读取文件名

use DecodeLabs\Glitch;

Glitch::registerPathAlias('app', '/path/to/my/app');

/*
/path/to/my/app/models/MyModel.php

becomes

app://models/MyModel.php
*/

传递初始应用程序启动的microtime()以进行计时

use DecodeLabs\Glitch;

Glitch::setStartTime(microtime(true));

设置运行模式(development | testing | production),以便Glitch可以正确格式化输出

use DecodeLabs\Glitch;

Glitch::setRunMode('development');

转储

使用简单的全局函数轻松转储任何内容。这些函数与在Symfony/VarDumper中使用的函数类似,通过使用已加载的Symfony的VarDumper界面来保持兼容性。

use DecodeLabs\Glitch;

class MyThing {}
$myObject = new MyThing();

// This will dump the object and carry on
dump($myObject);

// This will dump the object and exit
dd($myObject);

您还可以在开发过程中标记函数为不完整

use DecodeLabs\Glitch;

function myFunction() {
    // This will throw a Glitch exception
    Glitch::incomplete([
        'info' => 'some test info'
    ]);
}

渲染器

结果转储UI(当使用HTML渲染器时,这是默认选项)在运行时注入到iframe中,因此可以渲染到任何HTML页面而不会破坏任何内容。如果页面本身为空,iframe将尽可能填充视口。

转储输出由DecodeLabs\Glitch\Renderer的实例渲染,可以在启动时覆盖默认的Context。HTML渲染器在http sapi下加载,CLI渲染器在CLI sapi下使用。

自定义渲染器可以根据它们应发送的位置将Entities转换为其他输出格式,例如Xml或Json。

自定义颜色

HTML渲染器使用CSS变量来设置单个元素的颜色,可以用自定义值覆盖。创建一个自定义CSS文件,其中包含变量覆盖

:root {
    --string: purple;
    --binary: green;
}

有关所有当前颜色覆盖选项,请参阅colours.scss

然后加载该文件到HTML渲染器

use DecodeLabs\Glitch;

Glitch::getRenderer()->setCustomCssFile('path/to/my/file.css');

传输

一旦渲染,转储信息将通过DecodeLabs\Glitch\Transport的实例交付,也可以在默认的Context上覆盖。运输的责任是交付渲染后的转储。

默认情况下,渲染只是回显到STDOUT,但是自定义传输可以将信息发送到其他接口、浏览器扩展、日志系统等。

自定义转储

您可以通过实现DecodeLabs\Glitch\Dumpable和/或提供glitchDump方法来自定义自己的类实例的转储。该方法应生成或返回一个键/值对列表,该列表填充了转储实体所需字段。

use DecodeLabs\Glitch;

use DecodeLabs\Glitch\Dumpable;

class MyClass implements Dumpable {

    public $myValue = 'Some text';

    private $otherObject;

    protected $arrayValues = [
        'row1' => [1, 2, 3]
    ];

    public function glitchDump(): iterable {
        yield 'text' => $this->myValue;

        // !private, *protected
        yield 'property:!otherObject' => $this->otherObject;

        yield 'values' => $this->arrayValues;
    }
}

Dumpable接口不是必需的 - Glitch无论是否存在该方法都会检查它的存在,这在您不想仅为了提供更好的转储处理而依赖于Glitch库时非常有用。

然而,Dumpable 接口由 glitch-support 包提供,该包仅包含库为 Glitch 提供支持所需的必要元素,而不包括整个库作为依赖项。

许可协议

Glitch 在 MIT 许可协议下授权。请参阅 LICENSE 获取完整的许可协议文本。