Как получить метаданные архива фара внутри выполненного фара?

Я упаковал PHP-приложение в исполняемый архив Phar и поместил его в один класс с методом, который должен обращаться к исполняемому файлу. Phar archive мета-данные.

Я мог бы получить метаданные, как показано ниже, однако это кажется странным, что я загружаю то же самое Phar внутри Phar archive выполняется для того, чтобы получить его метаданные.

Так есть ли правильный способ, как получить исполняемые метаданные Фар? Возможно прочитайте это и определили это в окурке Фара или кое-что.

<?php
namespace MyPhar;
use \Phar;

class InsideThePhar {
    public function getPharMetaData() {
        $phar_self = new Phar(Phar::running(false));
        $metadata = $phar_self->getMetadata();
        var_dump($metadata);
        exit();
    }
}

1 ответ

PHP хранит кэш уже загруженных файлов phar, см. http://git.php.net/?p=php-src.git;a=blob;f=ext/phar/phar.c;h=65ebce0f0856fc5a90a62d32dd0bb5c00627706f;hb=HEAD

Кеш используется при открытии phar-файлов, поэтому он не такой дорогой, как открытие совершенно другого phar-файла.


И нет, начиная с PHP 7.2, нет лучшего способа получить метаданные текущего "запущенного" phar-файла.

Другие вопросы по тегам