ホームページ >バックエンド開発 >PHPチュートリアル >PHP マージ静的ファイルの例の詳細な説明

PHP マージ静的ファイルの例の詳細な説明

怪我咯
怪我咯オリジナル
2017-07-10 11:32:361422ブラウズ

この記事では、PHP で静的ファイルをマージするために必要な関連する設定と完全なコード、および使用手順が詳しく紹介されています。必要な方にはここをお勧めします

PHP.ini を設定する

設定を変更します。 item (必須) auto_prepend_file = "C: XAMPPHTDOCSAUTO_PREPEND_FILE.PHP"

設定項目を変更します (オプション)allow_url_include = On

Auto_prepend_file.php ファイルの内容

以下:

<?php
/**
 * 引入static文件
 * @param {array|string} 相对路径
 * @param {string} 当前执行脚本所在的路径FILE
 *
 */
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], &#39;.js&#39;) !== false) {
            $header_str = &#39;Content-Type:   text/javascript&#39;;
        } elseif (stripos($files[0], &#39;.css&#39;) !== false) {
            $header_str = &#39;Content-Type:   text/css&#39;;
        }
        if (!ob_get_contents()) {
            header($header_str);
        }
    }
    // 引入包含文件
    foreach($files as $key=>$value) {
        require_once($value);
    }
    // 改回当前脚本的执行路径
    chdir($old_dir);
}
?>

コードは次のとおりです。

りー

HTML ページでは、43a9fc1a8fd9d560200482513e7080ce2cacc6d41bbb37262a98f745aa00fbf0 を使用してインポートします。

製品がオンラインになる前に、バッチ

ファイル処理を使用して処理します。主に 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を呼び出してユーザーに通知メールを送信しました。

"a.js"、"b.js"和"../c.js"是待合并的JS文件,将其合并为base.js.php,则base.js.php中的代码如下:
<?php
    import_static(array(
        &#39;a.js&#39;,
        &#39;b.js&#39;,
        &#39;../c.js&#39;,
        &#39;../moduleB/all.js.php&#39;    // 也可引用.php文件
    ), FILE);
?>

ここで問題は、これら 3 つの関数がすべて、ユーザーが存在しないことを確認するために checkUserExists 関数を同時に使用するため、追加のオーバーヘッドが発生することです。

3つの中のcheckUserExistsを削除したい場合は可能のようです。ただし、後から一部の関数がresetPasswordまたはsendEmailを呼び出し、ユーザーが存在しない場合、システムでエラーが発生する可能性があります。
もう 1 つの解決策は、resetPassword のロジックを requestResetPassword に書き込み、少し後に sendEmail のロジックも同様に書き込むことです。このようにして、関数呼び出しが減り、データベース クエリが 1 回になり、パフォーマンスが向上します。ただし、パスワードのリセットと電子メールの送信の機能は再利用できず、単一責任の原則に違反し、コードの複雑さも増加します。
ただし、関数の分離と再利用性は非常に優れているため、実際のパフォーマンスに影響がある場合は、データベース クエリを減らすためにキャッシュの使用を検討してください。共有する checkUserExists 関数を変更しました。

/**
 * 用户请求重置密码的接收器
 */
function requestResetPassword() {
    //检查用户是否存在
    if( !checkUserExists( $_GET[&#39;userid&#39;] ) ) {
        exit(&#39;抱歉,用户不存在,请确认用户帐号。&#39;);
    }
    resetPassword( $_GET[&#39;userid&#39;] );
    //最后向用户发送一封邮件
    sendEmail( $_GET[&#39;userid&#39;], &#39;重置密码成功&#39;, &#39;新的密码是xxxx&#39; );
    exit(&#39;新密码已经发送到你的邮箱。&#39;);
}

/**
 * 帮助用户重置密码
 */
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 ) {
    //假设我有一个query的函数,它用来查询数据库并返回数据
    $user = query( "SELECT * FROM `user` WHERE `uid`=" . intval( $userid ) );
    return is_array( $user ) ? $user : array() ;
}

同じメソッドを使用して getUserInfo を変更することもできます。関数。

ここで、コードの再利用性が向上すると、パフォーマンスを向上させるのが非常に簡単になり、パフォーマンスのボトルネックも発見して変更するのが簡単になることがわかります。この例はパフォーマンスに大きな影響を与えませんが、トラバーサルなど、再利用のためにトラバーサルを関数にカプセル化し、それを複数回使用する場合があります。これらの出費は、予想していたほど私のプロジェクトに大きな影響を与えなかったか、最小限でした。したがって、私はパフォーマンスの無駄を心配するよりも、コードの再利用性と保守性を向上させる方法に時間を費やすことを好みます。実際のパフォーマンスが要件を満たしていない場合は、ハードウェア構成を増やすことも検討できます。

以上がPHP マージ静的ファイルの例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。