namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* Get the phone record associated with the user.
*/
public function phone()
{
return $this->hasOne('App\Phone');
}
}$users = (new User())->newQuery()->get();foreach($users as $user){
$phone = $user->phone;
}$users = (new User())->newQuery()->with('phone')->get();$users->load('phone');
Class Repository
{
public function __construct(User $user)
{
$this->user = $user;
}
}$app->bind(UserInterface::class, User::class);$this->user::query();
interface Interface{
public function filterParams($val):self;
...
}User::with - это уже магия, staticCall вызывает, а query - существующий метод в классе.
<?php namespace Illuminate\Database\Eloquent;
abstract class Model implements ArrayAccess, Arrayable, Jsonable, JsonSerializable, QueueableEntity, UrlRoutable
{
...
public static function with($relations)
{
return (new static)->newQuery()->with(
is_string($relations) ? func_get_args() : $relations
);
}
public static function query()
{
return (new static)->newQuery();
}
...
}
Опять же не пойму зачем что-то везде менять, если в современных IDE, если вам очень захотелось поменять название метода/класса, есть рефакторинг автоматический =/
И не вьезжаю, зачем что-то менять по проекту после, цитирую, "написания обновленной модели"? Чем инжект и (new User)->newQuery()->whatever() отличается от User::whatever() с этой стороны? Что там что там скоуп whatever IDE, понятное дело, не сможет отрефакторить, и я не вижу какие преимущества это вам дает.
Не пойму о каких методах вы говорите. Об квери методах? Нет, они в квери-билдере eloquent'овском. Скоупы? Их так-же как-то либо моделька, либо квери-билдер вызывает. Релейшены? Другие методы, которые именно к реальным данным привязаны? Ну тоже не имеет отношения к этому. А еще каких-то методов там не будет. И не пойму что за filterParams - это уже либо к репозиторию, либо в скоуп.
A. Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций.
B. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.