ホームページ php教程 php手册 セクション 9 -- バインディング

セクション 9 -- バインディング

Jun 13, 2016 pm 12:36 PM
バインディング

*
---------------------------------------------- ---- ----------------------------------
= この記事は Haohappy によって読まれています< <コア PHP プログラミング>
| = 章のクラスとオブジェクトのメモ
= 不要なトラブルを避けるため、転載しないでください。 🎜>| = ようこそ、私を批判して修正してください。私はすべての PHP 愛好家と一緒に進歩することを願っています。
| = PHP5 研究センター: http://blog.csdn.net/haohappy2004
------ ---------------------------------------------------- --------- ----------------
*/
セクション 9 - バインディング
アクセスを制限することに加えて、アクセス方法もサブクラスがどのメソッドを呼び出すか、またはサブクラスがどの属性にアクセスするかを決定します。関数呼び出しと関数自体の関係、およびメンバー アクセスと変数メモリ アドレスの関係は、バインディングと呼ばれます。
の 2 つがあります。コンピュータ言語における主なバインディング方法 - 静的バインディングと動的バインディングが定義されています。静的バインディングは、プログラムの実行前にデータ構造との間で発生するため、実行時情報を使用できません。関数の本体、または変数とメモリ。PHP は動的言語であるため、静的バインディングをシミュレートできます。
動的バインディングは、実行時に生成されるアクセス要求に対してのみ使用されます。オブジェクト指向コードでは、動的バインディングは、どのメソッドが呼び出されるか、またはどのプロパティがアクセスされるかが、アクセス スコープではなくクラス自体に基づいて決定されることを意味します。関数内の PHP アクションの以前のバージョンと同様に、動的バインディングを使用します。これは、メソッドがサブクラス内でオーバーライドされ、サブクラスのインスタンスであるクラス メンバーにアクセスする場合、(アクセスするのではなく) サブクラスのメンバーにアクセスすることを意味します。
例 6.10 を参照してください。このコードは、PHP が getSalutation を呼び出すと、Father If salutation の挨拶を上書きするため、「Hey! I am Son」を出力します。はい、PHP は、サブクラスでアクセス メソッドが protected から public に弱化された場合でも、メソッドをオーバーライドする操作は非常に似ています。アクセスメソッドを使用する原則に従って、アクセスメソッドを public から protected に変更することはできません。
リスト 6.10 動的バインディング



コードをコピー

コードは次のとおりです: class Father {

protected $salutation = "こんにちは! "; // 挨拶

public function getSalutation()
{
print("$this->salutationn")
$this->identify(); > > protected functionidentify()
{ print("I am Father.
n");
}
};
クラス Son は Father
{
を拡張します$salutation = "Hey!"; // 親クラスの protected $salutation は上書きされます
protected functionidentify() // 親クラスの protectedidentify() は上書きされます
{
print ( "I息子です。
n"); 私は息子です。
?>
//注意: getSalutation() はサブクラスでオーバーライドされませんが、実際にはこのクラス
に $salutation() と Identity() が存在します。// のインスタンスの getSalutation() と同じです。 Son サブクラス ) メソッドは動的にバインドされているため、Son インスタンスの getSalutation() メソッドを呼び出すと、
//
プライベート メンバーは、パブリック メンバーや保護されたメンバーとは異なり、サブクラスがオーバーライドしている場合でも、静的バインディングをシミュレートします。スクリプトは this->salutation を現在のクラス Father にバインドします。
リスト 6.11 バインディングとプライベート メンバー

コードをコピーします コードは次のとおりです。

class Father
{
private $salutation = "こんにちは!"; function getSalutation()
{
print("$this->salutationn");
$this->identify()
} }
プライベート関数identify()
("私は父です。
n");
} }
}
クラス 息子は父を拡張しますプライベート関数identify() $obj- >getSalutation(); /出力 こんにちは。 ! I am Father.
?>
動的バインディングの利点は、親クラスのインターフェースと機能を維持しながら、継承されたクラスがその動作を変更できることです。動的バインディングを使用すると、deleteUser で呼び出される isAuthorized のバージョンは、通常のユーザーの場合、PHP の呼び出しで User::isAuthorized が AuthorizedUser の場合に FALSE を返します。 AuthorizedUser::isAuthorized により、deleteUser がスムーズに実行されます。
//haohappy 注: 一言で説明すると、これは、親の両方に存在するオブジェクトの型、メソッド、および属性のバインディングです。クラスとサブクラス メソッドを呼び出すとき、または属性にアクセスするとき、最初にインスタンスがどのオブジェクト型に属しているかを判断し、次に対応するクラスのメソッドと属性を呼び出します。
リスト 6.12 動的バインディングの利点



コードをコピーします

コードは次のとおりです:

class User
{
protected function isAuthorized() //認証済みユーザーかどうか
return(FALSE); 🎜>
public function getName() // 名前を取得 {
return($this->name)
} ユーザー
{
; return(FALSE);
}
//ユーザーを削除します
print("ユーザーが削除されました。
n");
}
}
class AuthorizedUser extends User // 認証されたユーザー
{
protected function isAuthorized() // isAuthorized をオーバーライドします()
{
return(TRUE);
}
} $user = new User;
$admin = new AuthorizedUser ;
$user- >deleteUser("Zeev");
//authorized
$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)

2 つの WeChat アカウントを同じ銀行カードにバインドできますか? 2 つの WeChat アカウントを同じ銀行カードにバインドできますか? Aug 25, 2023 pm 03:13 PM

2 つの WeChat アカウントを同じ銀行カードにバインドすることはできません。銀行カードを WeChat アカウントにバインドします: 1. WeChat アプリケーションを開き、[自分] オプションをクリックして、[支払う] オプションを選択します; 2. [銀行カードを追加] オプションを選択し、プロンプトに従って銀行カード情報を入力します。 ; 3. 銀行カードが正常にバインドされると、ユーザーはその銀行カードを使用して WeChat で支払いや送金を行うことができます。

Vue で編集可能なテーブルを実装する方法 Vue で編集可能なテーブルを実装する方法 Nov 08, 2023 pm 12:51 PM

テーブルは、多くの Web アプリケーションにおいて不可欠なコンポーネントです。通常、テーブルには大量のデータが含まれるため、ユーザー エクスペリエンスを向上させるためにテーブルにはいくつかの特定の機能が必要です。重要な機能の 1 つは編集可能性です。この記事では、Vue.js を使用して編集可能なテーブルを実装する方法を検討し、具体的なコード例を示します。ステップ 1: データを準備する まず、テーブルのデータを準備する必要があります。 JSON オブジェクトを使用してテーブルのデータを保存し、それを Vue インスタンスの data プロパティに保存できます。この場合

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 つです。無料で使用でき、拡張機能としてネットワーク上にインストールできます。

小紅書にサブアカウントをバインドするにはどうすればよいですか?アカウントが正常かどうかはどのように確認されますか? 小紅書にサブアカウントをバインドするにはどうすればよいですか?アカウントが正常かどうかはどのように確認されますか? Mar 21, 2024 pm 10:11 PM

今日の情報爆発の時代において、個人のブランドや企業イメージの構築はますます重要になっています。中国を代表するファッションライフ共有プラットフォームとして、Xiaohongshu は多くのユーザーの注目と参加を集めています。影響力を拡大し、コンテンツ配信の効率化を図りたいユーザーにとって、サブアカウントの紐付けは有効な手段となっています。では、Xiaohongshu はどのようにしてサブアカウントをバインドするのでしょうか?アカウントが正常かどうかを確認するにはどうすればよいですか?この記事では、これらの質問に詳しく答えます。 1.Xiaohongshu でサブアカウントをバインドするにはどうすればよいですか? 1. メインアカウントにログインします。まず、Xiaohongshu メインアカウントにログインする必要があります。 2. 設定メニューを開きます。右上隅の「Me」をクリックし、「設定」を選択します。 3. アカウント管理に入る: 設定メニューで、「アカウント管理」または「アカウントアシスタント」オプションを見つけて、クリックします。

Toutiao で Douyin をバインドする手順と方法 Toutiao で Douyin をバインドする手順と方法 Mar 22, 2024 pm 05:56 PM

1. Toutiaoを開きます。 2. 右下隅の「My」をクリックします。 3. [システム設定]をクリックします。 4. [アカウントとプライバシーの設定]をクリックします。 5. [Douyin]の右側のボタンをクリックしてDouyinをバインドします。

Cainiao アプリを Pinduoduo にバインドするにはどうすればよいですか? Cainiao Wrap を Pinduoduo プラットフォームに追加するにはどうすればよいですか? Cainiao アプリを Pinduoduo にバインドするにはどうすればよいですか? Cainiao Wrap を Pinduoduo プラットフォームに追加するにはどうすればよいですか? Mar 19, 2024 pm 02:30 PM

Cainiao アプリは、さまざまな物流情報を提供できるプラットフォームです。ここの機能は非常に強力で使いやすいです。物流関連の問題があれば、ここで解決できます。とにかく、それはあなたに 1 つをもたらすことができます-stopサービスはすべてを時間内に解決できます。速達の確認、速達の受け取り、速達の発送などはすべて問題なく行われます。さまざまなプラットフォームと連携しており、すべての情報を照会できます。しかし、場合によっては、 Pinduoduo で購入した商品は物流情報を表示できない場合がありますが、実際には、これを実現するには手動で Pinduoduo をバインドする必要があります。具体的な方法は以下に整理されており、誰でも見ることができます。 Cainiao を Pinduoduo アカウントにバインドする方法: 1. Cainiao APP を開き、メインページに移動します。

Cainiao APP を Pinduoduo にバインドする方法 Cainiao APP を Pinduoduo にバインドする方法 Cainiao APP を Pinduoduo にバインドする方法 Cainiao APP を Pinduoduo にバインドする方法 Mar 19, 2024 pm 05:16 PM

Cainiao Wrap を使用するときに Pinduoduo をバインドする方法をご存知ですか? Cainiao Wrap アプリの公式バージョンでは、このプラットフォーム上の Pinduoduo の物流情報の一部が自動的に同期されません。注文番号をコピーするか、携帯電話で確認するだけです。速達情報がある場合。もちろん、これらはすべて手動で完了する必要があります。さらに詳しく知りたい場合は、エディターに来て確認してください。 Cainiao APP を Pinduoduo にバインドする方法 1. Cainiao APP を開き、メイン ページの左上隅にある「パッケージ ガイド」をクリックします。 2. インターフェイスには、多くのショッピング サイトがあり、アカウントをバインドできます。 3. クリックして他の電子商取引プラットフォームをインポートします。 4. ユーザー認証: Pinduoduo をクリックしてインターフェイスに移動します。

Xiaomi 車アプリを充電パイルデバイスにバインドする方法 Xiaomi 車アプリを充電パイルデバイスにバインドする方法 Apr 01, 2024 pm 06:52 PM

Xiaomi が発売した最新の Mi su7 モデルカーは、さまざまなホット検索リストを独占しています。車を購入したいと考えている多くのユーザーが、購入のために Xiaomi su7 モデルカーを選択しました。では、Xiaomi 車アプリを使用して、選択後に車をバインドするにはどうすればよいですか?充電に家庭用充電パイルを使用する場合は、このチュートリアル ガイドで詳しく説明しますので、お役に立てれば幸いです。まず、Xiaomi モバイル アプリを開き、右下隅にある [My] ボタンをクリックすると、My インターフェイスで、ホーム充電パイルのオプションが表示され、充電パイルをバインドするページに入った後、スキャン コードをクリックします下のボタンをクリックして、充電パイルの QR コードをスキャンします。QR コードを使用して、充電パイルをアプリにバインドできます。

See all articles