PHP из проекта PSR-4 выводит все методы всех классов, используя одно и то же пространство имен - PullRequest
0 голосов
/ 17 октября 2018

Из проекта, использующего соглашение psr-4 (проект Symfony), я хочу (просто) напечатать все методы всех классов с определенным пространством имен (эти классы находятся в одном каталоге)

Iсделайте несколько попыток с документацией здесь https://getcomposer.org/doc/00-intro.md, но я потерпел неудачу и не совсем понимаю, как работает эта библиотека (может быть, мои плохие знания английского?: /)

Кто-то может мне помочь?

Моя последняя попытка:

class myUtils{

    public function getAllMethods(){

        $loader = new ClassLoader();
        $loader->loadClass('App\DIR1');
        $loader->register();

        // Faa and Foo are the name of the classes of the file Fii.php and Faa.php located in DIR1 directory, the namespace of theses classes is App\DIR1
        if (class_exists("Foo") && class_exists("Faa")){
            dump('Its OK !');
        }else{
            dump('its NOT OK');
        }

        // the dump "Its NOT OK" is printed, I don't find how I can load dynamically Faa and Foo classes..
    }
}

1 Ответ

0 голосов
/ 17 октября 2018

Просто поиграйте с ClassLoader::getClassMap(), и у вас нет другого пути, потому что класс будет загружен только тогда, когда вы попытаетесь его использовать.Вы должны фильтровать классы по вашей пользовательской функции.

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

Для методов используйте Отражение , это легко.

...