ホームページ php教程 php手册 セクション 9 結合 [9]

セクション 9 結合 [9]

Jun 13, 2016 pm 12:46 PM
そして 協会 関数 どれの 属性 方法 方法 バインディング アクセス 移行 限界


アクセスを制限するだけでなく、アクセス メソッドは、サブクラスによって呼び出されるメソッド、またはサブクラスによってアクセスされるプロパティも決定します。また、関数呼び出しと関数自体の間の関係、およびメンバー アクセスと関数間の関係も決定されます。

コンピュータ言語には、静的バインディングと動的バインディングの 2 つのバインド方法があります。静的バインディングは、プログラムが実行される前にデータ構造との間で発生します。 PHP は動的言語であるため、静的バインディングをシミュレートできます。 >
動的バインディングは、実行時に利用可能な情報のみを使用して、実行時に生成されるアクセス要求に対して行われます。オブジェクト指向コードでは、動的バインディングは、どのメソッドが呼び出されるか、またはどのプロパティがアクセスされるかを決定することを意味し、このクラス自体ではありません。

パブリック メンバーと保護されたメンバーは、動的バインディングを使用して、以前のバージョンの PHP の関数と同様に動作します。つまり、メソッドがサブクラスでオーバーライドされたメソッドにアクセスすると、クラス メンバーが書き込まれます。はサブクラスのインスタンスです。(親クラスのメンバーにアクセスする代わりに) サブクラスのメンバーがアクセスされます。

このコードは「Hey! I am Son.」を出力します。 PHP は getSalutation を呼び出します。これは Son のインスタンスであり、salutation が public の場合、PHP は同じ結果を生成します。 Son では、identify の呼び出しがバインドされます。

サブクラス内でアクセスメソッドが protected から public に弱化されても、アクセスメソッドを使用する原則に従って、クラスメンバーへのアクセスを強化することはできません。したがって、アクセス方法を public から protected に変更することは不可能です。

リスト 6.10 動的バインディング
class Father
{
protected $salutation = "こんにちは!" file://greetings

public function getSalutation()
{
print ("$this->salutationn");
$this->identify();

保護関数identify()
{
print("私はFather.
n");
}
};

class Son extends Father
{
protected $salutation = "Hey!"; file://parentクラスの protected $salutation は上書きされます

親クラスの protected functionidentify() file://protectedidentify() は上書きされます
{
print("I am Son.}
};

$obj = new Son();
$obj->getSalutation(); file://output やあ、私は息子です.
?> //注意: getSalutation() はサブクラスでオーバーライドされませんが、実際には getSalutation() がまだ存在します。//このクラスの $salutation およびidentify()
// のインスタンスの getSalutation() と同じです。 Son サブクラス ) メソッドは動的にバインドされているため、Son インスタンスの getSalutation() メソッドを呼び出すと、
// メソッド内のメンバー salutation とidentify() の代わりに、Son クラス内のメンバー salutation とidentify() が呼び出されます。

プライベート メンバーは、そのメンバーが属するクラス内にのみ存在します。パブリック メンバーや保護されたメンバーとは異なり、PHP は、サブクラスであっても、静的バインディングをシミュレートします。例 6.11 を参照してください。スクリプトは this->salutation を現在のクラス Father にバインドします。

リスト 6.11 バインディングとプライベート メンバー
class Father
{
private $salutation = "こんにちは!"

public function getSalutation()
{
print("$this- >salutationn");
$this->identify();
}

プライベート関数identify()
{
print("私は父です。}
}

class Son extends Father
{
private $salutation = "Hey!";
private functionidentify()
{
print("私は息子です。
n")
}
}

$obj = new Son();
$obj->getSalutation (); file:// 出力 こんにちは!
?> 動的バインディングの利点は、親クラスのインターフェイスと機能を維持しながら、継承されたクラスが親クラスの動作を変更できることです。例 6.12 を参照してください。 動的バインディングを使用しているため、deleteUser で呼び出される isAuthorized のバージョンは、通常のユーザーの場合は FALSE を返します。 AuthorizedUser のインスタンス。PHP で AuthorizedUser::isAuthorized を呼び出すと、deleteUser がスムーズに実行されます。 注: わかりやすく一言で言えば、オブジェクトの型、メソッド、および属性のバインディングです。親クラスとサブクラスの両方に存在するメソッド。または、属性にアクセスするときは、まずインスタンスがどのオブジェクト タイプに属しているかを判断し、次に対応するクラスのメソッドと属性を呼び出します。

Listing 6.12 動的バインディングの利点
class User file://user
{
protected function isAuthorized() file://認証されたユーザーかどうか
{
return(FALSE); >}

public function getName() file://Get name
{
return($this->name);
}

public function deleteUser( $username ) file://delete user
{
if(!$this->isAuthorized())
{
print("権限がありません。
n") ;
return(FALSE);

//ユーザーを削除します
print("User selected.
n")
}
}

class AuthorizedUser extends User file://認証されたユーザー
{
保護された関数 isAuthorized() file://overwrite isAuthorized()
{
return(TRUE);

$ user = 新しいユーザー;
$admin = 新しい AuthorizedUser;

//許可されていません
$user->deleteUser("Zeev"); $admin->deleteUser("Zeev");
?> なぜプライベート クラス メンバーは静的バインディングをシミュレートするのでしょうか? この質問に答えるには、プライベート メンバーがどのような場合に必要なのかを思い出す必要があります。

プライベート メンバーは、サブクラスが親クラスの動作を変更または特殊化したくない場合にのみ使用されます。一般的に、このような状況は考えられるよりもまれです。オブジェクト階層では、ほとんどの機能をサブクラスによって特殊化、改善、変更できるようにする必要があります。これは、オブジェクト指向プログラミングの基本の 1 つです。プライベート メソッドや変数が必要であることが確実な場合など、特定の状況があります。サブクラスが親クラスの特定の部分を変更することを許可したくない。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

WeChat で削除された連絡先を回復する方法 (簡単なチュートリアルでは、削除された連絡先を回復する方法について説明します) WeChat で削除された連絡先を回復する方法 (簡単なチュートリアルでは、削除された連絡先を回復する方法について説明します) May 01, 2024 pm 12:01 PM

残念ながら、WeChat は広く使用されているソーシャル ソフトウェアであり、何らかの理由で特定の連絡先を誤って削除してしまうことがよくあります。ユーザーがこの問題を解決できるように、この記事では、削除された連絡先を簡単な方法で取得する方法を紹介します。 1. WeChat の連絡先削除メカニズムを理解します。これにより、削除された連絡先を取得できるようになります。WeChat の連絡先削除メカニズムでは、連絡先がアドレス帳から削除されますが、完全には削除されません。 2. WeChat の組み込みの「連絡先帳復元」機能を使用します。WeChat には、この機能を通じて以前に削除した連絡先をすばやく復元できる「連絡先帳復元」機能が用意されています。 3. WeChat 設定ページに入り、右下隅をクリックし、WeChat アプリケーション「Me」を開き、右上隅にある設定アイコンをクリックして設定ページに入ります。

モバイルドラゴンの卵を孵化させる秘密が明らかに(モバイルドラゴンの卵をうまく孵化させる方法を段階的に教えます) モバイルドラゴンの卵を孵化させる秘密が明らかに(モバイルドラゴンの卵をうまく孵化させる方法を段階的に教えます) May 04, 2024 pm 06:01 PM

テクノロジーの発展に伴い、モバイルゲームは人々の生活に欠かせないものになりました。かわいいドラゴンエッグの画像と面白い孵化過程で多くのプレイヤーの注目を集めており、その中でも注目を集めているゲームの一つがモバイル版ドラゴンエッグです。プレイヤーがゲーム内で自分のドラゴンをより適切に育成し成長させることができるように、この記事ではモバイル版でドラゴンの卵を孵化させる方法を紹介します。 1. 適切な種類のドラゴン エッグを選択する プレイヤーは、ゲーム内で提供されるさまざまな種類のドラゴン エッグの属性と能力に基づいて、自分に適したドラゴン エッグの種類を慎重に選択する必要があります。 2. 孵化機のレベルをアップグレードします。プレイヤーはタスクを完了し、小道具を収集することで孵化機のレベルを向上させる必要があります。孵化機のレベルは孵化速度と孵化成功率を決定します。 3. プレイヤーはゲームに参加する必要がある孵化に必要なリソースを収集します。

携帯電話の文字サイズの設定方法(携帯電話の文字サイズを簡単に調整できます) 携帯電話の文字サイズの設定方法(携帯電話の文字サイズを簡単に調整できます) May 07, 2024 pm 03:34 PM

携帯電話が人々の日常生活において重要なツールになるにつれて、フォント サイズの設定は重要なパーソナライゼーション要件になりました。さまざまなユーザーのニーズを満たすために、この記事では、簡単な操作で携帯電話の使用体験を向上させ、携帯電話のフォントサイズを調整する方法を紹介します。携帯電話のフォント サイズを調整する必要があるのはなぜですか - フォント サイズを調整すると、テキストがより鮮明で読みやすくなります - さまざまな年齢のユーザーの読書ニーズに適しています - フォント サイズを使用すると、視力の悪いユーザーにとって便利です携帯電話システムの設定機能 - システム設定インターフェイスに入る方法 - 設定インターフェイスで「表示」オプションを見つけて入力します。 - 「フォント サイズ」オプションを見つけて、サードパーティでフォント サイズを調整します。アプリケーション - フォント サイズの調整をサポートするアプリケーションをダウンロードしてインストールします - アプリケーションを開いて、関連する設定インターフェイスに入ります - 個人に応じて

BTCC チュートリアル: BTCC 取引所で MetaMask ウォレットをバインドして使用する方法は? BTCC チュートリアル: BTCC 取引所で MetaMask ウォレットをバインドして使用する方法は? Apr 26, 2024 am 09:40 AM

MetaMask (中国語ではリトル フォックス ウォレットとも呼ばれます) は、無料で評判の高い暗号化ウォレット ソフトウェアです。現在、BTCC は MetaMask ウォレットへのバインドをサポートしており、バインド後は MetaMask ウォレットを使用してすぐにログイン、値の保存、コインの購入などが可能になり、初回バインドで 20 USDT のトライアル ボーナスも獲得できます。 BTCCMetaMask ウォレットのチュートリアルでは、MetaMask の登録方法と使用方法、および BTCC で Little Fox ウォレットをバインドして使用する方法を詳しく紹介します。メタマスクウォレットとは何ですか? 3,000 万人を超えるユーザーを抱える MetaMask Little Fox ウォレットは、現在最も人気のある暗号通貨ウォレットの 1 つです。無料で使用でき、拡張機能としてネットワーク上にインストールできます。

golang 関数で新しい関数を動的に作成するためのヒント golang 関数で新しい関数を動的に作成するためのヒント Apr 25, 2024 pm 02:39 PM

Go 言語は、クロージャとリフレクションという 2 つの動的関数作成テクノロジを提供します。クロージャを使用すると、クロージャ スコープ内の変数にアクセスでき、リフレクションでは FuncOf 関数を使用して新しい関数を作成できます。これらのテクノロジーは、HTTP ルーターのカスタマイズ、高度にカスタマイズ可能なシステムの実装、プラグイン可能なコンポーネントの構築に役立ちます。

携帯電話の画面を保護する携帯電話のスクリーンプロテクターの選び方 (携帯電話のスクリーンプロテクターを購入する際のいくつかの重要なポイントとヒント) 携帯電話の画面を保護する携帯電話のスクリーンプロテクターの選び方 (携帯電話のスクリーンプロテクターを購入する際のいくつかの重要なポイントとヒント) May 07, 2024 pm 05:55 PM

スマートフォンの普及に伴い、携帯フィルムは欠かせないアクセサリーの一つとなりました。耐用年数を延ばすには、携帯電話の画面を保護する適切な携帯電話フィルムを選択してください。この記事では、読者が自分に最適な携帯電話フィルムを選択できるように、携帯電話フィルムを購入する際のいくつかのポイントとテクニックを紹介します。携帯電話フィルムの素材と種類を理解する:PET フィルム、TPU など。 携帯電話フィルムは強化ガラスを含むさまざまな素材でできています。 PETフィルムは比較的柔らかく、強化ガラスフィルムは耐傷性に優れ、TPUは耐衝撃性能に優れています。選択する際は、個人の好みやニーズに基づいて決定できます。画面の保護の程度を考慮してください。携帯電話のフィルムの種類によって、画面の保護の程度も異なります。 PETフィルムは主に傷防止の役割を果たしますが、強化ガラスフィルムは落下耐性に優れています。より良いものを選ぶことができます

C++ 関数の命名におけるパラメーターの順序に関する考慮事項 C++ 関数の命名におけるパラメーターの順序に関する考慮事項 Apr 24, 2024 pm 04:21 PM

C++ 関数の名前付けでは、読みやすさを向上させ、エラーを減らし、リファクタリングを容易にするために、パラメーターの順序を考慮することが重要です。一般的なパラメータの順序規則には、アクション-オブジェクト、オブジェクト-アクション、意味論的な意味、および標準ライブラリへの準拠が含まれます。最適な順序は、関数の目的、パラメーターの種類、潜在的な混乱、および言語規約によって異なります。

Java で効率的で保守しやすい関数を記述するにはどうすればよいでしょうか? Java で効率的で保守しやすい関数を記述するにはどうすればよいでしょうか? Apr 24, 2024 am 11:33 AM

効率的で保守しやすい Java 関数を作成するための鍵は、シンプルに保つことです。意味のある名前を付けてください。特殊な状況に対処します。適切な可視性を使用してください。

See all articles