php

例外を簡単にラップできるように(5.3.0から)

php

PHPのマニュアルを見ていて気付くことって案外多い。今日はExceptionの項を見ていて、コンストラクタの第3引数にPHP 5.3.0から別の例外を渡すことができるようになったのを知った。 getMessage(), $e->getCode(), $e); } つまり、こういうふうに例外のラッピ…

Snow LeopardはPHP 5.3.0入り

php

自宅のMacをSnow Leopardにした。いちばんびっくりしたこと: icecube:~ hiro_y$ php -v PHP 5.3.0 (cli) (built: Jul 19 2009 00:34:29) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend TechnologiesPHP 5.3.0が…

PHPのオートローディングはis_callable関数でもきちんと働く

php

PHPのオートローディングで1つ気になることがあったので実験。/test.php

無名関数はClosureのインスタンスになる

php

ようやくPHP 5.3.0の環境をWindows上に作ってみたんだけど、無名関数はPHP 5.3.0から追加されたClosureクラスのインスタンスになるみたい。 C:\>php -v PHP 5.3.0 (cli) (built: Jun 29 2009 21:25:23) Copyright (c) 1997-2009 The PHP Group Zend Engine v…

AmazonのAPIでHMACSHA256が必要になる件

php

アマゾンAPIを使うのに2009年8月15日から認証が必要になるらしい AmazonのAPIを使う場合に認証コードが必要になる件だけど、HMACSHA256だからPHPだとこうだね。

PHPのリフレクションってどうなんだろ

php

PHPのリフレクションって使われてるのかな。PHPのマニュアルでもわかりづらい場所に解説があって、決して重要視されてる感じがしない。ちなみに、karintoではメソッドの引数の個数に応じてkarinto_sessionのインスタンスを生成するかどうかを判断している箇…

タイプヒンティングって書いてますか

php

PHPのタイプヒンティングってどこまできちんと書くものなのだろう。名前空間がないという制約ゆえに、どうしても長くなってしまいがちなPHPのクラス名。メソッドの引数できちんとタイプヒンティングを記述すればものすごく長い記述になってしまうし、クラス…

IPTCに含まれる日本語がうまく取り出せない

php

GoogleのPicasaでつけたタグとか説明文は、IPTCの形式で画像に保存されるらしい。IPTCってなんだろと調べていたら、EXIFと同じような画像に付加できるメタデータで、PHPにはiptcparseとかiptcembedという関数が存在することを初めて知った(この辺が詳しい)…

karinto_sessionやっぱり廃止するかも

自分で使わなさそうということもあり、karintoのsessionクラスをやっぱり廃止しようとか考えたり。すっぱり廃止してしまうかもしれません。PHPでセッションを扱う場合、memcacheとかDBにデータを乗せるケースがほとんどで、実際問題単純なsession関数のラッ…

マジックメソッド使ってる

moonyでは意図的にマジックメソッド使わないようにしてたんだけど、karintoではむしろマジックメソッドがあればいいやとか思いはじめてる(__setとか__getとか__issetとか__unsetとか)。 session(true); $session->name = $req->nam…

入力パラメータのエンコーディングが不正な場合のHTTPのステータスコード

php

素朴な疑問。mb_check_encoding関数で入力パラメータのエンコーディングをチェックしてエラーだった場合、webアプリはHTTPのステータスコードとして何を返せばよいのだろう。 200: エラーメッセージ表示 403: アクセス禁止 406: 受け付けられない 追記: これ…

例外は明示的にthrowする

php

PHPで例外を使うときに気をつけていること。それはできるだけ明示的にthrowしてあげることだ。発生しうる例外をcatchせず、何もしなければより上位の呼び出し元にthrowされていくが、そうしてしまうとPHPの場合メソッドにJavaのようなthrows句がないので、そ…

リクエストパラメータが配列かそうでないか

php

PHPはGETとかPOSTのリクエストパラメータがスーパーグローバル変数(すごい名前だ)で簡単に受け取れるから便利なのだけれど、その値が通常の文字列なのか配列なのかは調べてみないとわからない。 /foo.php?name=bar /foo.php?name[]=bar /foo.php?name=bar …

header関数とステータスコードの関係

php

あー、なんか、 header("HTTP/1.0 404"); だけで「404 Not Found」の文字列が返ってくるみたいですよ……さすがPHP。 2008-12-14 - kotori@notes HTTPのステータスコードとPHPの関係についてid:takahashimさんにコメント欄で教えてもらったので試してみました…

HTTPのステータスコードを簡単に送出したい

php

PHPはwebに特化した言語なんだから、もっと簡単にHTTPのステータスコードを送出するためだけの関数とかが用意されていてもいいと思う。 send_http_status_code(404);みたいな感じで。PEAR::HTTP_Headerとかそのためだけに使うのも何か違う気がする。

ソースの読みやすさ重要

php

フレームワークっていろいろあるけど、そのソースが読みやすい、追いやすいというのはやはり重要なのだと思う。そのフレームワークを利用しているとどうしてもソースを読まなければならないシーンというのは出てくると思うし。そういう意味でZend Framework…

リフレクションのgetDocComment試してみた

php

PHPのリフレクションで実装されているgetDocCommentメソッドを試してみた。PHP 5.1.0以降の環境で利用できるはず。 bar; } } $refClass = new Reflectio…

ロリポのPHP5、PDOの件

php

ロリポップ!で管理してるサーバーの1つがPHP5対応したようなのでphpinfo()の出力結果など見ていた。気になっていたPDOの対応は、 sqlite2 sqlite mysql pgsql になってる。sqlite関数の方はsqlite2まで対応だったので、sqlite3が使えるようになったってこと…

NetBeansお試し中

php

id:devworksさんが「いいよ!」とTwitterで言っていたのでNetBeans 6.5RC2のPHPバンドル版をお試し中。Subversionとの連携含めて非常に便利かも。個人的な開発環境はもうNetBeansでいい感じ。まだステップ実行とかは試してないけど、そのうち試したい。NetBe…

moony PHP5版出ました

もうid:clonedに試されてたり(2008-11-12)しますが、moonyをPHP5版にtrunkの差し替えをしました。さすがにPHP4はもういいかな、という感じで。http://code.google.com/p/moony/まだテストとかチューニングとか全然なので、これからブラッシュアップする感…

Moonyのphp5-testflight版

MoonyのPHP5対応版、作ってますよ。完成がいつになるかわからないけど。Subversionでphp5ってブランチを切ったものの、とりあえず手元でごにょごにょ書いてます。php5-testflight版として。最初はちょこちょこ書き直せばPHP5に対応!と思ったのだけど、そう…

PHPカンファレンス2008のメモ

php

PHPカンファレンス2008に参加したので、今さらながらメモの内容をさらしておく。割と個人用。 PHP 5.3 ラムダ関数とクロージャ late static binding dynamic static call phar mysqlnd namespace IDEで自動補完とかほしくなりそうな予感 PEAR::PHP_CodeSniff…

validation記法でまだ悩む

php

CakePHP 1.2のvalidation記法を読んでた。フレームワークによっていろいろなvalidation記法があるけど、結局のところ、validationのルールをXMLで記述するか、YAMLで記述するか、連想配列で記述するかの違いでしかないのよね。

emptyの引数に配列

php

配列の変数がある場合に、その配列の要素数が0でないことを確認するのにemptyを使うのに抵抗がある。emptyの扱う範囲が広すぎるからかな。 0) { // ... } 下の書き方の方が好み。emptyって関数じゃなくて言語構造だったりするわけだけれども。

assignは長すぎる

php

前から思ってたんだけど、Smartyのassignメソッドが面倒くさい。単純に書くのに長すぎる。 $smarty->assign('foo', $bar); assignは「割り当てる」って意味だからたしかにその通りなんだけど、でもやっぱりassignは長いと思う(ぼくがものぐさなだけなのだが…

viewヘルパーの実装に迷う

viewヘルパーの実装を関数ベースにするかオブジェクトベースにするか迷う。関数でいいかなー、と思ったりオブジェクトにしておいた方が実装とかメンテナンス楽かもと思ったり。どっちがいいかしら。 inputText('name'); ?> PHPの場合、割と関数ベースでもよ…

ターミナルからCotEditorでファイル編集

Mac上でPHPをいじる場合: ファイル操作はターミナルで Subversionの操作含む *.phpファイル編集はCotEditorで 行う場合が多い。ちょっと直すだけならvimでやってしまうけど。そうなると、ターミナルからファイルをCotEditorで開けると便利だ。 http://www.ev…

Viewクラスどうしよう

CakePHPはViewから割といろいろな情報にアクセスできる。 そういえば、Viewについてはあまり語られていない: CakePHP のおいしい食べ方 Viewというかテンプレートからアクションの変数にアクセスできたりするの必要かなぁ。あれば便利なのはわかってるんだけ…

Moony::loadにした

Moony::importじゃなくてMoony::loadにした。

試行錯誤

フレームワーク作ってると、ビューのヘルパークラスを作るにあたって Moony_Helper Moony_View_Helper のどちらのクラス名がいいか割とどうでもいいことでいろいろ考えたりする。テンプレートからどう呼び出すのかとか、全部1つのクラスで実装するのかどうか…