×

Sign in with twitter.

You can follow the user and hashtags.

Share your tips on social media.

Post relative tips.

If you have relative tips, click [Add relative tips] to post.

require_onceを信用しないほうがいいケース

@tanakahisateru@tanakahisateru 2195 viewer 53 embed viewer embed
PHPのrequire_onceを使ってクラスの重複定義を避けるなどしていると上手くいかないケースがある。別のファイルパスに同じクラスが定義されていると重複かどうかをPHPが理解できない。たとえばComposerのautoloadでロードしたクラスがPEARにあった場合など。(vendorの下はinclude_pathに含まれないからrequireのときだけPEARを見る)

というわけで

if(!class_exists('PHPTAL')) { // composerのautoloadが動くかも
require_once 'PHPTAL.php'; // composerが動かなかったのでPEARインストールを試す
if(!class_exists('PHPTAL')) {
throw new RuntimeException("PHPTALがインストールされていません");
// さすがにSPLないとかはやめてね
}
}
$phptal = new PHPTAL;

これで一般化できる。まあ、どんな状況で使われるかわからないライブラリのためのtipsですけどね。

Click this to change format.

Add relative tips

Users who share this tip.

Comments