2011-12-14 10 views
6

Sto eseguendo uno script PHP da CLI che utilizza il metodo DirectoryIterator::getExtension() in PHP.DirectoryIterator :: getExtension() versione

La versione di PHP sono in esecuzione sotto è 5.3.5, ma io continuo a ricevere errori dicendo Fatal error: Call to undefined method DirectoryIterator::getExtension()

Lo script funziona bene in mia macchina dev locale che esegue PHP 5.3.6, senza errori. Tuttavia, lo page for DirectoryIterator::getExtension() nell'uomo PHP non ha menzione della versione.

Qualcuno può dirmi quale versione ho bisogno di utilizzare questo metodo?

+3

Il changelog ('NEWS') dice che è stato effettivamente introdotto in 5.3.6. 'Aggiunto SplFileInfo :: getExtension(). FR # 48767. – mario

risposta

5

From the documentation:

(Nessuna informazione versione disponibile, potrebbe essere solo in SVN)

Sembra che il commit non ha fatto la build di PHP 5.3.5, ma salì in 5.3.6 rilascio. La pagina non è ancora stata aggiornata.

E come Mario ha sottolineato, la 5.3.6 changelog menzioni l'aggiunta:

  • SPL estensione:
    • ...
    • Aggiunto SplFileInfo :: GetExtension(). FR # 48767. (Peter Cowburn)
+2

grazie. Suppongo che dovrò usare pathinfo() invece. Qualche altro pensiero? Grazie. – julio

+0

@julio: Oltre ad aggiornare la versione live a qualcosa di precedente, la 5.3.5, sembra tutto quello che puoi fare. –

1

Non c'è da stupirsi, ho continuato a ottenere GetExtension(). Sebbene sia documentato, non è in versione 5.3.5. Sto usando questa soluzione alternativa per il GetExtension mancante():

foreach($iter as $splFileInfo) { 

    $fileName = $splFileInfo->getFilename(); 

    $pos_dot = strrpos($fileName, "."); // find '.' 

    $ext = ($pos_dot !== false) ? substr($fileName, $pos_dot+1) : null; 
    //. . . 
} 
8

Questo è un modo molto più semplice per ottenere l'estensione del file, IMO:

<?php 
    $iterator = new DirectoryIterator($data_dir); 
    foreach($iterator as $entity) { 
    if($entity->isFile()) { 
     $file_extension = pathinfo($entity->getFilename(), PATHINFO_EXTENSION); 
     ... 
    } 
    } 
?> 
Problemi correlati