-2

php同じディレクトリに次のファイルがあります。

connection.php
index.php
lib.php

の関連コードconnection.php:

....
....
$client = 4; //something that I've defined here
....
....

の関連コードindex.php

require_once('connection.php');
require_once('lib.php');
....
function_search(); //function of lib.php
....
....

の関連コードlib.php

class function_my_exception extends function_your_exception {

    function __construct($hint, $debuginfo=null) {
        parent::__construct($hint, 'debug', '', $hint, $debuginfo);
    }

}
function function_search(){
....
....
if ($client !=4 )
   //Do something 
}

を実行するindex.phpと、エラーが発生し続けますUndefined variable $client" in line xxx of lib.php

4

2 に答える 2

4

関数の中にあるからです。function_search()

$client利用できません!

関数への引数として渡すことができます

function function_search($client)
{
...
}

そして、関数を呼び出すときに $client を渡します

function_search($client);

または、globalキーワードを使用して、関数内で使用できるようにすることができます

更新: このグローバル メソッドは避ける必要があります。コードのどこか$clientが変更され、スクリプト内で奇妙な動作やエラーが発生する可能性があるためです。変数をより詳細に制御できるため、通常は引数を関数に渡す方が適切です。 .

function function_search()
{
    global $client;
...
}
于 2013-06-06T09:38:31.503 に答える
0

lib.php を次のように編集します。

class function_my_exception extends function_your_exception {

    function __construct($hint, $debuginfo=null) {
        parent::__construct($hint, 'debug', '', $hint, $debuginfo);
    }
// delete it here

    function function_search(){
    ....
    ....
    if ($client !=4 )
       //Do something 
    }

} // add it here

}関数 __construct の直後にクロージングがあることに注意してください。これらの関数の最後にある必要があります。

于 2013-06-06T09:38:13.310 に答える