Получить имя файла из самого архива PharData
Мой класс создает PharData
архивы для меня. Название архива известно не всем функциям класса. В основном у меня есть план, как это:
public function doStuff(\PharData $bundle)
{
$file = //someFile
$bundle->addFile($file);
$this->db->update($file is in $bundle->getName(????));
}
Насколько я могу судить, единственный способ получить доступ к имени пакета getAlias()
функция $bundle
переменная. Однако это дает мне полное имя файла, и мне нужно будет вручную basename($bundle->getAlias())
,
Мне действительно интересно, нет ли пути в PharData
класс, чтобы получить собственно имя файла архива.
Мне НЕ нужны имена файлов внутри архива, на самом деле все, что мне нужно, это получить доступ к имени файла самого архива. Я просто не знаю, насколько getAlias()
на самом деле, так как это название довольно запутанно.
2 ответа
Вы можете хранить собственные данные с PharData::setMetadata()
метод. Таким образом, вы можете сохранить имя файла в метаданных PHAR и получить его снова в более поздний момент с помощью PharData::getMetadata()
метод.
Установите это так:
$bundle->setMetaData(array('bundleFileName' => 'your_bundle.phar'));
Таким образом, вы можете получить это в вашем методе так:
public function doStuff(\PharData $bundle)
{
$metaData = $bundle->getMetaData();
$file = //some File
$bundle->addFile($file);
$this->db->update($file is in $bundle->getMetadata['bundleFileName']);
}
Но я думаю, что если вы правильно спроектируете свой класс, вам не понадобится этот уродливый обходной путь.
Вопрос уже несколько старше, но к дополнению:
Мне действительно интересно, если в классе PharData нет способа получить собственно имя файла архива.
PharData расширяет FilesystemIterator, и поэтому вы можете использовать
// Get the path to the current DirectoryIterator item.
// DirectoryIterator::getPath();
$bundle->getPath();