タグ

ブックマーク / fbis.hatenablog.com (4)

  • PHP版Path::Class - Unknown::Programming

    え?あぁ。Perlerなら皆さんご存知のPath::Classですが、それのPHP版です。欲しかったので作りました。 以下使い方例。 <?php require_once 'Path/Class.class.php'; $dir = cdir(array('foo', 'bar')); # Path_Class_Dirオブジェクト $file = cfile(array('bob','file.txt')); # Path_Class_Fileオブジェクト print "dir: $dir\n"; # foo/bar print "dir: $file\n"; # bob/file.txt $subdir = $dir->subdir('baz'); # foo/bar/baz $parent = $subdir->parent(); # foo/bar $parent2 = $paren

    PHP版Path::Class - Unknown::Programming
    tarchan
    tarchan 2010/09/13
  • PHPの閉じタグは心の臓に悪いから使わないで - Unknown::Programming

    閉じタグってのは「?>」のことね。未だに閉じタグ使ってるコードを見ると一瞬ドキッとするんだよね。(自分の昔のコードも含むw) いや、ちゃんとわかってて確実に使いこなしてるならいいんだけどたまに -- ここがファイルの先頭 -- <?php class Foo { // いろいろ } ?> -- ここがファイルの後尾 -- みたいな感じで閉じタグの後に改行コードが一つ入ってたりするのを見ると「あわわわ」ってなっちゃう。 実際には改行一つだけなら問題は出ない、PHPは閉じタグの直後の改行を消してくれるからね。 問題は改行が二つ以上あった場合だ。これは悲惨なことになる。PHPは閉じタグ以降のデータ(というか範囲外のデータ)は全部HTMLとして出力される仕様なので、改行コードが表示されちゃう事態に。 表示されちゃうっていうのは語弊があるか、元々PHPHTMLに埋め込むための言語なのでの範囲外の文

    PHPの閉じタグは心の臓に悪いから使わないで - Unknown::Programming
    tarchan
    tarchan 2009/08/13
    htmlで</li>省略しないと余計な空白入るみたいな問題か
  • PHPでWebプログラムすることのある僕がstrcmp関数を使う100の理由(ぉ - Unknown::Programming

    ==の代わりにstrcmp関数で比較すると、float型とarray型を扱う場合に==を使うのとは別の問題が発生することを示しました。 そんな型が来るならstrcmp使わないよ、という意見もあるとは思いますが、来る型がわかっているなら===を使えばいいと思うんですよね。strcmpを使いたい状況が僕にはわかりません。何にせよ、「安全な==」として使うにはstring型へのキャストを熟知している必要があると思いますよ、というのが記事の主張です。strcmpは文字列同士の大小比較にしか使えないと僕は思います。 PHPで==の代わりにstrcmp関数を使うことによる問題点 - hnwの日記 記事の主張はまったくごもっともで確かにその通りなのですが、それでも僕がstrcmp関数を使う理由はint型とstring型で比較したいからなんですよねー。 実際に関数を作るとき殆ど多くの関数において、flo

    PHPでWebプログラムすることのある僕がstrcmp関数を使う100の理由(ぉ - Unknown::Programming
    tarchan
    tarchan 2009/03/03
  • localが何をするものかイマイチわからん - Unknown::Programming

    ということを言われたので、ふむ確かに最初はわからないだろうなと思い、ここに記録する。 まず、ある学生さんの名言にこんなのがある。 お前は1枚のCDを聞き終わったら、キチッとケースにしまってから次のCDを聞くだろう?誰だってそーする。俺もそーする つまり、変数を一時的に書き換えるということは、処理を抜ける時に元の値に戻さないといけないということなのです。 しかしコレが実は自分でやろうとすると結構面倒くさいのだ。 とりあえず実装してみよう。 use strict; our $FOO = 'value'; print $FOO."\n"; main(); print $FOO."\n"; sub main { # $FOOのバックアップ my $tmp_foo = $FOO; # $FOOを上書きする $FOO = 'overwrite value'; # 何かしらの処理 anything();

    localが何をするものかイマイチわからん - Unknown::Programming
    tarchan
    tarchan 2008/09/24
  • 1