0

私が含むファイルがあります:

    require_once("../../constructor/database.php");

$stuff_inside_include_file->doThis() ; //ACCESSIBLE

function createUser(){
   $stuff_inside_include_file->doThat(); //NOT-ACCESSIBLE (object not found)
} 

function deleteUser(){
. ...

requireステートメントを関数のスコープに移動すると、機能します。そうでなければ、そうではありません。より良い解決策はありますか?

前もって感謝します。

4

4 に答える 4

1

あなたが試すことができます:

function createUser($stuff_inside_include_file){
   $stuff_inside_include_file->doThat();
} 

うまくいくはずだと思います。

于 2012-06-11T05:46:59.453 に答える
0

最善の解決策はグローバル変数を作成しないことですが、これも機能します。

require_once("../../constructor/database.php");

$stuff_inside_include_file->doThis() ; //ACCESSIBLE

function createUser(){
    global $stuff_inside_include_file;
    $stuff_inside_include_file->doThat(); //ACCESSIBLE
} 

function deleteUser(){
. ...

しかし、実際には..「グローバルに考え、ローカルスコープで行動する」。

于 2012-06-11T05:45:56.483 に答える
0

これは、変数がグローバルではないという問題だと思います。

例えば

$i = 10;

function pooppoop() {

    $i = 11;
    #this only sets the local variable i to 11

}

したがって、グローバル$iを配置する必要があります。関数の上部にあります。明らかに、$iをアクセスに問題のある変数に置き換えてください。

于 2012-06-11T05:47:47.443 に答える
-1

$ stuff_inside_include_file変数がグローバルスコープにあるように見えるので、これを実行できるはずです。

function createUser(){
   global $stuff_inside_include_file;
   $stuff_inside_include_file->doThat();
}
于 2012-06-11T05:45:46.470 に答える