PHP Trait на дочернем классе не работает - PullRequest
0 голосов
/ 17 мая 2018

У меня есть класс A с признаком "auditable", который имеет подкласс B и подкласс C, если я создаю экземпляр свойства C, не работает. Класс C имеет только мутатор getNameAttribute для получения данных и ничего более. И нет проблем с сохранением объекта

class A {
   use auditable;
}

class B extends A {
   // Trait Works in this one
}

class C extends B {
   // Trait Doesn't work
   public function getNameAttribute($val)
   {
      return Str::upper($val);
   }

}

какие-либо решения?

1 Ответ

0 голосов
/ 17 мая 2018

Давайте начнем с черт: на самом деле это работает, смотрите:

<?php

trait auditable {
    public function foo()
    {
        return 'Bar';
    }
}

class A {
    use auditable;
}

class B extends A {
}

class C extends B {
}

var_dump((new C())->foo());

Если вы запустите этот скрипт - вы получите: string(3) "Bar"

В вашем случае это означает, что у вас есть ошибка в другом месте, и для ее обнаружения необходимо включить журнал ошибок. Вы можете попробовать сделать что-то вроде этого:

// add in your index.php (or bootstrap file)
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors','On');
...