PHP オブジェクト指向ガイド (5) カプセル化
9. カプセル化
カプセル化は、オブジェクト指向プログラミングの 3 つの主要な特徴の 1 つであり、オブジェクトのプロパティとサービスを
の独立した同一のユニットに結合することです。オブジェクトの内部詳細を隠すことには 2 つの意味があります。 1. オブジェクトのすべての属性とすべてのサービスを結合して、分割できない独立した単位 (つまり、オブジェクト) を形成する。 2. 情報の隠蔽。つまり、オブジェクトの内部の詳細を可能な限り隠し、外界との境界を形成し(または障壁を形成し)、外界と接続するための限られた外部インターフェイスのみを保持します。ソフトウェアにおける
カプセル化の原理の反映は、オブジェクト以外の部分がオブジェクトの内部データ
(属性) に自由にアクセスできないことを要求し、それによって外部データの「相互感染」を効果的に回避します。エラーとその原因 ソフトウェア エラーを特定できるため、トラブルシューティングやトラブルシューティングの困難さが大幅に軽減されます。
例を使用して、ある人のオブジェクトに年齢や給与などの属性があるとします。そのような個人のプライバシー属性
は、カプセル化を使用しない場合、他の人が取得できるようになります。彼らは知りたいと思っていますが、
それをカプセル化すると、あなたがそれを伝えない限り、他の人はカプセル化された属性を取得する方法がありません
別の例として。 、すべてのパソコンにはパスワードがあります。他人に自由にログインさせたくない場合は、パスワードをコピーして
コンピュータに貼り付けてください。また、人間などの物体の場合、身長や年齢などの属性は自分自身でのみ増加させることができ、他人が任意に割り当てることはできません。
private キーワードを使用してプロパティとメソッドをカプセル化します。
元のメンバー:
var $name; //宣言者の名前
var $sex; //宣言者の性別
var $age; //その人の年齢を宣言します
function run(){… … .}
カプセル化された形式に変更します:
private $name //その人の名前には private キーワードを使用します Encapsulateprivate $sex; //プライベート キーワードを使用して個人の性別をカプセル化します
private $age //プライベート キーワードを使用して個人の年齢をカプセル化します
private function run(){… … } //プライベート キーワードを使用します人の歩行方法をカプセル化する
注: メンバー属性の前に他のキーワードがある限り、元のキーワード「var」を削除する必要があります。
プライベートを通じて人間のメンバー (メンバーのプロパティとメンバーのメソッド) をカプセル化できます。パッケージ内のメンバーにはクラスの外部から
直接アクセスできません。次のコードではエラーが生成されます。
コード スニペット
コードをコピーします
コードは次のとおりです。
class Person{ //以下は person のメンバー属性ですprivate $name;その人の名前は、privateprivate $sex でカプセル化されます。 //その人の性別、privateprivate $age でカプセル化されます。 //その人の年齢、private
でカプセル化されます。//この人ができる方法speechfunction Say(){
echo "私の名前は: ".$this->name." 性別: ".$this->性別" 私の年齢: ".$this-> ;age. "
";
}
//この人が歩くことができるメソッドはプライベートにカプセル化されます
private function run(){
echo "この人は歩いています";
}
}
//人のインスタンス オブジェクトをインスタンス化します
$p1=new Person();
//プライベート属性に値を割り当てようとすると、エラーが発生します
$ p1->name="張三";
$p1->sex="男性";
$p1->age=20>//プライベート属性を出力しようとしています、結果 エラーが発生します
echo $p1->name.”
”;
echo $p1->sex.”
echo $p1->”; ;age. "
"
//プライベートメンバーメソッドを出力しようとするとエラーが発生します
は:
致命的なエラー: プライベート プロパティにアクセスできません Person::$name
致命的なエラー: プライベート プロパティ Person::$sex にアクセスできません
致命的なエラー: プライベート プロパティ Person::$age にアクセスできません
致命的エラー: プライベート プロパティ Person::$name にアクセスできません
致命的エラー: コンテキスト '' からプライベート メソッド Person::run() を呼び出します
上記の例からわかるように、プライベート メンバーには外部からアクセスできませんプライベートメンバーはこのオブジェクト
内でのみアクセスできるため、たとえば、$p1 オブジェクトがプライベート属性を共有したい場合は、say() メソッドでプライベート属性にアクセスします。 (アクセス制御は追加されません。デフォルトはパブリックで、どこからでもアクセスできます。)
コードをコピー
コードは次のとおりです。
//この人は話すことができ、自分のプライベート属性を話すことができ、ここからプライベート メソッドにアクセスすることもできます
function Say(){
echo "My name is : ".$ this->name." 性別: ".$this->sex." 私の年齢: ".$this->age."
"
//プライベート メソッドでは次のこともできます。ここからアクセスします
//$this->run() } コードをコピーします コードは次のとおりです。 class Person{ if($age<0 || $age>130) //属性に値を代入する際、不正な値が属性に設定されることを避けるためreturn; $this-> ;age=$age; } function getAge(){ // 年齢を外部から取得するための public メソッドを提供します }
メンバー メソッドsay() は public であるため、上記の
コードを変更します。
//以下は person のメンバー属性です
private $name;個人の名前、private
private $sex でカプセル化 //個人の性別は private
private $age でカプセル化 //個人の年齢は private
でカプセル化されます。コンストラクター パラメーターはプライベート属性名 $name、性別 $sex、年齢 $age に割り当てられます。
function __construct($name, $sex, $age){
//コンストラクターを通じて渡される $nameメソッドはプライベート メンバーに割り当てられます。属性 $this->name には初期値が割り当てられます。
$this->name=$name
//構築メソッドを通じて渡された $sex には、プライベート メンバー属性の初期値 $this->sex Value
$this->sex=$sex;
//コンストラクターを通じて渡された $age は、プライベート メンバー プロパティに初期値が割り当てられます。 $this->age
$this->age =$age;
}
//この人の話し方、個人的なプロパティの話し方、ここからプライベート メソッドにアクセスすることもできます。 🎜>function Say(){
echo "私の名前 名前: ".$this->name." 性別: ".$this->性別" 私の年齢: ".$this->age ."
";
}
}
//構築メソッドを通じて 3 つのオブジェクト $p1、p2、$p3 を作成し、3 つの異なる実際のパラメーターを渡します: 名前、性別、年齢
$p1=新しい人("張三","男性", 20);
$p2=新しい人("李思","女性", 30); "王五","男", 40) ;
//以下は $p1 オブジェクトの発話メソッドにアクセスします
$p1->say();
//以下は発話メソッドにアクセスします$p2 オブジェクトのメソッド
$p2->say ();
//以下は $p3 オブジェクトの発話メソッドにアクセスします
$p3->say(); 🎜>
出力結果は次のとおりです。
私の名前は: Zhang San 性別: 男性 私の年齢: 20
私の名前は: Li Si 性別: 女性 私の年齢: 30
私の名前は: Wang Wu 性別: 男性 私の年齢: 40 歳
独自のプライベート属性を呼び出します。
上記の例から、プライベート メンバーはクラス内でのみ使用でき、クラス外から直接アクセスすることはできません
が、クラス内ではアクセスできるため、場合によっては値を割り当てる必要があることがわかります。プライベート プロパティにアクセスし、クラスの外でそれらを読み出します
。つまり、クラスの外にアクセス可能なインターフェイスを提供します。上記の例では、構築メソッドは代入
の形式ですが、構築メソッドのみです。オブジェクトの作成時に値を割り当てます。すでに既存のオブジェクトがあり、この既存のオブジェクトに値を割り当てたい場合、この時点でコンストラクター メソッドも使用して値を渡すと、
新しいオブジェクトが作成されます。 、これは既存のオブジェクトではありません。したがって、外部からアクセスできるプライベート属性用のいくつかの
インターフェイスを作成する必要があります。目的は、オブジェクトが存在するときに属性の値を変更してアクセスすることです。ただし、必要なのは外部
のみであることに注意してください。これは、変更されたプロパティに対してのみ行われ、外部からアクセスされないプロパティにはこのようなインターフェイスはありません。これにより、すべての機能が完了します。オブジェクト自体は、外部の世界にできるだけ少ない操作を提供します。
クラスの外にインターフェイスを提供する場合、クラスの外にプライベート プロパティの設定メソッドと取得メソッドを提供して、プライベート
プロパティを操作できます。たとえば、
コード スニペット
コードをコピー
コードは次のとおりです:
private $age; //プライベート属性 age
function setAge($age) {
/ /外部提供 年齢を設定するためのパブリックメソッド
上記のメソッドは、メンバー属性の値を設定および取得するものです。もちろん、各属性に同じメソッドを使用して
を割り当てることもできます。値を取得してクラス外へのアクセスを完了します。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

Python は、学習の容易さと強力な機能により、初心者にとって理想的なプログラミング入門言語です。その基本は次のとおりです。 変数: データ (数値、文字列、リストなど) を保存するために使用されます。データ型: 変数内のデータの型 (整数、浮動小数点など) を定義します。演算子: 数学的な演算と比較に使用されます。制御フロー: コード実行のフロー (条件文、ループ) を制御します。

Python は、問題解決の初心者に力を与えます。ユーザーフレンドリーな構文、広範なライブラリ、変数、条件文、ループによる効率的なコード開発などの機能を備えています。データの管理からプログラム フローの制御、反復的なタスクの実行まで、Python が提供します

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

C は、初心者がシステム プログラミングを学習するのに最適な選択肢です。ヘッダー ファイル、関数、メイン関数のコンポーネントが含まれています。 「HelloWorld」を印刷できる単純な C プログラムには、標準入出力関数宣言を含むヘッダー ファイルが必要で、main 関数で printf 関数を使用して印刷します。 C プログラムは、GCC コンパイラーを使用してコンパイルして実行できます。基本をマスターしたら、データ型、関数、配列、ファイル処理などのトピックに進み、熟練した C プログラマーになることができます。
