使用symfony'的优势;s文件系统而不是本机PHP

使用symfony'的优势;s文件系统而不是本机PHP,php,symfony,Php,Symfony,我已经找到了这个symfony组件,但我不确定是应该使用这个组件还是本机PHP。带有mkdir的示例: // With symfony: use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Filesystem\Exception\IOExceptionInterface; $fs = new Filesystem(); $fs->mkdir('/tmp/photos', 0700); // Native

我已经找到了这个symfony组件,但我不确定是应该使用这个组件还是本机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\u exists()
,或者使用
$fs->touch()
而不是
touch()
也一样。还有一个
$fs->copy()
,它支持第三个参数(bool)来切换覆盖现有文件,而native
copy()
将始终覆盖目标文件

我根本不使用symfony,我使用的供应商中只有很少一家使用,这就是我发现它的地方。我是说,我为什么要使用这个组件?在我看来,它像是带有额外步骤的本机函数。您的建议将有助于了解我是否应该在将来使用这样的组件

  • 您不需要记住PHP内置函数的参数顺序(如,is,or)
  • 这是一种面向对象的方法(根据定义,更容易掌握)
  • 易于交换(通过
    接口的强大功能
    )与引擎一起使用amazon、dropbox或其他外部驱动器
  • 您定义一次symfony对象,然后对其调用方法,而不是在方法之间传递文件指针filepath
  • 你不需要记住,无论你是通过一个你需要的,还是作为论点)
  • 这是我的观点。 在我看来,3是最大的优势

    如果您现在正在本地驱动器上工作,并且您正在执行
    文件\u exists
    ,那么它将正常工作。但是明天你的老板会说“从现在开始我们要清理文件
    。你必须进入代码,用
    s3\u file\u exists`更改所有file\u exists
    方法。”


    一旦您使用了Symfony的类,您所要做的就是将其与以下内容交换:
    \Amazon\Custom\Package\FileSystem
    ,您就可以开始了!

    文件系统组件是一些PHP的包装器

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


    它提供的另一个重要增强是可移植性。该库处理操作系统之间的差异(目录分隔符、Windows上不存在的某些函数等).

    谢谢,这对我来说很有意义:)嗯。#3是有效的,假设您需要支持多个文件系统,但其余的?La La land。例如,您能否指出一个案例,其中php面向文件的函数的参数顺序发生了更改?我不这么认为。FUD是一件坏事。@Cerad并不意味着签名会随着时间的推移而更改。我指的是外观相似的方法之间的不一致。例如str_replace($search,$replace,$string)和substr($string,$start,$length)。函数没有一致的模式。每个函数都可以有不同的参数顺序。我想我今天早上心情不好。关于文件系统函数,到底哪些函数的参数顺序不一致,而这些参数顺序又会被文件系统组件更正?请具体说明。