从PharData Archive本身获取文件名

时间:2014-07-07 10:05:13

标签: php filenames phar

我的班级为我创建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 个答案:

答案 0 :(得分:1)

您可以使用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']);
}

但我认为如果你正确地设计你的课程,你就不需要这种丑陋的解决方法。

答案 1 :(得分:0)

这个问题已经有点老了,但补充说:

  

我真的很想知道PharData类中是否有办法获取实际的存档文件名。

PharData扩展了FilesystemIterator,因此您可以使用

// Get the path to the current DirectoryIterator item.
// DirectoryIterator::getPath();
$bundle->getPath();

http://php.net/manual/de/class.filesystemiterator.php