Monthly Archives: 5月 2008 - Page 2

require_onceでなくautoload

require_once からの卒業~(尾崎豊風に) – Devel::Bayside

PHP5 では __autoload というメソッドをオーバーライドすることで、require_once から解放されます。Zend Framework を使うことで、この機能を意識せずに使えるようになります。

autoloadを使えば楽ちんな上に、require_onceよりも早いので1粒で二度美味しい感じです。
記事ではオレオレMVCとして、Zend Frameworkを部分毎に利用したフレームワークを作成されています。

PHPで二分探索

PHPで二分探索(Binary Search)バイナリサーチのアルゴリズムのメモ | Web&MUSICブログ QUALL
二分探索をやられています。基本的なアルゴリズムを再現するのは良い勉強ですよね。

可変長テキストの戻り読みはできない

可変長テキストの戻り読み – 考える人, コードを書く人

可変長テキストの戻り読みはできませんよ、というお話。

[php]
$str = 'abbbbbbbbbbcghi';
$str = preg_replace('/(?<=ab+c)/', 'def', $str);
?>
[/php]

ということは出来ませんよ。ということらしいです。
ふむふむ。戻り読みは位置を指定できるというの今知りました(^_^;)

「@」でエラー抑制すると PHP が遅くなる

「@」でエラー抑制すると PHP が遅くなるという噂について : a++ My RSS 管理人ブログ

「@」でエラー抑制すると PHP が遅くなるという話、実際にどれだけ遅いのか検証されています。
これは遅い、といった感じです。

また早い遅いとは別の話で、

大切なのは数秒のスピードアップ?それとも?

という意見もあります通り、エラー制御は大事ですね。

Zend_Validate_Alnumがなんかおかしい – 適当にメモったらこうなった

Zend_Validate_Alnumがなんかおかしい – 適当にメモったらこうなった

UTF-8環境下では挙動がおかしくなるという話で。
Zend_Validate_Alnum中のパターンを

[php]
$pattern = ‘/[^\p{Ll}\p{Lu}\p{N}' . $whiteSpace . ']/u’;
[/php]

に変更するとUTF-8でもマッチング可能になります。
マルチバイトは何かと気をつけないといけませんね。

clearstatcache()のはなし

clearstatcache()のはなし – おぎろぐはてな

件のclearstatcache()がなんのためにあるのか、という話になると思うのですが、

PHPは存在しないファイルについての情報はキャッシュしないことにも注意してください。もし存在しないファイルに対して file_exists() をコールする場合、ファイルを作成するまで この関数は FALSE を返します。もしファイルを作成した場合、たとえファイルを削除したとしても TRUE を返します。しかし、unlink() はキャッシュを自動的にクリアします。

ほうほう。気をつけなければいけませんね。

動的に拡張を有効にする

ベイエリア情報局: PHPで拡張を動的に有効にする汎用的な方法

最近のPHPではPHP_SHLIB_SUFFIXという定数に拡張の拡張子が定義されているので、それを使えばOK。

とのことなので、PHP_SHLIB_SUFFIXを使えばOKですね。

[php]
$prefix = PHP_SHLIB_SUFFIX === ‘dll’ ? ‘php_’ : ”;
dl($prefix.’foo.’.PHP_SHLIB_SUFFIX);
[/php]

しかし、これではMacOSではうまくいかないそうで。。
リンク先ではMac用でもOKなように汎用的に作られています。すごい!

1プロセスだけが実行されることを保証するクラス

ベイエリア情報局: 1プロセスだけが実行されることを保証するクラスを作った(PHP)
1プロセスだけが実行されることを保証するクラスを作られています。CLIで同じ動作を回す場合にありがたいですね。

PHPでDocTest

ウノウラボ Unoh Labs: PHPでDocTest

スクリプトのコメント内にテストを作るDocTest。
やはりテストを別ファイルに書くのはハードルが高い(^_^;)
DocTestが盛り上がっていくと良いなあと思います。

Zend Framework ファイルアップロード機能

Zend Framework コードリーディング (2) – Devel::Bayside
Zend Frameworkでファイルアップロード機能&ファイルはデータベースに格納、をやられています。
やはり時代はPostgreかっ