tannakaken 2023-03-06 07:16:29

[PHP] 生PHPとかそういうレベルのものではないもっと恐ろしいものの片鱗を味わったぜ このエントリーをはてなブックマークに追加

投稿者からのアピールポイント

色々な趣深いコードを見てきましたが、やばいものは大概コードの細部だけでなく全体の構造もやばい気がします。これはその中でも1・2を争う思い出深いものです。

とある会社さんの公開されてるアプリに機能を追加するにあたって、このままでは機能追加しにくいのでまず改修、という話で見せられたのが下記のようなファイルの群れでした。

これはコマンドラインツールではなく、このようにcallが一つだけあるクラス定義とインスタンス化及びメソッドの呼び出しが書かれた幾つものPHPファイルがお互いにシェルを通して呼び合うことで、最終的にはWebアプリとして動いているのです。職業プログラマとしての初めて読んだ他人のコードがこれで、どんな本にも載っていないものが出てきてとてもびっくりしたのを覚えています。

随分経ってから書いた人に意図を聞いたら「プロトタイプとしてコマンドラインツールを書いたら、これが本番環境に投入されて」と言っていました。その場では納得しかけましたが、後で「プロトタイプでもこうは書かないよ!」と思いました。

Laravelに書き直したものは僕の手を離れて今も動いています。

<?php

class SomeClass {
  public function call() {
    $arg1 = $argv[1];
    $arg2 = $argv[2];
    //  色々な処理
    $command = sprintf("php ./OtherClass.php %s $d", $str, $num);
    exec($command);
  }
}

$instance = new SomeClass();
$instance->call();

使い方ヒント: 「これは臭う」という行を見付けたら、各行のsmellをクリックしてマーキングしておきましょう(要Twitter OAuth認証)

コメント

まだコメントがありません。最初にコメントを残しませんか?

コメント投稿には、twitter認証が必要です。

Twitter認証