Laravel поздняя статическая привязка как static :: whereIn

Хорошо, я прочитал и чувствую, что у меня есть некоторое понимание о позднем статическом связывании PHP для методов и переменных. Но из строки 28 в этот код на Laravel 5, он использует с whereIn который является методом коллекции Laravel. Я не понимаю, что здесь происходит, static::whereIn(), Где коллекция, чтобы вы могли использовать whereIn(),

/**
* Add any tags needed from the list
*
* @param array $tags List of tags to check/add
*/
public static function addNeededTags(array $tags)
{
if (count($tags) === 0) {
return;
}

$found = static::whereIn('tag', $tags)->lists('tag')->all();

foreach (array_diff($tags, $found) as $tag) {
static::create([
'tag' => $tag,
'title' => $tag,
'subtitle' => 'Subtitle for '.$tag,
'page_image' => '',
'meta_description' => '',
'reverse_direction' => false,
]);
}
}

2

Решение

Пример из php.net:

class a
{
static protected $test = "class a";

public function static_test()
{
echo static::$test; // Results class b
echo self::$test; // Results class a
}
}

class b extends a
{
static protected $test = "class b";
}

$obj = new b();
$obj->static_test();

Так static::whereIn() относится к Tag::whereIn(), То же самое касается static::create()

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]