0

テンプレートにヘッダーファイルをインクルードする関数が呼び出されget_header()(ワードプレスに少し似ています)、機能しています。私の関数ファイルにはstylesheetURL()、テンプレートのスタイルシート URL を取得する関数も定義されています。

私の header.php ファイル (サブディレクトリ "design" 内) 内で、stylesheetURL を呼び出していますが、PHP はそれが未定義であると言います。

これは構造です:

pagehandler.php - ページ要求を処理します。「load.php」、「design/page.php」の順にインクルード

load.php - 「functions.php」とクラスが含まれています。

functions.php - get_header や stylesheetURL などの手続き型関数が含まれています。get_header は実際には header.php ファイルを絶対 URL (http://website.com/design/header.php) として関数内に含めますが、関数にはスコープがないため、stylesheeturl 関数を正常に呼び出す必要があります。

page.php - functionget_header()を呼び出し、コンテンツをエコーし​​てから、 を呼び出しますget_footer()

header.php - 呼び出しますstylesheetURL()。<< ここが壊れるところです。ヘッダー ファイルは問題なく含まれていますが、どの関数にもアクセスできません。

なぜこうなった?

編集: // 設定はグローバル配列であり、siteURL は、header.php または footer.php 以外のファイルから呼び出された場合に URL を適切に表示します。

    function siteURL() {
    global $settings;
    return $settings['site_url'];
}

function designURL() {
    $siteurl = siteURL();
    return $siteurl.'/design';
}

function stylesheetURL() {
    $durl = designURL();
    return $durl.'/style.css';
}

function get_header() {
    $durl = designURL();
    require $durl.'/header.php';
}

実際、 から に変更get_header()するinclude 'header.php'と、期待どおりに動作します。

4

1 に答える 1

0

URL経由でファイルを要求できないためだと思います。ファイルを要求するには、URL ではなくパスが必要です。php.ini でリモート ファイル インクルードが設定されている場合、インクルードは機能します。

于 2012-07-24T10:33:56.337 に答える