ReflectionMethod :: getReturnType () - PullRequest
       0

ReflectionMethod :: getReturnType ()

1 голос
/ 10 февраля 2020

У меня возникла проблема, я надеюсь, что вы, ребята, можете мне помочь.

В основном мне нужно проверить метод класса и получить имя класса возвращаемого типа.

Поскольку PHP 7.0 больше не возможно приведение (string) ReflectionMethod :: getReturnType () к строке, мы получаем ошибку.

Однако getReturnType () возвращает экземпляр ReflectionNamedType, с помощью Laravel helper dd () я получил следующее:

ReflectionNamedType {
  name: "Illuminate\Database\Eloquent\Relations\BelongsTo"
  allowsNull: false
  isBuiltin: false
}

Вопрос в том, что я не могу читать ... как я могу получить имя?

Спасибо!

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

Чтобы решить это, я использую метод ReflectionNamedType :: getName ().

1 голос
/ 10 февраля 2020

ReflectionMethod на самом деле не тот класс, который нужно использовать, в этом случае вы хотите ReflectionClass .

Используя Tinker, я смог правильно получить имя с помощью следующего простого теста:

// User.php
class User extends Model
{
    public function foos()
    {
        return $this->belongsToMany('App\Models\Foo');
    }
}

// Foo.php
class Foo extends Model
{
    public function users()
    {
        return $this->belongsToMany('App\Models\User');
    }
}

$u = new User();
$r = new \ReflectionClass($u->foos());

echo $r->getName(); // Outputs "Illuminate\Database\Eloquent\Relations\BelongsToMany"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...