ホームページ > php教程 > php手册 > PHP 学習メモ: PHP の 3 つの主要なオブジェクト指向機能の 1 つの適用 [カプセル化]

PHP 学習メモ: PHP の 3 つの主要なオブジェクト指向機能の 1 つの適用 [カプセル化]

WBOY
リリース: 2016-06-21 08:54:03
オリジナル
1451 人が閲覧しました

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


/*
* カプセル化: オブジェクト指向の 3 つの大きな特徴の 1 つ
*
* 1. のメンバー (プロパティ、メソッド) を結合することです。オブジェクトを独立した同じユニットに分割し、オブジェクトの内部詳細を可能な限り隠します
* アクセス許可修飾子 public protected private
* private: private、このキーワードで変更されたメンバーは、オブジェクト ($ this アクセスのみ)
*
* 属性はカプセル化できます:
* 変数を複数のメソッドで使用する必要がある限り、この変数をメンバー属性として宣言します。
*
* メンバー属性は、このオブジェクトのグローバル変数と同等です。
*
* メンバー属性値の変更はメソッド内で使用されます。実際にメソッドの実行動作を変更します。つまり、オブジェクトの関数を変更するだけです。
*
* member 属性の値が異常であれば、メソッドによって実行される関数も異常です。
*
* 機能: オブジェクト外で変更したり読み込んだりする必要はありません。
* の値 1.
* をカプセル化し、パブリックメソッドを提供します (オブジェクトメンバーの割り当てと値の取得を制御できます)
*
*
* メソッドも使用可能 カプセル化
*
* 機能:
* 1. 内部でのみ使用できるようにプライベート変更を使用します
*
* 2. クラスには 100 のメソッドがあり、95 はカプセル化されています (他の 5 つのサービスを提供するメソッド)。使用できるメソッドは 5 つだけです
*
* 100 のメンバー属性、すべて値の取得を許可し、値を変更することはできません。または、値の変更のみ可能ですが、値を取得できません // この場合、次のように使用する方が便利です。メソッド
* カプセル化に関するマジックメソッド:
*
* __set();//[private] メンバーの属性値を直接設定する際に自動的に呼び出されるメソッドです
* __get() ;//[private]メンバーの属性値を直接取得する際に自動的に呼び出されるメソッドです
* __isset();//isset()を直接使用してプライベート属性が取得されているかどうかを確認する際に自動的に呼び出されるメソッドですオブジェクトが存在する場合、このメソッドを自動的に呼び出します
* __unset();//このメソッドは、オブジェクト内のプライベート プロパティを削除するために unset() を直接使用するときに自動的に呼び出されます
*
*
*
*
*
*
*
*/
class Person{
//x はメンバー属性をカプセル化し、オブジェクトの外部で変更する必要はありません
private $名前;
プライベート $年齢;
プライベート __unset($proName){
unset($this->$proName);
オブジェクト内のプライベート属性が存在するかどうかを直接確認し、自動的にこのメソッドを呼び出します
//__isset($proName) の使用、$proName は属性名を表します
プライベート関数 __isset($proName){
return isset ($this->$proName);/ /isset() は、
}
function __construct($name,$age,$sex){
$this->>name=$name; かどうかを返します。
$this->age= $age;
$this->sex=$sex;
}
//プライベートメンバー属性を取得する場合、このメソッドは自動的に
private と呼ばれます。 function __get($proName)
{
//取得した値を制御します
if($proName=="age"){
if($this-age>40)
return $ this->age-10;
}
return $this->$proName;
}
//プライベート メンバー プロパティを設定すると、このメソッドは自動的に
プライベート関数 __set と呼ばれます。 ($proName,$proValue) {
//$proName はメンバー属性名を表し、$proValue はメンバー属性値を表します
//設定範囲を制御します
if($proName=="age") {
if($proValue > 100 $proValuereturn;
}
$this->$proName=$proValue
}
// public を指定します。メンバーのプロパティの値を設定するメソッド
function setAge($age){
//年齢範囲を制御し、セキュリティを強化します
if($age > 100 $age return ;
$this->age= $age;
}
//メンバー属性の値を取得するためのパブリック メソッドを提供します
function getAge(){
// age
if($this->age return $this->age;
else if($this->agereturn $this-> ;age-5;
else if($ this->agereturn $this->age; >パブリック メソッドを提供する}
function Say( ){
echo "私の名前: {$this->name}、私の年齢: {$this->age}、私の姓: {$this ->sex}
";
//カプセル化された run() メソッドにアクセスします
$this-run();
}
プライベート関数 run(){
echo '111111111111
'
}
function Eat(){
}
//破壊メソッド
function __destruct(){
}
}
$p1 =新しい人("張さん" ,25,"男性");
$p2=新しい人;
$p3=新しい人
//$p1->年齢=-50;//年齢的には外部から自由にアクセスできるため、会員属性の薬のカプセル化は安全です。
$p1->setAge(30);// メソッドを通じてメンバー属性値を設定します
$p1->getAge();// メソッドを通じてメンバー属性値を取得します
//マジック メソッド __set($proName,$proValue) __get($proName) を追加すると、メンバー プロパティ
$p1->say();//
$p1-> を呼び出すことができます。 run();//プライベートメソッドを直接呼び出すことはできません
//$p1の名前を削除します
unset($p1->name)
//名前が存在するかどうかを確認します
if (isset($p1->name)){
echo "exists
"
}else{
;echo "そのようなメンバーはいません
";
}
?>


作成者: コードネーム Aurora
出典: http://zizhuyuan.cnblogs.com



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート