Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
namespace Illuminate\Console\Concerns;
4
 
5
use Illuminate\Console\Signals;
6
use Illuminate\Support\Arr;
7
 
8
trait InteractsWithSignals
9
{
10
    /**
11
     * The signal registrar instance.
12
     *
13
     * @var \Illuminate\Console\Signals|null
14
     */
15
    protected $signals;
16
 
17
    /**
18
     * Define a callback to be run when the given signal(s) occurs.
19
     *
20
     * @param  iterable<array-key, int>|int  $signals
21
     * @param  callable(int $signal): void  $callback
22
     * @return void
23
     */
24
    public function trap($signals, $callback)
25
    {
26
        Signals::whenAvailable(function () use ($signals, $callback) {
27
            $this->signals ??= new Signals(
28
                $this->getApplication()->getSignalRegistry(),
29
            );
30
 
31
            collect(Arr::wrap($signals))
32
                ->each(fn ($signal) => $this->signals->register($signal, $callback));
33
        });
34
    }
35
 
36
    /**
37
     * Untrap signal handlers set within the command's handler.
38
     *
39
     * @return void
40
     *
41
     * @internal
42
     */
43
    public function untrap()
44
    {
45
        if (! is_null($this->signals)) {
46
            $this->signals->unregister();
47
 
48
            $this->signals = null;
49
        }
50
    }
51
}