ツールが存在する場合、または 5 分以内で書き込める場合はツールが必要です (誰の時間をも無駄にしたくありません)。
問題のツールは、PHP スクリプトの include、require、include_once、require_once を解決し、実際に then の内容を再帰的にハードコーディングします。
これは、複数のインクルード ファイルのコードとリソースを実際に使用する 1 つの大きなファイルで PHP スクリプトを出荷するために必要です。
PHP が CLI スクリプトに最適なツールではないことはわかっていますが、PHP を最も得意としている私は、PHP を使用して個人用または半個人用のツールを作成しています。PHP以外のものを使用したり、何か他のことを学ぶように指示する、役に立たない回答やコメントは必要ありません。
このアプローチのアイデアは、個人用ディレクトリに配置するために必要なすべてを表す単一のファイルを~/.bin/
作成し、完全に機能する自己完結型のスクリプトとしてそこに保存できるようにすることです。スクリプトにインクルード パスを設定して、XDG データ ディレクトリの標準などを尊重するものに設定できることはわかっていますが、そのアプローチを試してみたかったのです。
とにかく、車輪の再発明をしたくなく、すべての検索で何も得られなかったので、そこで尋ねますが、ここで洞察がない場合は、私が行っていた方法で続行し、実際にツールを作成しますこれにより、includes と requires が解決されます。
助けてくれてありがとう!
PS: 例を含めるのを忘れたので、メッセージを言い換えたくありません: これらの 2 つのファイル
mainfile.php
<?php
include('resource.php');
include_once('resource.php');
echo returnBeef();
?>
resource.php
<?php
function returnBeef() {
return "The beef!";
}
?>
として「コンパイル」されます(明確にするためにコメントが追加されました)
<?php
/* begin of include('resource.php'); */?><?php
function returnBeef() {
return "The beef!";
}
?><?php /* end of include('resource.php); */
/*
NOT INCLUDED BECAUSE resource.php WAS PREVIOUSLY INCLUDED
include_once('resource.php');
*/
echo returnBeef();
?>
スクリプトは明示的なコメントを出力する必要はありませんが、出力できれば便利です。
助けてくれてありがとう!
編集1
スクリプトに簡単な変更を加えました。自分でツールを書き始めたので、元のスクリプトに誤りがありました。インクルード ファイルは、最小限の作業を行うために、開始タグと終了タグ (
<?php ?>
)で囲む必要があります。結果のスクリプト例は結果として変更されていますが、テストされていません。
編集2
スクリプトは、実行時の正確な解析のように、PHP スクリプトの負荷の高い解析を実際に行う必要はありません。単純なインクルードは処理するだけで済みます (include('file.php'); など)。
私は自分のスクリプトの作業を開始し、ファイルを読み取って<?php ?>
、コメントや文字列ではなく、タグにのみ含めるように無意識に解析しています。小さな目標はdirname(__FILE__).""
、インクルード ディレクティブで検出し、実際にそれを尊重できるようにすることです。