HOME>WEBプログラム覚書>[SPL]SplFileInfo

[SPL]SplFileInfo

久しぶりにSPLネタ。

ファイルの情報をオブジェクト指向っぽく書くためのもの。 SplFileInfoで出来ることはファイルシステム 関数として存在してるので、 わざわざSplFileInfoを使う理由はないけど、クラスなので継承して機能を拡張できたりもする。

サンプル

DumpFileInfo

ファイルの情報をまとめて表示できる機能を追加

DumpFileInfo

  1. <?php
  2. class DumpFileInfo extends SplFileInfo
  3. {
  4.     public function dump()
  5.     {
  6.         foreach (get_class_methods($this) as $func) {
  7.             if (preg_match('/^get|is.+$/', $func)) {
  8.                 try {
  9.                     $result = $this->{$func}();
  10.                     if (is_bool($result)) {
  11.                         $result = $result ? 'true' : 'false';
  12.                     }
  13.                 } catch (Exception $e) {
  14.                     $result = '[例外]' . $e->getMessage();
  15.                 }
  16.                 printf('%s => %s<br />', $func, $result);
  17.             }
  18.         }
  19.     }
  20. }
  21.  
  22. $dfi = new DumpFileInfo(__FILE__);
  23. $dfi->dump();
  24. ?>

実行結果

getPath => /home/users/1/lolipop.jp-dp07173486/web/_/themes/default/views/pg/2011/02
getFilename => splsplfileinfo.php
getExtension => php
getBasename => splsplfileinfo.php
getPathname => /home/users/1/lolipop.jp-dp07173486/web/_/themes/default/views/pg/2011/02/splsplfileinfo.php
getPerms => 33188
getInode => 244452157
getSize => 6971
getOwner => 247673
getGroup => 1000
getATime => 1573679089
getMTime => 1525622974
getCTime => 1525622974
getType => file
isWritable => true
isReadable => true
isExecutable => false
isFile => true
isDir => false
isLink => false
getLinkTarget => [例外]Unable to read link /home/users/1/lolipop.jp-dp07173486/web/_/themes/default/views/pg/2011/02/splsplfileinfo.php, error: Invalid argument
getRealPath => /home/users/1/lolipop.jp-dp07173486/web/_/themes/default/views/pg/2011/02/splsplfileinfo.php
getFileInfo => /home/users/1/lolipop.jp-dp07173486/web/_/themes/default/views/pg/2011/02/splsplfileinfo.php
getPathInfo => /home/users/1/lolipop.jp-dp07173486/web/_/themes/default/views/pg/2011/02

内部のパス情報さらしてますが攻撃とかはしないでくださいw

参照ページ
投稿日 2011年2月24日 02:28
カテゴリ PHP
タグ SPL | サンプルコード
トラックバック URL http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1219

コメント

コメントする
Name
Email Address
URL