ホームページ php教程 php手册 セクション 8 -- アクセス方法

セクション 8 -- アクセス方法

Jun 13, 2016 pm 12:37 PM
方法 アクセス

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



コードは次のとおりです。以下のように:

クラス ウィジェット
{
private $name;  
プライベート $価格;  
プライベート $id;  
public function __construct($name, $price)
{
$this->name = $name;  
$this->price = floatval($price);  
$this->id = uniqid();  
}
//2 つのウィジェットが同じであるかどうかを確認します 检查两个ウィジェットが同じであるかどうかを確認します
public function equals($widget)
{
return(($this->名前 == $widget->name)AND
($this->price == $widget->price));  
}
}
$w1 = new Widget('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 and w2同じ
n");  
}
?>  

如果你对面向対象编程不熟徹底、你可能想知道用私用的目的是何。 パッケージと付属品の組み合わせについては、本章の内容を参照してください。 プライベート成员はデータの封入に役立ちます。 ある種の外部のコードに接触することなく、ある種の内部を通過する可能性があります。 同時に、松散布を実現するための結合にも役立ちます。 データ構造に追加された暗号が内部プロパティに直接アクセスできない場合、危険な関係は生じません。
もちろん、プライベートプロパティの大部分は外部コードによって共有される可能性があります。 解決方法は public メソッドを使用し、1 つは get(プロパティの値を取得)、もう 1 つは set(プロパティの値を設定) です。 構造関数数もプロパティの初期値を受け取ります。 これにより、狭い、十分に限定されたインターフェイスを介した交流が可能になります。 これにより、伝達方法を変更するためのミーティングも提供されます。 例6.8では、构造関数数がどのように価格をfloat数(floadval())にするかに注意してください。
保護された (保護された) ものは、同じ種類のすべての方法および継承されている種類のすべての方法でアクセスできます。 パブリック プロパティには、子クラスが特定のプロパティに依存しているため、保護されたメソッドがこの面での責任を負いません。保護されたメソッドを使用する子クラスには、親クラスの構造が必要です。才行。
例 6.9 による例 6.8 の変更により、ウィジェットの子クラスの Thing が含まれています。 注意 Widget には、1 つの呼び出し作getName の保護されたメソッドがあります。 ウィジェットのサンプル図が保護されたメソッドを使用した場合、次のような問題が発生します: $w1->getName() によって問題が発生します。 ただし、Thing クラスの getName メソッドでは、この保護されたメソッドを使用できます。当然、Widget::getName メソッドが保護されている場合、この例は完全に取得されます。 実際の場合、保護されたメソッドを使用するには、オブジェクトの内部構造の理解が必要です。
リスト 6.9 保護されたメンバー

复制代代码如下:

クラス ウィジェット
{
private $name;  
プライベート $価格;  
プライベート $id;  
public function __construct($name, $price)
{
$this->name = $name;  
$this->price = floatval($price);  
$this->id = uniqid();  
}
//2 つのウィジェットが同じであるかどうかを確認します
public function equals($widget)
{
return(($this->name == $widget->名前)AND
($this->price == $widget->price));  
}
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 = new Widget('Cog', 5.00);  
$w2 = 新しい Thing('Cog', 5.00);  
$w2->setColor('Yellow');  
//TRUE (まだ!) 结果仍然真
if($w1->equals($w2))
{
print("w1 と w2 は 同じ
n ");  
}
//print Cog 出 Cog
print($w2->getName());  
?> 


1 つの子クラスは、父クラスのメソッドを上書きすることによってメソッドの変更方法を変更する可能性があります。 如果你被写了一个公開类成员、他子类中必ず公開を維持する。 保護されたものを上書きした場合は、保護されたままにすることも、公開に変更することもできます。 一艪父类的私的成员同名成员讀单地在当前类中に建立一個与原来別成员。 したがって、技術上ではプライベートを上書きすることはできません。 
最後の关字は、方法を制限するもう 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)

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