Как удалить родительские статические методы в расширенном классе - PullRequest
0 голосов
/ 13 июня 2018

Вот моя модель

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Associate extends Model
{
   // some code       
}

В контроллере я использую эту модель, аналогичную этой

<?php

namespace App\Http\Controllers;

use App\Models\Associate;
use Illuminate\Http\Request;

class AssociatesController extends Controller
{
    protected $associate;

    public function __construct(Associate $associate)
    {
        $this->associate = $associate;
    }

    public function edit(Request $request, $id)
    {
        $associate = $this->associate->with('some-relation')->find($id);
        // other part of code
    }
}

Когда я тестирую в контроллере edit метод с использованием phpunit Я не могуmock with метод, потому что это статический метод Illuminate\Database\Eloquent\Model.
Мой вопрос, есть ли способ удалить какой-нибудь метод родительского класса ??

1 Ответ

0 голосов
/ 13 июня 2018

Из Laravels Документация

static Builder|Model with(array|string $relations)
Being querying a model with eager loading.

Из Php Документы

<?php
class A {
    public static function who() {
        echo __CLASS__;
    }
    public static function test() {
        static::who(); // Here comes Late Static Bindings
    }
}

class B extends A {
    public static function who() {
        echo __CLASS__;
    }
}

B::test();
?>

Вышеприведенный пример выдаст:

B

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...