-
-
Notifications
You must be signed in to change notification settings - Fork 829
/
HasSources.php
42 lines (33 loc) · 922 Bytes
/
HasSources.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
/*
* This file is part of Flarum.
*
* For detailed copyright and license information, please view the
* LICENSE file that was distributed with this source code.
*/
namespace Flarum\Frontend\Compiler\Concerns;
use Flarum\Frontend\Compiler\Source\SourceCollector;
use Flarum\Frontend\Compiler\Source\SourceInterface;
trait HasSources
{
/**
* @var callable[]
*/
protected $sourcesCallbacks = [];
public function addSources(callable $callback): void
{
$this->sourcesCallbacks[] = $callback;
}
/**
* @return SourceInterface[]
*/
protected function getSources(): array
{
$sources = new SourceCollector($this->allowedSourceTypes());
foreach ($this->sourcesCallbacks as $callback) {
$callback($sources);
}
return $sources->getSources();
}
abstract protected function allowedSourceTypes(): array;
}