テンプレートにヘッダーファイルをインクルードする関数が呼び出され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'
と、期待どおりに動作します。