小白さん、助けてください! ! !
php 5.4 にアップグレード後
以前は実行できていた関数が実行できなくなりました
全体のファイル構成は以下の通りです
class wechatCallbackapiTest
{
public function valid()
{
……
include('db.php');
……
$contentStr= $this->zhiwen($name,$xuehao);
……
}
プライベート関数 zhiwen($uid,$xuehao) {
include('db.php');
....
}
}
これで、zhiwen 関数は include('db.php'); に移動するだけで済み、以下は通常は実行されません
ただし、上記の db.php の有効な呼び出しは次のとおりです。通常
db.php ファイルはデータベース ライブラリを呼び出すクラスであり、ファイルは次のとおりです。
$db_config["hostname"] = "localhost";サーバーアドレス
....
include('db.class.php');
$db = new db();
$db->connect($db_config);
?>
私は初心者なので、関数とクラス ライブラリの継承を理解していません。問題の解決を手伝ってください。
これは PHP の 5.4 へのアップグレードとは関係ありません。
パブリック関数 valid()
include('db.php');
そしてプライベート関数 zhiwen($uid,$xuehao)
include('db.php') ');
db.class.phpにdbクラスの定義があるため、dbクラスの重複定義でエラーが発生します
これはphp4でも禁止です!
これは、PHP を 5.4 にアップグレードすることとは関係ありません。
パブリック関数 valid()
include('db.php');
そしてプライベート関数 zhiwen($uid,$xuehao)
include('db.php ');
db.class.phpにdbクラスの定義があるため、dbクラスの重複定義でエラーが発生します
これはphp4でも禁止です!
ですが、
public function valid()
......
include( 'db.php'); //これは後で追加する可能性があります
……
$contentStr= $this->zhiwen($name,$xuehao);
逆に、
public function valid( )
{
include('db.php'); // これは可能です。後で追加してください
....
$contentStr= $this->zhiwen($ name,$xuehao)
....
}
include('db.php'); public function valid() には以前もありました
lnmp をアップグレードした後は使用できなくなりました
現在は public function valid()
//引用多次造成的,改成如下include_once('db.php');
//引用多次造成的,改成如下include_once('db.php');
どれを include_once('db.php'); に変更する必要がありますか?
両方変更してください
//引用多次造成的,改成如下include_once('db.php');
ご回答ありがとうございます。どちらを include_once('db に変更する必要があります。 .php');
両方を変更しました
//引用多次造成的,改成如下include_once('db.php');
代わりに
public function valid()
{
……
include('db.php'); // これは後で追加する可能性があります
……
$contentStr= $this->zhiwen($name,$xuehao);
....
}
b.php の include('db.class.php'); を次のように変更します。 include_once('db.class.php');
include('db.php'); 変更する必要はありません
//引用多次造成的,改成如下include_once('db.php');
include_once はロードされますが、ロードされません
include は、ロードされているかどうかに関係なく、常にロードされます
include_once('db.class.php'); に変更すると、この問題は発生しません。
include_once は、
がロードされているかどうかに関係なく、一度ロードされるとロードされないことを意味します。 > したがって、定数の定義を複数回インクルードしたファイル内にクラスや関数を含めることはできません。そうしないと、繰り返し定義されることになります。
db.php には
include('db.class) が含まれています。 .php'); // db クラス
の定義が含まれているため、再度 include('db.php') を実行すると、db クラスがすでに定義されているためエラーが発生します
include_once('db.class.php'); に変更すると、db Tire の定義が 1 回だけロードされるため、この問題はなくなります
ご説明ありがとうございます