使用symfony的文件系统而不是本机PHP的优点

时间:2017-10-16 14:18:43

标签: php symfony

我找到了这个symfony组件The Filesystem,但我不确定是否应该使用此组件或本机PHP。 mkdir的示例:

// With symfony:
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\Filesystem\Exception\IOExceptionInterface;

$fs = new Filesystem();
$fs->mkdir('/tmp/photos', 0700);

// Native PHP:
mkdir('/tmp/photos', 0700);

与使用$fs->exists()代替file_exists()$fs->touch()代替touch()相同。然后有$fs->copy()支持第三个参数(bool)切换覆盖现有文件,而原生copy()将始终覆盖目标文件。

我根本没有使用symfony,只有少数我使用过的供应商,这就是我找到它的地方。我的意思是,我为什么要使用这个组件?在我看来,本身功能与额外的步骤。您的建议有助于了解我是否应该在将来使用这样的组件。

2 个答案:

答案 0 :(得分:5)

  1. 您不需要记住PHP内置函数的参数顺序(例如haystack firstlast
  2. 这是一种OOP方法(根据定义,更容易掌握)
  3. 易于交换(通过interfaces的力量)与引擎一起使用亚马逊,保管箱或其他一些外部驱动器。
  4. 你定义symfony对象一次,然后在其上调用方法,而不是传递文件指针,方法之间的文件路径。
  5. 您无需记住,是否要传递resource handle所需的create/establishfilename作为参数
  6. 这是我的观点。 在我看来,#3是最大的优势

    如果您今天正在使用本地驱动器,而您正在执行file_exists,那么它将起作用。但明天你的老板会说“从现在起我们就是CDNing文件. You'll have to go into the code and change all file_exists methods with s3_file_exists`。

    一旦你使用Symfony的课程,你所要做的就是用\Amazon\Custom\Package\FileSystem之类的东西交换它,你就可以了!

答案 1 :(得分:1)

Filesystem组件是一些PHP filesystem functions的包装器。

在我看来,它对普通PHP函数的最重要改进是可以递归地在目录及其所有文件和子目录上应用函数(copy()remove(),{{1 },mkdir()等。)

它提供的另一项重要改进是可移植性。该库负责处理操作系统之间的差异(目录分隔符,Windows上不存在的某些功能等)。