0

私は古いphpウェブアプリケーションに取り組んでいます。

問題は、すべてのファイルの編成が多かれ少なかれランダムであるということです。私のお気に入りは、あるレベルで「include」フォルダと「includes」フォルダの両方があることです。

すべてのファイルを再配置する際の主な障害は、requireステートメントとincludeステートメントのほとんどが生の文字列ファイルパスであり、一部は変数であるということです。

私の現在の計画は次のようになります。

  1. パスがあるべき場所にあるかどうかをチェックするsuper_require($ path)関数を作成し、そうでない場合は、コードツリー全体で終了ファイル名が見つかるまで検索します。

  2. 検索-すべてのrequiresとincludesをsuper_require()に置き換えます。

  3. すべてのファイルを私の心のコンテンツに再配置します。

  4. この計画はクレイジーなエラーが発生しやすいように見えるので、それがどのように機能したのか疑問に思います。

だから私の質問は、この状況でより良い計画を知っている人はいますか?

4

1 に答える 1

2
  1. ワークステーションでローカルにファイルを再配置します
  2. すべてのインクルードを修正
  3. ステージングサーバーまたは開発サーバーでテストします
  4. 作業コードを本番環境に伝播する

アイデアはsuper_require滑りやすい坂です。他にどのような言語構造とライブラリ関数を魔法の関数でラップし始めますか?数年後にそれをどのように維持しますか?

リファクタリングを行うたびに、コードとプログラムの構造を改善してください。


PHP自体には、魔法の解決策の暗い歴史があります。彼らはしばしば、彼らが解決するよりも多くの問題を生み出すことになります。

グローバルを登録すると、GET変数とPOST変数がグローバルスコープの通常の変数として自動的にインポートされます。これにより、部外者が変数値をリクエストに追加するだけで変数値を定義できるようになり、セキュリティ上のバグが大量に発生しました。

しかし、最も類似した例は、すべてのGET変数とPOST変数にSQLエスケープを自動的に追加する魔法の引用符です。これにより、データベースクエリ用ではないデータを取得するとすぐに、開発者は大きな頭痛の種になります。長年の解決策は、魔法の引用をにするコードを追加することでした。これは、最初に追加するよりもはるかに難しく、忘れがちです。

ここでの一般的な教訓は、コードは決定論的な方法で実行したいことを正確に実行する必要があり、開発者よりも賢くなろうとしないことです。だからあなたの時間をかけてあなたの問題を解決してくださいTheRightWay™そして将来のトラブルを避けてください。

于 2012-06-20T08:28:04.980 に答える