ホームページ バックエンド開発 PHPチュートリアル セクション 8 - アクセス方法_PHP チュートリアル

セクション 8 - アクセス方法_PHP チュートリアル

Jul 21, 2016 pm 04:01 PM
方法 アクセス

/*
+---------------------------------------------- -- ----------------------------------+
| = この記事は Haohappy<> ; = 章のクラスとオブジェクトのメモ
| = 不要なトラブルを避けるため、転載はご遠慮ください
| PHP 愛好家は一緒に進歩しましょう
| = PHP5 Research Center: http://blog.csdn.net/haohappy2004
+---------------------- -------------------------------------------------- -- ---+
*/
セクション 8 -- アクセスメソッド
PHP5 のアクセスメソッドでは、クラスメンバーへのアクセスを制限できます。これは PHP5 の新機能ですが、多くのオブジェクト指向言語にすでに存在しています。アクセス メソッドを理解することによってのみ、信頼性の高いオブジェクト指向アプリケーションを開発し、再利用可能なオブジェクト指向クラス ライブラリを構築できます。
C++ や Java と同様、PHP にはクラスのアクセス メソッドとして、public、private、および protected の 3 つのアクセス メソッドがあります。 member は、アクセス メソッドを指定しない場合、デフォルトのアクセス メソッドは public です。また、静的メンバーのアクセス メソッドを指定し、そのアクセス メソッドを static キーワードの前に置くこともできます (public static など)。
パブリック メンバーには制限なくアクセスできます。クラス外のコードは、スクリプト内のどこからでもパブリック メソッドを呼び出すことができます。これにより、オブジェクトはすべてパブリックであるように感じられます。適切に構造化された配列と同様に、プライベート (プライベート) メンバーはクラス内でのみ表示されます。プライベート プロパティの値を、それが配置されているクラス メソッドの外で変更したり読み取ったりすることはできません。同様に、同じクラス内のメソッドのみを呼び出すことができます。プライベート メソッドは、親クラスのプライベート メンバーにアクセスできません。
例 6.8、equals メソッドは 2 つのウィジェットを比較します。同じクラスのオブジェクトですが、この例では各オブジェクト インスタンスが一意の ID を持っています。equals メソッドが別のオブジェクトにどのようにアクセスするかに注意してください。Java と C の両方でこのようなことが可能です。
リスト 6.8 プライベートメンバー



コードをコピーします

コードは次のとおりです:
class ウィジェット
{
private $name;  
プライベート $価格;  
プライベート $id;  
public function __construct($name, $price)
{
$this->name = $name;  
$this->price = floatval($price);  
$this->id = uniqid();  
}
//2つのウィジェットが同じであるかどうかを確認します 检查两个ウィジェットが同じかどうかを確認します
public equals($widget)
{
return(($this->name == $widget->name)AND
( $this->価格 == $widget->価格));  
}
}
$w1 = 新しい ウィジェット('Cog', 5.00);  
$w2 = 新しい ウィジェット('Cog', 5.00);  
$w3 = 新しい ウィジェット('ギア', 7.00);  
//TRUE
if($w1->equals($w2))
{
print("w1 と w2 は 同じ
n");  
}
//FALSE
if($w1->equals($w3))
{
print("w1 と w3 は 同じ
n");  
}
//FALSE, == 比較に ID が含まれます
if($w1 == $w2) //不等, ID が異なるため
{
print("w1 と w2 は 同じです
;n");  
}
?>  
オブジェクト指向プログラミングに慣れていない人は、プライベート メンバーの目的が何なのか疑問に思うかもしれません。この章の冒頭で説明した、プライベート メンバーはデータのカプセル化に役立ちます。クラス内に隠されており、クラス外のコードからはアクセスできません。また、データ構造外のコードが内部プロパティに直接アクセスできない場合でも、暗黙的な依存関係は存在しません。解決策は、パブリック メソッドのペアを使用することです。1 つは get (プロパティの値を取得)、もう 1 つは set (プロパティの値を設定) です。コンストラクターはプロパティの初期値も受け入れます。これにより、限定された適切なインターフェイスを介してメンバー間の通信が行われるようになり、メソッドに渡される値を変更する機会も提供されます。例 6.8 では、コンストラクターが価格を強制的に浮動小数点数にする方法 (floadval()) に注目してください。
保護された (保護された) メンバーは、同じクラス内のすべてのメソッドと継承されたクラス内のすべてのメソッドからアクセスできます。パブリック属性は、サブクラスが依存することを許可するため、カプセル化の精神に違反します。保護されたメソッドは作成されません。この問題については、保護されたメソッドを使用するサブクラスは、その親クラスの構造を知る必要があります。例 6.9 は、Thing の Widget サブクラスを含めて、getName という名前の保護されたメソッドを含むようになりました。ウィジェットが保護されたメソッドを呼び出そうとすると、エラーが発生します。$w1->getName() はエラーを生成します。ただし、Thing のサブクラスでは、getName メソッドはこの保護されたメソッドを呼び出すことができます。 Widget::getName メソッドは保護されています。実際の状況では、保護されたメソッドを使用するには、オブジェクトの内部構造を理解する必要があります。



コードをコピーします
コードは次のとおりです。
class ウィジェット
{
private $name;  
プライベート $価格;  
プライベート $id;  
public function __construct($name, $price)
{
$this->name = $name;  
$this->price = floatval($price);  
$this->id = uniqid();  
}
//2つのウィジェットが同じかどうかを確認します
public equals($widget)
{
return(($this->name == $ウィジェット->名前)AND
($this->価格== $ウィジェット->価格));  
}
protected function getName()
{
return($this->name);  
}
}
class Thing extends Widget
{
private $color;  
public function setColor($color)
{
$this->color = $color;  
}
public function getColor()
{
return($this->color);  
}
public function getName()
{
return(parent::getName());  
}
}
$w1 = 新しい ウィジェット('Cog', 5.00);  
$w2 = 新しい Thing('Cog', 5.00);  
$w2->setColor('Yellow');  
//TRUE (まだ!) 结果仍然真
if($w1->equals($w2))
{
print("w1 and w2 are the same
n");  
}
//print Cog 出 Cog
print($w2->getName());  
?> 

サブクラスは、親クラスのメソッドをオーバーライドすることでメソッドへのアクセス方法を変更できます。ただし、パブリック クラスのメンバーをオーバーライドする場合、そのメンバーはサブクラス内でパブリックのままでなければなりません。 protected または public になるプライベート メンバーは、現在のクラスでのみ表示されます。親クラスのプライベート メンバーと同じ名前のメンバーを宣言すると、単に現在のクラスに別のメンバーが作成されます。したがって、技術的には、プライベートをオーバーライドすることはできません。
Final キーワードは、メンバー メソッドへのアクセスを制限する別の方法です。 サブクラスは、親クラスで Final としてマークされたメソッドをオーバーライドできません。
Final キーワードは、属性には使用できません。

www.bkjia.com本当http://www.bkjia.com/PHPjc/316944.html技術記事 /* +---------------------------------------------- --- ---------------------------------+ |=この記事は、CorePHP プログラミングの ClassesandObjects の章からの Haohappy のメモです。 |=|= メイン + 個人的な翻訳...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

iOS 17: 写真にアクセスできるアプリを制御する方法 iOS 17: 写真にアクセスできるアプリを制御する方法 Sep 13, 2023 pm 09:09 PM

iOS17 では、Apple はアプリが写真に表示できるものをより詳細に制御できるようになりました。アプリごとにアプリへのアクセスを管理する方法については、この記事を読んでください。 iOS では、Apple のアプリ内フォト ピッカーを使用して、特定の写真をアプリと共有できますが、写真ライブラリの残りの部分は非公開のままです。アプリは写真ライブラリ全体へのアクセスを要求する必要があり、アプリに次のアクセスを許可するかどうかを選択できます: 制限付きアクセス – アプリは選択できる画像のみを表示できます。これは、アプリ内でいつでも行うか、[設定] に移動することで実行できます。 &gt ;プライバシーとセキュリティ&gt;写真をクリックして、選択した画像を表示します。フルアクセス - アプリで写真を表示できます

Java で JSONNode の JSON フィールド、配列、ネストされたオブジェクトにアクセスするにはどうすればよいですか? Java で JSONNode の JSON フィールド、配列、ネストされたオブジェクトにアクセスするにはどうすればよいですか? Aug 30, 2023 pm 11:05 PM

JsonNode は、JSON を JsonNode インスタンスに読み取り、JsonNode を JSON に書き込むことができる Jackson の JSON ツリー モデルです。 Jackson を使用して、ObjectMapper インスタンスを作成し、readValue() メソッドを呼び出すことで、JSON を JsonNode に読み取ることができます。 JsonNode クラスの get() メソッドを使用して、フィールド、配列、またはネストされたオブジェクトにアクセスできます。 asText() メソッドを使用して有効な文字列表現を返し、JsonNode クラスの asInt() メソッドを使用してノードの値を Javaint に変換できます。以下の例では、Json にアクセスできます。

Python を使用してさまざまなオーディオ ファイルやビデオ ファイルのメタデータにアクセスする Python を使用してさまざまなオーディオ ファイルやビデオ ファイルのメタデータにアクセスする Sep 05, 2023 am 11:41 AM

Mutagen と Python の eyeD3 モジュールを使用して、オーディオ ファイルのメタデータにアクセスできます。ビデオのメタデータには、ムービーと Python の OpenCV ライブラリを使用できます。メタデータは、オーディオ データやビデオ データなど、他のデータに関する情報を提供するデータです。オーディオ ファイルとビデオ ファイルのメタデータには、ファイル形式、ファイル解像度、ファイル サイズ、再生時間、ビットレートなどが含まれます。このメタデータにアクセスすることで、メディアをより効率的に管理し、メタデータを分析して有用な情報を取得できます。この記事では、オーディオ ファイルとビデオ ファイルのメタデータにアクセスするために Python が提供するライブラリまたはモジュールのいくつかを見ていきます。オーディオ メタデータへのアクセス オーディオ ファイル メタデータにアクセスするための一部のライブラリは、突然変異生成を使用しています。

Tomcat が war パッケージをデプロイした後にアクセスできない問題を解決する方法 Tomcat が war パッケージをデプロイした後にアクセスできない問題を解決する方法 Jan 13, 2024 pm 12:07 PM

Tomcat がデプロイ後に war パッケージに正常にアクセスできない問題を解決するには、特定のコード サンプルが必要です。広く使用されている Java Web サーバーとして、Tomcat を使用すると、開発者は独自に開発した Web アプリケーションをデプロイ用の war ファイルにパッケージ化できます。ただし、構成が正しくないことやその他の理由により、war パッケージをデプロイした後に正常にアクセスできないという問題が発生する場合があります。この記事では、このジレンマに対処する具体的なコード例をいくつか紹介します。 1. Tomcat サービスを確認する

PHP開発における外部リソースへのアクセスと呼び出しを解決する方法 PHP開発における外部リソースへのアクセスと呼び出しを解決する方法 Oct 08, 2023 am 11:01 AM

PHP 開発における外部リソースへのアクセスと呼び出しの問題を解決するには、特定のコード サンプルが必要です。PHP 開発では、API インターフェイス、サードパーティ ライブラリ、その他のサーバー リソースなどの外部リソースにアクセスして呼び出す必要がある状況によく遭遇します。 。これらの外部リソースを扱うときは、パフォーマンスと信頼性を確保しながら、安全にアクセスして呼び出す方法を考慮する必要があります。この記事では、いくつかの一般的な解決策について説明し、対応するコード例を示します。 1.curl ライブラリを使用して外部リソースを呼び出す Curl は、非常に強力なオープン ソース ライブラリです。

Windows 7でファイルを変更するときにアクセスが拒否される問題を解決する方法 Windows 7でファイルを変更するときにアクセスが拒否される問題を解決する方法 Jul 04, 2023 pm 07:01 PM

win7でファイルを変更するときにアクセスが拒否される問題を解決するにはどうすればよいですか?一部のシステム ファイルを変更する場合、操作を実行する権限がないことを示すメッセージが頻繁に表示されます。フォルダーのアクセス許可をオフにするか、管理者権限を取得できます。このようなファイルを変更する必要があるユーザーのために、次の具体的なチュートリアルを見てみましょう。 win7 でファイルを変更するときにアクセスが拒否される問題の解決策: 1. まず、対応するフォルダーを選択し、上のツールをクリックして、フォルダー オプションを選択します。 2. 「表示」タブに入ります。 3. [簡易ファイル共有を使用する] チェックボックスをオフにして確認します。 4. 次に、対応するフォルダーを右クリックし、「プロパティ」をクリックします。 5. 「セキュリティ」タブに入ります。 6. アイコンの位置を選択し、「詳細設定」をクリックします。 7

Windows 10 Home Editionで共有フォルダーにアクセスできない場合の対処方法 Windows 10 Home Editionで共有フォルダーにアクセスできない場合の対処方法 Jan 11, 2024 pm 07:36 PM

フォルダーの共有は、家庭やビジネスのネットワーク環境において非常に便利な機能で、他のユーザーと簡単にフォルダーを共有できるため、ファイルの転送や共有が容易になります。 Win10 Home Edition 共有フォルダーにアクセスできない 解決策: 解決策 1: ネットワーク接続とユーザー権限を確認する Win10 共有フォルダーを使用しようとすると、まずネットワーク接続とユーザー権限が正常かどうかを確認する必要があります。ネットワーク接続に問題がある場合、またはユーザーに共有フォルダーへのアクセス権限がない場合、アクセスできなくなる可能性があります。 1. まず、ネットワーク接続がスムーズで、コンピュータと共有フォルダが配置されているコンピュータが同じ LAN 上にあり、正常に通信できることを確認してください。 2. 次に、ユーザー権限をチェックして、現在のユーザーにファイルを共有する権限があることを確認します。

Go言語での時間処理にはどのような方法があるのでしょうか? Go言語での時間処理にはどのような方法があるのでしょうか? Jun 10, 2023 pm 09:42 PM

最新のプログラミング言語として、Go 言語は開発において重要な役割を果たします。 Go 言語には、時間処理をより便利にするための組み込みの時間関数と構造がいくつか用意されています。この記事では、Go 言語でよく使われる時間処理メソッドをいくつか紹介します。 time.Now() time.Now() 関数を使用して現在時刻を取得できます: now:=time.Now()fmt.Println(now) 出力: 2019-06-131

See all articles