为每个文件添加php对象是个好主意


Does php object for each file is good idea?

我正在编写一个管理文件(浏览,移动,删除等)的php应用程序,我需要为此创建几个函数。

我有两种方法来编写这些函数。
  • 选项1,使用对象:

    $myFile = new ofile('myFile.txt');
    $myFile->move('someDirectory');
    $myFile->delete();
    
  • 选项2,使用正常功能:

    move('myFile.txt','someDirectory/myFile.txt');
    unlink('someDirectory/myFile.txt');
    

我的问题是:

哪个解决方案更好?在性能上有很大的不同吗?

不存在性能差异。

第一个选项在可维护性和可扩展性方面要好得多。

但是,考虑将movedelete这样的方法移到单独的管理器类中,这样将来当您需要新的文件系统支持(例如S3)时,您就不会面临重构的麻烦了。

更好的是,考虑不要重新发明轮子,而是寻找开源解决方案,例如https://github.com/KnpLabs/Gaufrette

我个人更喜欢OOP方法,因为这样可以生成更可移植、可扩展、可维护和可读的代码。

如果您选择选项1,那么我强烈建议您查看SplFileObject。你可以从它扩展你自己的类,并且有许多开箱即用的重要方法。

$file = new SplFileObject('example.php');
var_dump($file->getRealPath());
var_dump($file->getFilename());

还可以阅读FilesystemIterator和DirectoryIterator,以避免重新发明轮子。