ホームページ >バックエンド開発 >PHPチュートリアル >ヘルプ: 継承エラーについて
php バージョン 5.4.12
PHP の厳格な標準: db_attach::needBy() の宣言は、C:phpwebdbdb_attach.php の 25 行目の spModel::needBy($id, $value) と互換性がある必要があります
書き換え時のパラメータが一貫していません。インターネットで方法を読んでみました
1. 書き換えた関数のパラメータを初期化します
2. error_reporting を error_reporting(E_ALL & ~(E_STRICT | E_NOTICE)) に設定します (php.ini に追加しました)
このエラーは常にブロックできません。解決策はありますか?ありがとうございます
別の&~E_DEPRECATEDを追加
通常、この種のエラーはブロックされるべきではありません
プロンプトに従い、プログラムをより堅牢にするために修正してください
まだ動作しません、もう一度試してください。書き込みには一貫したパラメータが必要ではありませんか?これはプログラムを変更する必要がありますか?
関連部分のみを投稿してください
何が空なのかは不明です
class access{
public function needBy($field, $value)
{
return $this->find(array ($field=>) ;$value));
}
}
class dbconect extends access
{
function needBy($id)
{
return $this->find(array('id'= >$id) ,'','uid,path');
}
}
ありがとう、助けてください、他に必要なものはいつでも提供します
お待ちください!
テスト済みの
class c { function test( $a ) { return 1; } } class cc extends c { function test() { return null; } } $cc = new cc();Strict 標準: cc::test() の宣言は ... の c::test($a) と互換性がある必要があります
ははは。 post は私が書いたものよりも優れています
access::needBy($field, $value) には 2 つのパラメーターがあります
dbconect は access から継承します
dbconect::needBy($id) には 1 つのパラメーターしかないため、エラーが発生しました。理由は上記の通りです
dbconect::needBy($id, $null=null) にデフォルトパラメータ
を追加するだけです
これはバージョンの問題だと思います
コードを再現します:
------ ---------
72bd06f94f4df9cf1e00431f04348abe
57fd247cc60908ecc9885a412d5cfe57
期待される結果:
----------------
どのコード ブロックもエラーをトリガーしないか、両方のコード ブロックがエラーをトリガーする必要があります。注意してください。
実際の結果:
--------------
最初のブロックトリガー:
厳格な基準: cc::test() の宣言は c::test( の宣言と互換性がある必要があります) ) strict_test.php の 4 行目
2 番目は何も行いません
デフォルトのパラメータメソッドは良いです、テストは合格しました、モデレータに感謝します、私はそれを学びました、そして私は将来もっと頻繁にそれを行います、アドバイスしてください。どうもありがとうございます!
もちろんバージョンによって異なります
php を使用する人が多すぎるため、開発者は意図的にいくつかの障害を作成します
php5.5 では、Java と同じくらい厳密になる可能性があります