Понимание Php Область применения черт - PullRequest
0 голосов
/ 14 января 2020

У меня есть следующие файлы

1) Класс называется Helper

    class Helper
    {
        public static function a(){
            //
        }
    }

2) Черта SpecialTrait

    Trait SpecialTrait
    {
        public function b(){
            Helper::a();
        }
    }

3) Расширение класса контроллера Контроллер называется UserController

    use path\to\Helper;
    use path\to\SpecialTrait

    class UserController extends Controller
    {
        use SpecialTrait;

        public function c(){
            $this->b();
        }
    }

Когда программа запускается и вызывается function c(), который предназначен для вызова trait function b(), который использует helper class static function a()

Это не работает, только Исправлена ​​проблема с использованием вспомогательного класса в файле признаков.

    use path\to\Helper;

    Trait SpecialTrait
    {
        public function b(){
            Helper::a();
        }
    }

Мой вопрос заключается в том, что, согласно моему пониманию признаков, функции признаков копируются и вставляются во время выполнения, и если это так trait function b() не сможет видеть или иметь вспомогательный класс в своей области, вместо того, чтобы требовать его импорта / использования в своем собственном файле.

...