对不起,这可能是一个嘲笑的问题,但我一直在使用filesize()进行4个月的php编码(我是php的新手)和我总是把它想象成获取文件大小的php标准库函数。但现在我正在阅读关于Standard PHP Library (SPL)的内容,我感到惊讶的是还有一个名为SplFileInfo::getSize的函数完全相同的事情
filesize()
是否被认为是标准的php函数?filesize()
被认为是一个标准的php函数,为什么php创建者会通过创建另一个函数(SplFileInfo::getSize
)来做同样的事情来打扰自己呢?filesize()
和SplFileInfo::getSize
之间有什么区别?我应该使用哪一个?请注意我是php 的新手。感谢
答案 0 :(得分:3)
filesize()
是否被认为是标准的php函数? standard
是什么意思?正如我在手册filesize()
中看到的那样,因为php4(它没有以正确的方式支持OOP)。因此,此函数是获取文件大小的过程方式。您只需要文件路径,而您获得的是一个大小。别无其他。
filesize()
被认为是一个标准的php函数,为什么php创建者会通过让另一个函数SplFileInfo::getSize
做同样的事情来打扰自己呢?在php5中(正如你可以看到getSize
自php5起可用)更多面向对象的功能已被添加到php中,它们都是标准PHP库或SPL
的一部分。因此,在php5中,您可以将文件视为具有属性的对象 - 名称,大小等。因此,对于获取一个或另一个属性 - 这是一种方法。获取文件大小为getSize()
因此,getSize
不是函数,它是类SplFileInfo
的方法。
filesize()
和SplFileInfo::getSize()
之间有什么区别?我应该使用哪一个?正如我们已经了解的那样 - filesize()
使用程序方法:
$filename = '/path/to/file.ext';
$size = filesize($filename);
由于getSize()
是类的方法,因此应首先创建类的对象:
$filename = '/path/to/file.ext';
$finfo_obj = new SplFileInfo($filename);
$size = $finfo_obj->getSize();
因此,由您来决定 功能和使用哪种方法。