php

PHPのnullはハマりポイントになりかねない

php

$ php -r '$data = array(); echo $data["key"];' PHP Notice: Undefined index: key in Command line code on line 1当然ですね。 $ php -r '$data = null; echo $data["key"];'今更ながらに知ったのだけど、NOTICEも何も出ないのね。決まったフォーマット…

CakePHPがコンポーネントを読み込む仕組みを調べてみた

SecurityComponentのチェックにかかってにっちもさっちもいかなくなったんだが、そもそも基本的な動作フローを理解していないのでどこから手を付けていいのか分からない。というわけで、コンポーネントが読み込まれる仕組みを調べてみた。対象バージョンは1.…

CentOS5.5でCakePHP1.3系のInflector::slugを正常動作させる方法

「CakePHPでラジオボタンを出そうと思ったら、PCREとかPHPのビルドを考え直すハメになった」の続報です。CentOS5.5環境でPCREのUnicode文字プロパティを正常動作させる方法について改めてまとめます。動作確認には、Inflector::slugに含まれる問題のパターン…

CakePHPでラジオボタンを出そうと思ったら、PCREとかPHPのビルドを考え直すハメになった

(2011/05/18追記)末尾にCentOSの標準RPMの更新について書きました(2011/05/19追記)続編書きました CentOS5.5でCakePHP1.3系のInflector::slugを正常動作させる方法CakePHPのFormHelperでラジオボタンを出してみたところ、label要素がうまく動かない症状…

CakePHPで__(0)するとNULLが返ってくる

現時点のgithubのmasterでcake/bascis.phpから。 function __($singular, $return = false) { if (!$singular) { return; } これはひどいis_nullとか===とか、ちゃんと使わないと残念なバグを仕込んでしまうという、PHPにおける基本的な教訓を改めて得られま…

CakePHPのControllerがディレクトリの階層に対応していた件

(追記)本記事の内容はCakePHP1.3.6ならびに2011/04/28時点でのgituhbの1.2, 1.3ブランチで検証しました。(2011/05/05追記)コメントで現時点のCake2.0では再帰的な探索を行わないとのご指摘を頂きました。ちゃんと追えてないけど、import周りの処理は大幅…

CakePHPのSet::extractは引数の順番に寛容である

php

CakePHPにはSet::extractというPHPが不便なだけ非常に便利な機能があります。こいつの実装はなかなか面白いことになっていて、

SimpleXMLで親要素を取得する

php

$node->parent(); とかで取れると思ったら無理だった。 $parents = $node->xpath('parent::node()'); $parent = $parents[0]; みたいにxpathで取るのが妥当なやり方?こういう、配列を返す関数・メソッドのn番目の要素を直接取るのってPHPでは書けないんです…

PHPcon2009ビジネスデイに行ってきた

今年のPHPconは「ビジネスデイ」と「テックデイ」と銘打って2日間に渡って開催されました。どのようにそれぞれのカラーを打ち出していくのか、というかビジネスデイをどう形作っていくのかが気になっていたんですが、結論から言うとうまくキャラクター付けが…

第45回PHP勉強会@関東に行って来ました

events.php.gr.jp - 第45回PHP勉強会@関東 8/1の土曜日に六本木のお好み焼き屋さん「はてな」で開催されたPHP勉強会に参加してきました。最近はあんまりPHPを使ってないこともあって、自分が行って一人分の枠を喰うのもよろしくないだろうと、積極的に参加し…

limeにプラグイン機構を乗っけてみた

php

symfonyのテストフレームワークlimeはPHP版のTest::Moreとして単体で使うにも具合がいいけど、Test::More単体の機能しか備えてないので、拡張モジュールでサポートされているようなテストが出来ない。例えば、例外のテストなんかはTest::Exceptionが提供する…

PHPでTest::MoreするならLimeを使おう

「自分のメイン言語はPerlだけど、会社ではPHP使ってる。PHPでもTest::Moreみたいにテストしたい」という人は結構いるんじゃないかと思います。「php test::more」でググると出てくるのはここ。 Test::MoreのPHP版 : cotalog 紹介されているtest-more.phpは…

PEAR::Pagerを使うとautoloadが走ってしまう件

php

最近のよく訓練されたPHPerはフレームワークに組み込みの機能を使ったりするんだろうけど、そういう波に乗れていない僕は未だにPEAR::Pager使ったりします。今日はそんなPEAR::Pagerの小ネタ。PEAR::Pagerを使う時は、 'Sliding' ) ); みたいにmodeで表示タ…

PHPの思想と言語表現

先日の 第3回PHP懇親会に行ってきた で「PHPで書くとシンタックスが長ったらしくて嫌だ」ということを書いたら、いくつかフィードバックがあったので乗ってみる。Perlの「$hoge =~ s/^Hoge/Fuga/」という書き方に対して、PHPの「$hoge = preg_replace('/^Hog…

第3回PHP懇親会に行ってきた

第2回だと思ってたら、第3回だった! 前に参加したのは第1回? 第2回?というわけで、第3回PHP懇親会に行ってきました。会場はPHP懇親会と言えばここ。新宿の手造りダイニング「ファンデリ」さん。店の場所(特に入り口)がちょっと分かりにくいから、地図と…

PEAR::HTTP_Requestで「item=a&item=b&item=c」なURLを扱う

PHP

久々にPHP関連のエントリ。最近、フロントエンドのテンプレートをPHPで組んで、そこからバックエンドのPerl(Catalyst)の内部APIを叩く、みたいなことをしてます。複数選択可能なチェックボックスの扱いでつまづいたのでメモ。 ■結論 PEAR::HTTP_Requestで…

Re: $html->checkboxのバグ?

php

$html->checkboxのバグ? - Do you CakePHP はてな 昨日初めてCakePHP(1.2)を触った俺が試してみましたよ。チェックボックスを出力するのに、 $html->checkbox('User/active_flag',NULL,$value); とした時に$valueがエスケープされないというお話。1.2でそ…

CakePHPハンズオン@tokyoに参加してます

本日、ウノウにてCakePHPハンズオン@tokyoが開催されております。最近、「ちょっとした軽いのをぱぱっと作るにはやっぱりPHP便利だよなー」とPHP再評価フェーズに入っているので参加しています(現在進行形)。以前は自作の俺俺フレームワークでせこせこと組…

今週土曜日はCakePHPハンズオン@Tokyoですよ

CakePHPハンズオン@Tokyo - events.php.gr.jpPHP関連の勉強会は募集開始から1〜2時間で枠が埋まってしまうことが多いのですが、今回はわりと余裕があるみたいです。っても残り1枠だけど。講師はCakePHPのお兄さんとして有名なid:yandodさん。今年のPHPカンフ…

php4送別会に行ってきた

7・8日に2daysで開催された「PHP4送別会」に行ってきました。2日連続で参加するのは家庭平和維持の観点から自重して、8日の「たん清」での肉祭りのみ参加。写真はすっかり忘れてたので殺風景にテキストのみエントリ。そしてPHPconのエントリは時期を逃したの…

「PHPer」という言葉

php

Matz氏の「Attacking PHP」に端を発した今回の祭は予想以上に盛り上がり、いろいろと面白い議論にも発展しています。そんな中で、話が進むにつれて分かってきたのは、他の言語を使っている人の言う「PHPer」という言葉の意味が自分の認識とはかなり違ってい…

またphpネタで盛り上がってる

php

Matzにっき: Attacking PHP 404 Blog Not Found:「PHPなめんな」と「(Perl|Python|Ruby)をなめんな」の違い こういう波って本当に定期的に来るよね。特に何も書かずにスルーしてたけど、うっかり書いてしまいました。まず自分の過去を振り返ってみると、2001…

PHP懇親会(肉じゃない)に行ってきた

php

ちょっと出遅れた感はあるけど書いておこう。去る11月21日水曜日、新宿「ファンデリ」さんを借り切ってPHP懇親会が開催されました。「PHP勉強会 = 焼肉」のイメージを払拭するため(?)、今回はおされなダイニングで開催です。とは言え、そこは流石のPHPer達。…

PHP懇親会に行ってきます

php

Event Entry::PHP懇親会 焼肉じゃないことで話題の懇親会に参加します。「勉強会行くから晩飯いらない」と嫁に言ったら「また肉か!」と即座に返ってくるぐらい認知されてますよ。やりましたね。このところロクにphp触ってなかったり、外に出る時間があった…

サーバサイドCSS

以前このブログでも紹介した、拙作の「Smart*CSS」をウノウラボで紹介させて頂きました。流石に自分とこみたいな零細ブログで書くのとは大違いで、見る見るうちにブクマが増えていきます。 前回のフォームのユーザビリティネタは幅広い層に読んでもらえるよ…

Ubuntuでphp.iniのパスが指定出来ない件

phpをソースからビルドする場合、configureのオプション--with-config-file-pathでphp.iniを格納するパスを指定することが出来ます。例えば、 ./configure --with-config-file-path=/etcとすれば、/etc/php.iniを探すようになります。以下、完っ全に間違いで…

PHPカンファレンスに行ってきた

php

9/1(土)に開催されたPHPカンファレンス2007に行ってきました。まずは、会場の様子を。 期待を裏切らないこのクオリティ。大変おいしゅうございました。PHPやっててよかった! というのは前日のお話。当日は、朝から個人用の名刺作ってたら出発が遅れて、会…

phpでCSSを動的変換する「Smart*CSS」をリリースしました。

Smart*CSS CSSを構造化して記述できるようにする「Smart*CSS」をリリースしました。こいつを導入すると、 #content { p { margin:0; } ul { margin:10px 0; li { padding:10px; } } }てな感じにCSSが書けるようになります。php+Smarty+mod_rewriteで動作しま…

CentOS5.0の64bit版でphp5.2.3のconfigureが通らない件

specified location of the MySQL UNIX socket... no MySQL UNIX socket location... no mysql_close in -lmysqlclient... noみたいなエラーが出て、configureが止まる。--with-mysql=/var/lib/mysql でもダメで、--with-mysql-sock=/var/lib/mysql/mysql.so…

CentOSにvim7を入れてphp補完

emacsのphp-modeを最低限試してみたので、今度はvimでやってみました。どうやらvim7で実装されたomni補完(候補のリストが出てきてそこから選ぶ系の補完)がいいらしいんだけど、CentOSのyumで提供されているのは6.3。タブも使えません。そこで、手動で入れ…