2016-12-28 9 views
1

私のPhPファイルには長い文字列定数がいくつか含まれています。そこで私は "my_string_constants.php"を作成し、にincludeを使用しました。これまでのところうまく動作します。別のphpファイルを含むphpファイルをインクルードしますか?

もう1つのファイルpage.phpには、文字列定数header.phpも必要です。以下のスキームは、これらの依存関係を明確にしようとしています。

enter image description here

文字列定数は、今私のヘッダーだけではなく、私のページの残りの部分で利用できるようです。私はstring_constants.phpの各文字列定数にglobal ...を追加することでこれを解決しようとしました。これにより、「不明な変数」のエラーは解決されましたが、文字列定数はほとんどのページコンテンツでは使用できないようです。

これを正しく行うにはどうすればよいですか?

UPDATE

問題がを解決されています。 $myString = ...の代わりにdefine(myStringを使用してください。そうすることで、私はにただ1つincludeが必要で、定数はpage.phpにも利用できるようになります。

ありがとうございます、皆さんは素晴らしいです。

+0

あなたのセットアップは不明です。ファイルを明示的に行う必要がある場合は、一番上のファイルに一度ファイルを含めたり、必要としたりする必要があります。 'page.php'と' header.php'はリクエストで呼び出された一番上のファイルではありません。両方のファイルに本当にファイルを含める必要がある場合は、 '' nclude_once() 'または' require_once() 'を使います。 – arkascha

+2

'page.php'が' header'と 'constants'を必要とするが、' header'がすでに 'constants'を持っている場合...' page.php'は 'header'だけを必要とします –

+0

@mistermartin私はそれを試みましたが、 : 'Notice:未定義の変数:C:\ xampp \ htdocs \ t \ wp-content \ themes \ c \ home_page.php'のre_afornone_ov '' header.php'では使用できますが、 'homepage.php'では使用できません。どちらもそれを必要とします。 – RubenGeert

答えて

3

変数から定数を区別することをお勧めします。特に、他の開発者がこの作業に取り掛かった場合、あなたの用語では混乱します。

定数について、あなたはグローバルとして宣言する必要はありませんし、彼らがそのようにのように定義されています。

define('MY_CONSTANT', 'Value'); 

定数ファイルはとても私には、あなたのサイト全体の設定ファイルとして機能しているように私には思えますヘッダーが使用されているかどうかにかかわらず、すべてのページでそれを持つことは理にかなっています。通常、この目的のためにブートストラップファイルを作成します。

bootstrap.phpの:

<?php 
require_once(__DIR__ . '/constants.php'); 
require_once(__DIR__ . '/database.php'); 
require_once(__DIR__ . '/session.php'); 

あなたはポイントを得る、そしてすべてのアクセスのページには、このブートストラップファイル、その後、おそらくヘッダをインクルードする必要があります。

page.php:header.phpの中

<?php 
require_once(__DIR__ . '/bootstrap/bootstrap.php'); 
require_once(__DIR__ . '/header.php'); 
?> 
<h1>Page Title</h1> 

、それはこれらの定数を必要とするため、次の2つの方法でこれを処理し、いずれかの定数が定義されていることを確認することができます(意味は、ブートストラップが最初に含まれていた)、またはファイルがロードされたことを確認するために別のrequire_onceを使用してください。

if (!defined('MY_CONSTANT')) exit('Bootstrap failure'); 

または

require_once(__DIR__ . '/bootstrap/constants.php'); 
+0

ありがとう!私は数分間このマニュアルを参照する必要があります。 – RubenGeert

+0

それは彼がワードプレスを使っているというコメントからも出てきます。もしそれがすでにどのように整理されているかに違いがあれば。 –

+0

@mister martin:はい、それは確かにWordpressです。 – RubenGeert

0

includeについて深く関わる多くのディレクトリや「ファイル」にアクセスすると、後でデバッグしようとしているときに実際に問題が発生する可能性があります。原則として、私はファイルを含めることに関して一段階だけ深くしようとします。私。インクルードと呼ばれるフォルダを作成し、そこにすべてを配置します。複数の変数、関数などを必要とするファイルがある場合は、やってその時点で必要なページでそれらを含め、いくつかのようなので、含まれています:

<?php 
include("includes/header.php"); 
includes("includes/functions.php"); 
?> 

点で他の問題は、複数を有することもありますが、場合のように、含まれますあなたは、そのセッションやクッキーにアクセスする必要があり、すべての付属のphpファイルを含むすべてのページの上部に

session_start(); 

を宣言するために、いくつかのLAMPスタックが必要になりますセッションやクッキーを持っています。

あなたの質問にお答えするには、サイトやスクリプトを再編成するのが最も簡単な解決策だと思います。

0

ヘッダーページontop u write
'header.php';

とheader.phpに書き込むと、 に 'my_string_constants.php'が含まれます。

この場合、page.phpがヘッダーを呼び出し、ヘッダーでmy_string_constantsが呼び出されています...これは何を意味していますか?

+0

これは答えですか?それは1のように感じることはありません、それはコメントのように感じる.... –

関連する問題