0

私は PHP アプリケーションを構築していますが、どこからでも実際にアクセスできるグローバル構成設定を保存する方法がよくわかりません。含まれているコンテンツ、メインの開始ページから含まれている他のコンテンツにアクセスできないようです。たとえば、index.php に foo.php と bar.php が含まれている場合、bar.php には foo.php はありませんが、index.php には両方が含まれています。含まれているファイルは他のファイルを参照できません。これは正しいです?

はいの場合、このようなものをどのようにセットアップしますか?

index.php

<?php
include 'functions/load.php'
echo getHeader();
?>

関数/load.php:

<?php
include_once 'config.php'
include_once 'header.php'
//loads the includes
?>

関数/config.php:

<?php
//I want to store the site URL here.
$siteURL = "http://127.0.0.1";
?>

関数/header.php:

<?php
function getHeader(){
    return "Header for " . $siteURL;
}
?>

他のインクルードファイル内を含め、どこからでもアクセスできる構成ファイルを設定するにはどうすればよいですか? また、他のリストを含むファイルを含めることは良い習慣を含んでいますか?

4

3 に答える 3

1

bootstrap.php必要なすべての要件を含む単一のファイルを含めることをお勧めします。ブートストラップはオートローダも定義する必要があります。これにより、明示的に要求しなくてもクラスを自動ロードできます。

bootstrap.phpただし、関数を自動ロードすることはできないため、関数を含むファイルはを使用する際に必要になりますrequire_once()。他の選択肢については、この質問を参照してください。

「フロント コントローラー」と呼ばれる、アプリケーションへの「エントリ ポイント」を 1 つだけ持つことが理想的です。その場合はbootstrap.php、このファイルの先頭で 1 回だけ要求する必要があります。

編集:構成に関する注意

ブートストラップ内にも構成をロードします。これを行う方法はあなた次第です...すべての変数を に直接bootstrap.php配置することも、そこから構成で必要とすることもできます。ベスト プラクティスは、構成を別のファイルに保存することです。

PHP 配列による構成:

# in /path/to/config.php (not in a publically accessible directory!)
return array(
    'site_url' => '127.0.0.1', 
    'example' => array(
        'animal' => 'cat', 
        'vehicle' => 'car'
    )
)


# in bootstrap.php
$config = require_once('/path/to/config.php');

# anywhere else
$siteUrl = $config['site_url'];
$animal = $config['example']['animal'];

または、INI ファイルを使用することもできます。

# in /path/to/config.ini (not in a publically accessible directory!)
[site]
url = 127.0.0.1

[example]
animal = cat
vehicle = car


# in bootstrap.php
$config = parse_ini_file('/path/to/config.ini', true); 


# anywhere else
$siteUrl = $config['site']['url'];
$animal = $config['example']['animal'];
于 2012-10-25T10:28:56.127 に答える
0

実際、問題はファイルを含めることではありません。関数 getHeader() を作成し、外部から変数の値にアクセスしました。関数の外から $siteURL の値を取得することはできません。このためには、定数を使用する必要があります。

このようにしてみてください:

config.php で

define("SITEURL","http://127.0.0.1");

header.php で

function getHeader(){
    return "Header for " . SITEURL;
}

値をパラメーターとして関数に渡すか、定義済みの定数を使用する必要があります。

于 2012-10-25T10:34:00.517 に答える
0

「config.php」を一度だけ含める必要があります。最善の方法は、スクリプトに「require_once」を追加することです。これは、たとえば「index.php」が含まれていることが保証されます。MVC パターンを見てください。

于 2012-10-25T10:25:46.570 に答える