目次
ディスカッションへの返信 (解決策)

クラス継承の問題

Jun 23, 2016 pm 01:55 PM
継承する

今日は興味深い問題に遭遇したので、コードに直接アクセスしました
親クラスと子クラスがあります
FatherClass.php:

class father{	public $a;	function __construct(){		$this->a = 3;	}}
ログイン後にコピー

Son.php:
include 'fatherClass.php';$son = new son();$son -> sonFun();class son extends father{	function sonFun(){		echo 222;	}}
ログイン後にコピー

Son.php を実行すると、エラーが報告されます問題は、クラスの息子が見つからないことです。
1. Son が親クラスから継承する「extends Father」を削除すると、正しく実行されます。
2. FatherClass の内容が include ステートメントに直接置き換えられた場合、正しく実行されます。
3.は以下のように書かれていれば、正しく実行されます
rreee
誰が説明できるでしょうか?


ディスカッションへの返信 (解決策)

父親クラスの名前を Fatherclass から Father に変更します

include 'father.php'

まず宣言してから使用してください例外として、クラスの定義と使用法が同じファイル内にある場合、定義と使用法は順不同です

こちら http://www.laruence.com/2008/08/24/427.html

php スクリプトはまずオペコードにコンパイルされ、次に実行されます

3 階の記事の著者は php の専門家のようです...ソースコードレベルの分析をいくつか見たことがありますが、彼のアバターには感銘を受けました
彼は説明しましたクラス継承のコンパイルメカニズムと多重継承のバグ。これにより、元の投稿者の最初の問題が解決されます。

2. FatherClass の内容が include ステートメントで直接置き換えられた場合、正しく実行されます
これは、つまり、次のことを意味します。 that include (require?xxxxxx_once?) は実行期間中にのみ実行され、コンパイル中には使用されません

要約すると、zend php スクリプトを読んだ後、継承されていないクリーンなクラスが見つかった場合は、最初にそれを作成します。 PHP の「クラス」ではなくアセンブリの「クラス」構造に近い)、継承されたクラスが見つかり、その親クラスがすでに存在する場合は、同じビルドと他のコードのコンパイルが続行されます。このとき、PHP スクリプトはオペコードになります。実行時、コードは他の PHP スクリプト (オペコード) の読み取り、複雑な継承クラスの確立などの順序で実行されます。また、アセンブリ コードの実行ステージではクラス定義がインテリジェントに識別されず、厳密に順序どおりにのみ実行されます。 PHPコードの。
私の考えが正しければ、元の投稿者の質問を説明できます

まず息子が来て、次に父親が来ます。それは常識に反しています


常識に従って行動しないのに、それはphpのバグだと言うのは、ちょっと言いすぎです
phpが複数のスキャンを実行して速度が低下する場合は、phpが遅すぎると言うべきです

私最初に息子を育て、次に老子を育てます。それは常識に反しています


常識に従わず、それをphpのバグだと言うなら、それは少し言い過ぎです
phpが複数のスキャンを実行して速度が低下する場合は、phpが遅すぎると言うべきです


代わりに。バグについては「人間味に欠ける」と説明した方が良いです
様々なデザインパターンに適応するには、コンパイル段階でもっと賢くなると良いと思いますよ〜
将来のphpバージョンでも、インテリジェントな完了と高いレベルが達成されるかもしれませんHTML構文インタープリターのような耐障害性
PHPはオペコードを提供します キャッシュ拡張機能は、複数行スキャンの字句解釈であるだけでなく、パフォーマンスを遅らせるコンパイルメカニズムの解決策でもあります~また、OOP内の複数のファイルによって引き起こされるディスクIOオーバーヘッドも排除します
わかりますか? php5 のバグです。解決したい場合は、3 のアドレスを参照してください。


プログラムコードについては、モデレーターの指示に従って、最初に説明してからオリジナルのコードを使用してください。

私は通常、コードを作成するときにインスタンス化して定義することはしませんが、SDK を実行するときにこの小さな問題を発見しました。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C++関数継承の詳しい解説:継承で「基底クラスポインタ」と「派生クラスポインタ」を使うには? C++関数継承の詳しい解説:継承で「基底クラスポインタ」と「派生クラスポインタ」を使うには? May 01, 2024 pm 10:27 PM

関数の継承では、「基底クラス ポインター」と「派生クラス ポインター」を使用して継承メカニズムを理解します。基底クラス ポインターが派生クラス オブジェクトを指す場合、上方変換が実行され、基底クラスのメンバーのみにアクセスされます。派生クラス ポインターが基本クラス オブジェクトを指す場合、下向きキャストが実行される (安全ではない) ため、注意して使用する必要があります。

PHP エラーの解決: 親クラスの継承時に問題が発生しました PHP エラーの解決: 親クラスの継承時に問題が発生しました Aug 17, 2023 pm 01:33 PM

PHP エラーの解決: 親クラスの継承時に発生する問題 PHP では、継承はオブジェクト指向プログラミングの重要な機能です。継承により、元のコードを変更することなく、既存のコードを再利用し、拡張および改善できます。継承は開発で広く使用されていますが、親クラスから継承するときにエラーの問題が発生することがあります。この記事では、親クラスから継承するときに発生する一般的な問題の解決に焦点を当て、対応するコード例を示します。質問 1: 親クラスが見つかりません。親クラスの継承処理中に、システムが親クラスを見つからない場合、

継承とポリモーフィズムは C++ のクラス結合にどのような影響を与えますか? 継承とポリモーフィズムは C++ のクラス結合にどのような影響を与えますか? Jun 05, 2024 pm 02:33 PM

継承とポリモーフィズムはクラスの結合に影響します。派生クラスは基本クラスに依存するため、継承により結合が増加します。ポリモーフィズムにより、オブジェクトは仮想関数と基本クラス ポインターを通じて一貫した方法でメッセージに応答できるため、結合が軽減されます。ベスト プラクティスには、継承を控えめに使用すること、パブリック インターフェイスを定義すること、基本クラスへのデータ メンバーの追加を回避すること、依存関係の注入を通じてクラスを分離することが含まれます。ポリモーフィズムと依存性注入を使用して銀行口座アプリケーションの結合を軽減する方法を示す実践的な例。

C++ 関数の継承の詳細な説明: 継承のエラーをデバッグするには? C++ 関数の継承の詳細な説明: 継承のエラーをデバッグするには? May 02, 2024 am 09:54 AM

継承エラーのデバッグのヒント: 正しい継承関係を確認します。デバッガーを使用してコードをステップ実行し、変数値を調べます。仮想修飾子を正しく使用してください。隠れた相続によって引き起こされる相続ダイアモンド問題を調べてください。抽象クラスに実装されていない純粋仮想関数がないか確認します。

継承した Java プログラムを使用して定期預金 (FD) および定期預金 (RD) の利息を計算します 継承した Java プログラムを使用して定期預金 (FD) および定期預金 (RD) の利息を計算します Aug 20, 2023 pm 10:49 PM

継承は、あるクラスのプロパティと動作に別のクラスからアクセスできるようにする概念です。メソッドやメンバ変数を継承するクラスをスーパークラスまたは親クラスと呼び、メソッドやメンバ変数を継承するクラスをサブクラスまたはサブクラスと呼びます。 Javaでは、クラスを継承するために「extends」キーワードを使用します。この記事では、相続を利用して定期預金や定期預金の利息を計算する Java プログラムについて説明します。まず、ローカル マシンの IDE でこれら 4 つの Java ファイル Acnt.java を作成します。このファイルには、金利や金額などの口座詳細を保存するために使用される抽象クラス「Acnt」が含まれます。また、計算用のパラメータ「amnt」を持つ抽象メソッド「calcIntrst」も含まれます。

PHP でポリモーフィズムと継承を使用してデータ型を処理する方法 PHP でポリモーフィズムと継承を使用してデータ型を処理する方法 Jul 15, 2023 pm 07:41 PM

PHP でデータ型を処理するためにポリモーフィズムと継承を使用する方法 はじめに: PHP では、ポリモーフィズムと継承は 2 つの重要なオブジェクト指向プログラミング (OOP) 概念です。ポリモーフィズムと継承を使用することで、さまざまなデータ型をより柔軟に処理できます。この記事では、ポリモーフィズムと継承を使用して PHP でデータ型を処理する方法を紹介し、コード例を通じてその実際の応用例を示します。 1. 継承の基本概念 継承はオブジェクト指向プログラミングにおける重要な概念であり、親クラスのプロパティとメソッドを継承できるクラスを作成できます。

PHP のパッケージング技術とアプリケーション PHP のパッケージング技術とアプリケーション Oct 12, 2023 pm 01:43 PM

PHP のカプセル化テクノロジとアプリケーションのカプセル化は、オブジェクト指向プログラミングにおける重要な概念であり、外部プログラムに統一されたアクセス インターフェイスを提供するために、データとデータに対する操作を一緒にカプセル化することを指します。 PHP では、アクセス制御修飾子とクラス定義を通じてカプセル化を実現できます。この記事では、PHP のカプセル化テクノロジとそのアプリケーション シナリオを紹介し、いくつかの具体的なコード例を示します。 1. カプセル化されたアクセス制御修飾子 PHP では、カプセル化は主にアクセス制御修飾子によって実現されます。 PHP には 3 つのアクセス制御修飾子が用意されています。

C++ 関数の継承の詳細な説明: 継承における 'is-a' と 'has-a' の関係を理解するには? C++ 関数の継承の詳細な説明: 継承における 'is-a' と 'has-a' の関係を理解するには? May 02, 2024 am 08:18 AM

C++の関数継承を詳しく解説:「is-a」と「has-a」の関係をマスターしよう 関数継承とは?関数の継承は、派生クラスで定義されたメソッドを基本クラスで定義されたメソッドに関連付ける C++ の手法です。これにより、派生クラスが基本クラスのメソッドにアクセスしてオーバーライドできるようになり、基本クラスの機能が拡張されます。 「is-a」および「has-a」関係 関数継承では、「is-a」関係は、派生クラスが基本クラスのサブタイプであること、つまり、派生クラスが基本クラスの特性と動作を「継承」することを意味します。基本クラス。 「has-a」関係は、派生クラスに基本クラス オブジェクトへの参照またはポインターが含まれていること、つまり、派生クラスが基本クラス オブジェクトを「所有」していることを意味します。構文関数継承を実装する方法の構文は次のとおりです: classDerivedClass:pu

See all articles