ホームページ  >  記事  >  バックエンド開発  >  PHP のグローバルおよびインクルードに関する問題

PHP のグローバルおよびインクルードに関する問題

WBOY
WBOYオリジナル
2016-08-04 09:22:041070ブラウズ

初心者なので勉強中にわからないこともあり、検索するのも簡単ではないので、皆さんに質問したいと思いここに送信しました。
すべての回答と助けに感謝します。

タイトルの通り:

リーリー

a.phpの擬似コードは以下の通りです:

リーリー

b.phpのコードは以下の通りです

リーリー

c.php

リーリー

達成する必要がある目標は、変数値を C.PHP ファイルで直接読み取れるようにすることです。


大まかなロジックは上記の通り なお、この部分はフレームワークのassign/displayに似ていると個人的には感じているのですが、実装方法が分かりません。

上記のコードはエラーを報告します:Notice: Undefined variable: str

皆さんからアドバイス(または文章を書く習慣など)をいただければ幸いです。
ありがとうございます。

返信内容:

初心者なので勉強中に分からないことがあり、調べるのも難しいので皆さんに質問させていただきました。
すべての回答と助けに感謝します。

タイトルの通り:

リーリー

a.phpの擬似コードは以下の通りです:

リーリー

b.phpのコードは以下の通りです

リーリー

c.php

リーリー

達成する必要がある目標は、変数値を C.PHP ファイルで直接読み取れるようにすることです。


大まかなロジックは上記の通り なお、この部分はフレームワークのassign/displayに似ていると個人的には感じているのですが、実装方法が分かりません。

上記のコードはエラーを報告します:Notice: Undefined variable: str

皆さんからアドバイス(または文章を書く習慣など)をいただければ幸いです。
ありがとうございます。

global $array; 只是修改了$array的作用域,但是extract($array); は関数内で実行されるため、$str のスコープは引き続き関数内にあります。c.php では var_dump($arr['str']) を実行できます。

あなたが言った2つの文について、「また、この部分はフレームワークのassign/displayに似ていると個人的に感じます」と「しかし、それを実装する方法がわかりません」は矛盾しています。この部分はフレームワークの代入/表示と似ていると思いますか?

クラスを使って例を書く場合も同じで、3つのファイルを別々に定義する必要はなく、快適に見えますが、使用している関数を見ると、オブジェクト指向の考え方がうまくできません。私たちが与えるとき、あなたのステップは安定していません。あなたのスプリントテクニックは確かに意味がありません。

PHP中所有的变量都有作用域,你看到的框架中使用assign/display等形式的模版引擎,都是把extract输出变量和include引入模版文件放在同一个函数中,这样才能使变量作用域一致,才能从被引入的文件中获得变量的值。而你的写法,把两个操作拆到不同的函数中,当然就不能互相访问了。别说你在c.php中想获得变量的值,你在say("str","thinks");それ以降でも直接入手することはできません。

関数のグローバル変数スコープと内部変数スコープの問題をよく理解していないようです。改めてコンセプトや使い方を確認してみるのもおすすめです!
あなたの考えによると、var_dump($str); の $str は、extract($array); のパラメータ 'str' です。実際、この時点で var_dump が取得したいのは、say 関数の変数 $str です。 。
あなたがやっていることは以下のとおりです:

リーリー

$str を取得できません。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。