我的班级为我创建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()
真的是多么依赖,因为它的名字很混乱。
答案 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();