コードをコピーします コードは次のとおりです:
/*
* カプセル化: オブジェクト指向の 3 つの主要な特徴の 1 つ
*
* 1. メンバーを結合することですオブジェクトの(プロパティ、メソッド)を独立した同一の単位に分割し、オブジェクトの内部詳細を可能な限り隠します
* アクセス許可修飾子 public protected private
* private: private、このキーワードで変更されたメンバーのみアクセス可能オブジェクト内 ( $this でのみアクセス)
*
* 属性はカプセル化できます:
* 変数を複数のメソッドで使用する必要がある限り、この変数をメンバー属性として宣言し、すべてのメソッドで直接使用できます。このオブジェクト内
*
* メンバー属性、同等 このオブジェクト内のグローバル変数
*
* メンバー属性値の変更は、実際にはメソッドの実行動作を変更します。つまり、オブジェクトの関数を変更します
*
* member 属性の値が Normal でない場合、メソッドによって実行される関数は異常です
*
* 機能: オブジェクトの外で値を変更したり読み込んだりする必要はありません
* 1.
* をカプセル化し、パブリック メソッドを提供します (メソッドを通じてオブジェクトのメンバー属性を割り当て、値を制御できます)
*
*
* メソッドもカプセル化できます
*
* 機能:
* 1. プライベートを使用します内部でのみ使用できるように変更します
*
* 2. クラスには 100 のメソッドがあり、95 をカプセル化しています (他の 5 つにサービスを提供するメソッド)、使用できるメソッドは 5 つだけです
*
* 100 のメンバー属性、すべてが許可されています取得する値があり、値は変更できない、または、値は変更できるが、値は取得できない/ /この場合、次のメソッドを使用する方が便利です
* カプセル化に関するマジックメソッド:
*
* __set();//[private]メンバーの属性値を直接設定する際に自動的に呼び出されるメソッドです
* __get() ;//自動的に呼び出されるメソッドです[private] メンバー属性値を直接取得するときに呼び出されます
* __isset();//isset() を直接使用してオブジェクト内のプライベート属性が存在するかどうかを確認するときに、このメソッドが自動的に呼び出されます
* __unset( );// unset() を使用してオブジェクト内のプライベート プロパティを直接削除するときに自動的に呼び出されるメソッドです
*
*
*
*
*
*
*
*/
class Person{
//x はメンバー属性をカプセル化します。必要ありませんオブジェクトの外側で変更するには
private $name;
private $sex;
unset($this->$proName)
// オブジェクトを直接表示メソッドは、プライベート属性が
に存在する場合に自動的に呼び出されます。//__isset($proName) の使用法、$proName は属性名を表します
private function __isset($proName){
return isset($this->$proName);/ /isset() は存在するかどうかを返します
}
function __construct($name,$age,$sex){
$this->name=$name;
$this- > ;sex=$sex;
}
//プライベートメンバー属性を取得する場合、このメソッドは自動的に呼び出されます
private function __get($proName)
{
//取得された値を制御します
if($pr
if($ this -age>40)
return $this->age-10;
}
return $this->$proName;
//プライベート メンバー プロパティを設定すると、このメソッドが自動的に呼び出されます
private function __set ($ proName,$proValue){
//$proNameはメンバー属性名を表し、$proValueはメンバー属性値を表します
//設定範囲を制御します
if($pr
if($proValue > 100 || $proValuereturn;
}
$this->$pr
}
//メンバー属性の値を設定するためのパブリックメソッドを提供する
function setAge($age){
//年齢範囲を制御し、セキュリティを強化する
if( $age > 100 || $age $this->age=$age;
//メンバー属性の値を取得するためのメソッドを提供します
/ /制御取得年齢範囲
if($this->age return $this->agereturn $this->age-5 ;
else if($this->agereturn $this->age;
return $this->age-15;
function Say(){
echo "I 私の名前: {$this->name}、私の年齢: {$this->age}、私の姓: {$this->sex}
"; run() メソッド
$this-run();
}
プライベート関数 run(){
echo '111111111111
'
}
function Eat(){
}
//破壊メソッド
function __destruct( ){
}
}
$p1=新しい人("張さん",25,"男性");
$p2=新しい人
//$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< ; br>";
}else{
echo "そのようなメンバーはいません
";
}
?>
著者: コードネーム Aurora
出典: http://zizhuyuan.cnblogs.com
以上、Photoshop の学習体験、PHP 学習メモ、PHP の 3 大オブジェクト指向機能の 1 つである [カプセル化] の応用について紹介しました。PHP に興味のある友人の参考になれば幸いです。チュートリアル。