Results for tag "php"

オブジェクト至高プログラミング

今週検証したコードに感銘を受けたので記録しておく。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
class Hoge{
    function __construct() {
        $this->aaa();
        $this->bbb();
        // ひたすら己のメソッド実行
    }
    function aaa(){
        // 100行以上
    }
    function bbb(){
        // 100行以上
    }
    // こんなメソッドいっぱい!
}
new Hoge();
?>

コンストラクタにひたすらメソッドを書いてnewするだけ。最強!!

[PHP]Cannot modify header information

とある理由からheader関数で他のページにリダイレクトする処理を追加する必要があったんだけど、同じページをrequire_onceしているにも関わらず、アクセスするページによってリダイレクトされたり、以下のようなエラーが表示された。

Warning: Cannot modify header information - headers already sent by (output started at /foo/bar/hoge.php:2937)
in /foo/bar/index.php on line 11

よくよくエラーを見たらindex.phpが呼び出しているhoge.phpの最後が

?> // ここに改行が入ってた

のように無駄な改行がされていたため、headerを送出できなかったっぽい。
PHPのデリミタの前後には何も書いちゃいけません。
[php]

[/php]

呼び出されているhoge.phpは実際はSmartyのモジュールでした。71ファイル全てが改行されてたので全部修正してなんとかなった。

おかえりgoto命令

PHP 5.3で登場、goto命令

goto命令の多用はメンテナンスできないソースコードを生むため懸念されることも多いが、Goto your Christmas presents with PHP 5.3で紹介されているようにエラー発生時に飛ばしてまとめて終端処理をするというのはgoto命令がよく使われるケースだ。

学生時代に「goto命令は悪だ」と教えられたけど、sendmailのソースでもこの手法が取られているので使い方次第ってこと。

PHPはしばらくやってないけど、今年はコンテンツ増やすために再開する事になりそうだなぁ。悲しい事にPHP4+Smartyなんだけど、運用系のWebサーバをPHP5にするためには動作チェックとか政治的な問題もいろいろクリアしないといけない。