この記事では、PHP で静的ファイルをマージするために必要な関連する設定と完全なコード、および使用手順が詳しく紹介されています。必要な方にはここをお勧めします
PHP.ini を設定する
設定を変更します。 item (必須) auto_prepend_file = "C: XAMPPHTDOCSAUTO_PREPEND_FILE.PHP"
設定項目を変更します (オプション)allow_url_include = On
Auto_prepend_file.php ファイルの内容
以下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | <?php
function import_static( $files , $path =NULL){
$old_dir = getcwd ();
$tmp_dir = (isset( $path )) ? dirname( $path ): dirname(FILE);
chdir ( $tmp_dir );
if (! is_array ( $files )) {
$tmp = array ();
$tmp [] = $files ;
$files = $tmp ;
}
if (isset( $files [0])) {
if ( stripos ( $files [0], '.js') !== false) {
$header_str = 'Content-Type: text/javascript';
} elseif ( stripos ( $files [0], '.css') !== false) {
$header_str = 'Content-Type: text/css';
}
if (!ob_get_contents()) {
header( $header_str );
}
}
foreach ( $files as $key => $value ) {
require_once ( $value );
}
chdir ( $old_dir );
}
?>
|
ログイン後にコピー
コードは次のとおりです。
りー
HTML ページでは、 を使用してインポートします。
製品がオンラインになる前に、バッチ
ファイル処理を使用して処理します。主に 2 つの側面の作業を行います1.「*.js.php」を「*.js」ファイルに出力し、「*.js.php」を削除します。 。コマンドライン: php *.js.php > *.js
2. HTML ページ内の「*.js.php」への参照を「*.js」に置き換えます。 preg_replace()
追記: import_static 関数は、PHP で相対パスを処理する include() の問題を解決します。
次の PHP コード例は、ユーザーのパスワードのリセットを支援するために機能し、requestResetPassword はユーザーのパスワードのリセット要求を受け取り、対応するチェックを実行します。再利用性を高めるために、パスワードを変更した後、パスワードのリセット操作を新しいresetPassword関数に割り当て、sendEmailを呼び出してユーザーに通知メールを送信しました。
1 2 3 4 5 6 7 8 9 | "a.js" 、 "b.js" 和 "../c.js" 是待合并的JS文件,将其合并为base.js.php,则base.js.php中的代码如下:
<?php
import_static( array (
'a.js',
'b.js',
'../c.js',
'../moduleB/all.js.php'
), FILE);
?>
|
ログイン後にコピー
ここで問題は、これら 3 つの関数がすべて、ユーザーが存在しないことを確認するために checkUserExists 関数を同時に使用するため、追加のオーバーヘッドが発生することです。
3つの中のcheckUserExistsを削除したい場合は可能のようです。ただし、後から一部の関数がresetPasswordまたはsendEmailを呼び出し、ユーザーが存在しない場合、システムでエラーが発生する可能性があります。
もう 1 つの解決策は、resetPassword のロジックを requestResetPassword に書き込み、少し後に sendEmail のロジックも同様に書き込むことです。このようにして、関数呼び出しが減り、データベース クエリが 1 回になり、パフォーマンスが向上します。ただし、パスワードのリセットと電子メールの送信の機能は再利用できず、単一責任の原則に違反し、コードの複雑さも増加します。
ただし、関数の分離と再利用性は非常に優れているため、実際のパフォーマンスに影響がある場合は、データベース クエリを減らすためにキャッシュの使用を検討してください。共有する checkUserExists 関数を変更しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
function requestResetPassword() {
if ( !checkUserExists( $_GET ['userid'] ) ) {
exit ('抱歉,用户不存在,请确认用户帐号。');
}
resetPassword( $_GET ['userid'] );
sendEmail( $_GET ['userid'], '重置密码成功', '新的密码是xxxx' );
exit ('新密码已经发送到你的邮箱。');
}
function resetPassword( $userid ) {
if ( !checkUserExists( $userid ) ) {
return false;
}
return true;
}
function sendEmail( $userid , $title , $content ) {
if ( !checkUserExists( $userid ) ) {
return false;
}
return true;
}
function checkUserExists( $userid ) {
$user = getUserInfo( $userid );
return ! empty ( $user );
}
function getUserInfo( $userid ) {
$user = query( "SELECT * FROM `user` WHERE `uid`=" . intval ( $userid ) );
return is_array ( $user ) ? $user : array () ;
}
|
ログイン後にコピー
同じメソッドを使用して getUserInfo を変更することもできます。関数。
ここで、コードの再利用性が向上すると、パフォーマンスを向上させるのが非常に簡単になり、パフォーマンスのボトルネックも発見して変更するのが簡単になることがわかります。この例はパフォーマンスに大きな影響を与えませんが、トラバーサルなど、再利用のためにトラバーサルを関数にカプセル化し、それを複数回使用する場合があります。これらの出費は、予想していたほど私のプロジェクトに大きな影響を与えなかったか、最小限でした。したがって、私はパフォーマンスの無駄を心配するよりも、コードの再利用性と保守性を向上させる方法に時間を費やすことを好みます。実際のパフォーマンスが要件を満たしていない場合は、ハードウェア構成を増やすことも検討できます。
以上がPHP マージ静的ファイルの例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。