LINUX.ORG.RU

Как ориентироваться в документации на Laravel API?

 , ,


0

1

Использую Laravel 5.5

Мне надо посмотреть, например, что возвращает метод Модели create().

Саму модель я наследую от Illuminate\Database\Eloquent\Model, значит лезу в документацию вот сюда:

https://laravel.com/api/5.5/Illuminate/Database/Eloquent/Model.html

И метода create() я там не нахожу.

Вопрос: где искать описание этого метода?

★★★★★

Ответ на: комментарий от no-such-file

У меня NetBeans 8.2. Доку на что он должен показывать?

Я понимаю, что там происходит вызов несуществующих методов и обработка такого вызова. Но где там в глубинах феймверка по какой цепочке искать, что там будет дергаться у Model при вызове create()?

Xintrea ★★★★★ ()
Ответ на: комментарий от no-such-file

Вот на конкретном примере. Захожу в класс Model, смотрю метод __callStatic():

  /**
  * Handle dynamic static method calls into the method.
  *
  * @param  string  $method
  * @param  array  $parameters
  * @return mixed
  */
  public static function __callStatic($method, $parameters)
  {
  return (new static)->$method(...$parameters);
  }


Странная конструкция (new static), видимо имеется в виду self... Может это нужно чтоб создать экземпляр объекта и вызвать у него __call()... Если так, то смотрим его:

 
  /**
  * Handle dynamic method calls into the model.
  *
  * @param  string  $method
  * @param  array  $parameters
  * @return mixed
  */
  public function __call($method, $parameters)
  {
  if (in_array($method, ['increment', 'decrement'])) {
  return $this->$method(...$parameters);
  }
 
  return $this->newQuery()->$method(...$parameters);
  }


Инкремент и декремент - это методы самого класса, и они действительно есть. Теперь надо понять что это за newQuery().

  /**
  * Get a new query builder for the model's table.
  *
  * @return \Illuminate\Database\Eloquent\Builder
  */
  public function newQuery()
  {
  return $this->registerGlobalScopes($this->newQueryWithoutScopes());
  }


По самому коду не скажешь, но по комментариям видно, что используется \Illuminate\Database\Eloquent\Builder . То есть на этом можно остановиться, и рассчитывать на то, что в комментариях не ошиблись, и написали правильный возвращаемый тип.

Так что ли выяснять классы в Larvel?

Xintrea ★★★★★ ()

Есть такая штука: https://github.com/barryvdh/laravel-ide-helper

А вообще Laravel плохо внутри написан, у них везде mixed возвращается и пойми, что на самом деле там имеется ввиду.

Можно углы сгладить, если отказаться от фасадов и их модели использовать по минимуму.

fman2 ()
Ответ на: комментарий от Xintrea

на этом можно остановиться, и рассчитывать на то, что в комментариях не ошиблись, и написали правильный возвращаемый тип.

Да. Более того ide должна этот тип подхватывать.

PS: присоединяюсь к чуваку выше. Laravel говно.

no-such-file ★★★★★ ()