お世話になっております。
初心者の質問失礼します。
下記のようにdefineで定義した値が
他のファイルで表示すると値が入っていないのですが
PHPではどのように表記するのか伺ってよろしいでしょうか?
define.php
php
1<?php 2define("DEBUG",1); 3?>
main.php
php
1require_once(dirname(__FILE__).'/define.php'); 2 3hogehoge(); 4 5function hogehoge{ 6 echo DEBUG; //0 と表示される。 7}
お忙しいところ大変申し訳ないのですが
上記ご助力頂けますようお願い申し上げます。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
とりあえず
function hogehoge{
↓↓↓
function hogehoge(){
echo DEBUG; //0 と表示される。
とのことですが、未定義の定数はNoticeとなって値は表示されないはず
先頭の方に以下を記載して多重定義されていないか確認して下さい
PHP
1ini_set('display_errors',1); 2error_reporting(E_ALL);
(別のどこかで先に定義されているような気がします)
投稿2017/09/26 02:18
総合スコア114572
0
define.php
以前にどこかでDEBUG
が定義されていませんか?
定義されていない定数は、(PHP 7.1以下ではE_NOTICE
、7.2ではE_WARNING
を発生させつつ)その名前と同じ文字列、今回の場合は"DEBUG"
とみなされます(3v4lでの実行例)。「0」ということは、どこかでそう定義されている可能性があります。
投稿2017/09/26 02:13
編集2017/09/26 02:17総合スコア145121
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
提示ソースだと文法エラーがでているはずです。
PHP
1function hogehoge{ 2 3↓ 4 5function hogehoge(){ 6
ただ、上記のようになおしたとしても「0」と出力されることはありません。
「1」と出力されます。
読み込めていないのであれば未定義エラーとして
Use of undefined constant DEBUG~~
とエラーが出力されるはずなので。(PHP5.6以下はNotice、PHP7以上はWARNING)
追記:
既に同名で定数が定義されているとそちらが優先されます。
php
1define("DEBUG",0); 2define("DEBUG",1); 3 4echo DEBUG; // 0
echoは出力されますが、echoより先に下記のようにエラーが出力された上で、echoが出力されます(エラー出力有効の場合)
Notice: Constant DEBUG already defined in ~~.php on line XX 0
エラーの出力は有効にされているかを確認した上で、main.php実行に関わるソースに
同じ定数を定義していないかも確認してみてください。
余談:
define.phpはHTML等何も出力しない定義だけのファイルなので閉じ?>はない方が良いと思います。
ファイル全体が純粋な PHP コードである場合は、ファイルの最後の終了タグは省略するのがおすすめです。 終了タグの後に余分な空白や改行があると、予期せぬ挙動を引き起こす場合があるからです。 余分な空白や改行のせいで PHP が出力バッファリングを開始し、その時点の内容を意図せず出力してしまうことになります。
投稿2017/09/26 02:13
編集2017/09/26 02:43総合スコア80765
0
自己解決
本当に申し訳ございません。
はっきり言って原因が分かりませんが
require_once(dirname(FILE).'/define.php');
が読み込めなくなり
弄っているとdefineが定義されるようになりました……z
define.phpでは
<?php ?>で実装しました……
本当にどうしてか謎ですしどうやって解決したかも謎ですが
上記ご連絡いたします。
皆様からコメント頂いたのにぱっとしない理由で申し訳ございません。
よりいっそう勉学に励みます。
大変失礼しました。
投稿2017/09/26 04:46
総合スコア443
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/26 04:51 編集
2017/09/26 05:08
2017/09/26 05:36
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。