2016-11-26 37 views
1

對不起,這可能是嘲笑的問題,但我一直在使用filesize()爲我的4個月的PHP編碼(我是新來的php)我一直認爲它是php標準庫函數獲取文件尺寸。但現在我正在閱讀有關Standard PHP Library (SPL),我驚訝的是有一個叫SplFileInfo::getSize裏面做同樣的事情爲什麼PHP中有兩個文件大小函數(filesize()和SplFileInfo :: getSize)?

  1. filesize()認爲是標準的PHP函數或沒有其他功能?
  2. 如果filesize()考慮了一個標準的php函數,爲什麼php創建者會讓另一個函數(SplFileInfo::getSize)做同樣的事情來打擾自己?
  3. 這兩個函數filesize()SplFileInfo::getSize有什麼區別?我應該使用哪一個?

請注意,我是php的新手。謝謝

+0

這兩個函數的參數是什麼? –

+0

@u_mulder'文件大小()'採用文件名字符串,另一個不需要參數(一個靜態函數),所以? –

+0

這不是一個區別嗎? –

回答

3
  1. filesize()認爲是一個標準的php函數嗎?

什麼意思是standard?正如我在手冊filesize()中看到的,因爲php4(它不以正確的方式支持OOP)。所以,這個函數是獲取文件大小的程序方式。你只需要路徑文件,你得到的是一個大小。沒有別的。

  • 如果filesize()認爲是一個標準的PHP函數,爲什麼PHP的創作者通過使另一個功能SplFileInfo::getSize做同樣的事情打擾自己?
  • 在PHP5(你可以看到getSize可因爲PHP5)更多的面向對象的功能已被添加到PHP中,它們都是標準的PHP庫或SPL的一部分。所以,在php5中,你可以考慮像屬性對象的文件 - 名稱,大小等。因此,獲取一個或另一個屬性 - 有一種方法。獲取文件大小爲getSize()

    因此,getSize不是函數,它是類SplFileInfo的方法。

    1. 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(); 
    

    所以,你決定什麼函數和哪個的方法來使用。

    相關問題