//private キーワードを使用してプロパティとメソッドをカプセル化します:
//オリジナルメンバー:
var $name //宣言者の名前
var $sex; //その人の性別を宣言します
var $age //宣言者の年齢
関数 run(){…….}
//カプセル化された形式に変更:
private $name //private キーワードを使用して人の名前をカプセル化します
private $sex; //private キーワードを使用して人の性別をカプセル化します
private $age //private キーワードを使用して人の年齢をカプセル化します
private function run(){……} //private キーワードを使用して人の歩行方法をカプセル化します
//private キーワードを使用してプロパティとメソッドをカプセル化します:
//オリジナルメンバー:
var $name; //宣言者の名前
var $sex //人の性別を宣言します
var $age //宣言者の年齢
関数 run(){…….}
//カプセル化された形式に変更:
private $name //private キーワードを使用して人の名前をカプセル化します
private $sex; //private キーワードを使用して人の性別をカプセル化します
private $age //private キーワードを使用して人の年齢をカプセル化します
private function run(){……} //private キーワードを使用して人の歩行メソッドをカプセル化します。 注: メンバー属性の前に他のキーワードがある限り、元のキーワード「var」を削除する必要があります。 use private 人間のメンバー (メンバー プロパティとメンバー メソッド) をカプセル化します。カプセル化内のメンバーにはクラスの外部から直接アクセスすることはできません。次のコードではエラーが生成されます。
クラスの人
{
//以下は人々のメンバー属性です
Private $name; //その人の名前は private でカプセル化されます。
Private $sex; //人の性別は private によってカプセル化されます。
Private $age; //人の年齢は private によってカプセル化されます。
//この人はどうやって話せますか
関数say()
{
echo "私の名前: ".$this->name." 性別: ".$this->性別" 私の年齢: ".$this->age."
//この人の歩き方はプライベートにカプセル化されています
プライベート関数 run()
{
エコー「この人は歩いています」
}
}
//人のインスタンスオブジェクトをインスタンス化します
$p1=新しい人 ;
//プライベート属性に値を代入しようとするとエラーになります
$p1->name="張三";
$p1->性別="男性";
$p1-> 年齢 = 20;
//プライベート属性を出力しようとすると、エラーが発生します
echo $p1->name."";
エコー $p1->セックス。"";
echo $p1->年齢。""
//プライベートメンバーメソッドを出力しようとすると、エラーが発生します
$p1->run();
出力結果は次のようになります:
致命的なエラー: プライベート プロパティ person::$name にアクセスできません
致命的なエラー: プライベート プロパティ person::$sex にアクセスできません
致命的なエラー: プライベート プロパティ person::$age にアクセスできません
致命的なエラー: プライベート プロパティ person::$name にアクセスできません
致命的なエラー: コンテキスト '' からプライベート メソッド Person::run() を呼び出します
クラスの人
{
//人のメンバー属性は以下の通りです
Private $name; //その人の名前は private でカプセル化されます。
Private $sex; //人の性別は private によってカプセル化されます
Private $age; //人の年齢は private によってカプセル化されます
//この人はどのように話すことができるのか
関数say()
{
echo "私の名前は: ".$this->name." 性別: ".$this->性別" 私の年齢: ".$this->age."";
}
//この人の歩き方はプライベートにカプセル化されています
プライベート関数 run()
{
echo "この人は歩いています";
}
}
//人のインスタンスオブジェクトをインスタンス化します
$p1=新しい人();
//プライベート属性に値を割り当てようとするとエラーが発生します
$p1->name="張三";
$p1->sex="男性";
$p1->年齢=20;
//プライベート属性を出力しようとするとエラーが発生します
echo $p1->name."";
echo $p1->sex."";
echo $p1->age.""
//プライベートメンバーメソッドを出力しようとするとエラーが発生します
$p1->run();
出力結果は次のとおりです:
致命的なエラー: プライベート プロパティ Person::$name にアクセスできません
致命的なエラー: プライベート プロパティ person::$sex にアクセスできません
致命的なエラー: プライベート プロパティ Person::$age にアクセスできません
致命的なエラー: プライベート プロパティ Person::$name にアクセスできません
致命的なエラー: コンテキスト '' からプライベート メソッド Person::run() を呼び出します
上記の例からわかるように、プライベート メンバーはこのオブジェクト内でのみアクセスできるため、外部からアクセスすることはできません。たとえば、オブジェクト $p1 がそのプライベート属性を共有したい場合、say() でこのメソッドがアクセスします。私有地、それは問題ありません。 (アクセス制御は追加されていません。デフォルトはパブリックで、どこからでもアクセスできます)
//この人の話し方、自分のプライベート属性を話す方法、そしてここからプライベート メソッドにアクセスすることもできます
コードは次のとおりです |
コードをコピー |
関数say()
{
echo "私の名前は: ".$this->name" 性別: ".$this->性別" 私の年齢: ".$this->age"
";
//ここからプライベート メソッドにもアクセスできます
//$this->run();
}
//この人が話すことができるメソッド、彼自身のプライベートな属性を話す、そしてプライベートなメソッドにもここからアクセスできます
関数say()
{
echo "私の名前は: ".$this->name" 性別: ".$this->性別" 私の年齢: ".$this->age"
";
//ここからプライベート メソッドにアクセスすることもできます
//$this->run();
}メンバーメソッドsay()はパブリックなので、クラスの外でsay()メソッドを呼び出しても問題ありません 。
クラスの人
{
//以下は人々のメンバー属性です
Private $name; //その人の名前は private でカプセル化されます。
Private $sex; //人の性別は private によってカプセル化されます。
Private $age; //人の年齢は private によってカプセル化されます。
//プライベート属性の名前 $name、性別 $sex、年齢 $age に値を割り当てるコンストラクター パラメーターを定義します
関数 __construct($name, $sex, $age)
{
//コンストラクターを通じて渡された $name には、プライベート メンバー プロパティ $this->name の初期値が割り当てられます
$this->name=$name;
//コンストラクターを通じて渡された $sex には、プライベート メンバー プロパティ $this->sex の初期値が割り当てられます
$this->sex=$sex;
//コンストラクターを通じて渡された $age には、プライベート メンバー プロパティ $this->age の初期値が割り当てられます
$this->age=$age;
}
//この人は、自分自身のプライベート属性を話す方法で話すことができます。プライベート メソッドにもここからアクセスできます
関数say()
{
echo "私の名前は: ".$this->name" 性別: ".$this->性別" 私の年齢: ".$this->age"
";
}
}
//構築メソッドを通じて 3 つのオブジェクト $p1、p2、$p3 を作成し、3 つの異なる実際のパラメーター (名前、性別、年齢) を渡します
$p1=新しい人("張三", "男性", 20);
$p2=新しい人("李思","女", 30);
$p3=新しい人("王五","男", 40);
// 以下は、$p1 オブジェクトの発話メソッドにアクセスします
$p1->say();
//以下は $p2 オブジェクトの発話メソッドにアクセスします
$p2->say();
//以下は $p3 オブジェクトの発話メソッドにアクセスします
$p3->say();
出力結果は次のようになります:
私の名前: Zhang San 性別: 男性 私の年齢: 20
私の名前は: Li Si 性別: 女性 私の年齢: 30
私の名前は: Wang Wu 性別: 男性 私の年齢: 40
クラスの人
{
//人のメンバー属性は以下の通りです
Private $name; //その人の名前は private でカプセル化されます。
Private $sex; //人の性別は private によってカプセル化されます
Private $age; //人の年齢は private によってカプセル化されます
//プライベート属性の名前 $name、性別 $sex、年齢 $age に値を割り当てるコンストラクター パラメーターを定義します
関数 __construct($name, $sex, $age)
{
//コンストラクターを通じて渡された $name には、プライベート メンバー プロパティ $this->name の初期値が割り当てられます
$this->name=$name;
//コンストラクターを通じて渡された $sex には、プライベート メンバー プロパティ $this->sex に初期値が割り当てられます
$this->sex=$sex;
//コンストラクターを通じて渡された $age には、プライベート メンバー プロパティ $this->age の初期値が割り当てられます
$this->age=$age;
}
//この人は、自分自身のプライベート属性を話す方法で話すことができます。プライベート メソッドにもここからアクセスできます 。
関数say()
{
echo "私の名前は: ".$this->name" 性別: ".$this->性別" 私の年齢: ".$this->age"
";
}
}
//構築メソッドを通じて 3 つのオブジェクト $p1、p2、$p3 を作成し、3 つの異なる実際のパラメーター: 名前、性別、年齢を渡します
$p1=新しい人("張三", "男性", 20);
$p2=新しい人("李思","女", 30);
$p3=新しい人("王五","男", 40);
//以下は$p1オブジェクトのspeakingメソッドにアクセスします
$p1->say();
//以下は $p2 オブジェクトの発話メソッドにアクセスします
$p2->say();
//以下は $p3 オブジェクトの発話メソッドにアクセスします
$p3->say();
|
出力結果は次のとおりです:
私の名前:張三 性別:男性 年齢:20歳
私の名前は: Li Si 性別: 女性 私の年齢: 30
私の名前:Wang Wu 性別:男性 私の年齢:40 コンストラクターはデフォルトのパブリック メソッドであるため (コンストラクターをプライベートに設定しないでください)、クラス外からアクセスできるため、コンストラクターを使用してオブジェクトを作成し、コンストラクターもクラス内の関数であるため、コンストラクターを使用してプライベート プロパティに初期値を割り当てることができます。 Say() メソッドはデフォルトでパブリックであるため、外部からアクセスして独自のプライベート プロパティを伝えることができます。
上記の例から、プライベート メンバーはクラス内でのみ使用でき、クラス外からは直接アクセスできないことがわかります。ただし、クラス内にアクセスする権限があるため、場合によってはプライベート プロパティの割り当てと読み取りが必要になります。外部とは、クラスの外部にアクセス可能なインターフェイスを提供することを意味します。上記の例では、コンストラクター メソッドは代入の形式ですが、コンストラクター メソッドは、オブジェクトを作成するときに値を代入するだけです。この既存のオブジェクトに値を割り当てる場合、コンストラクター メソッドも使用して値を渡すと、既存のオブジェクトではなく新しいオブジェクトが作成されます。したがって、外部からアクセスできるプライベート属性用のインターフェイスをいくつか作成する必要があります。目的は、オブジェクトが存在するときに属性の値を変更してアクセスすることです。ただし、これは必要な属性に対してのみ実行できることに注意してください。外部からアクセスされることを望まないプロパティにはそのようなインターフェイスがありません。そのため、カプセル化の目的はオブジェクト自体によって完了し、オブジェクトへの操作は最小限に抑えられます。外の世界。
クラスの外にインターフェイスを提供する場合、クラスの外にプライベート プロパティの設定メソッドと取得メソッドを提供して、プライベート プロパティを操作できます。例:
コードは次のとおりです |
コードをコピー |
//プライベート属性の年齢
プライベート $ 年齢
//年齢を外部から設定するためのパブリックメソッドを提供します
関数 setAge($age)
{
//属性に値を代入する際、属性に不正な値が設定されることを避けるため
If($年齢130)
戻る;
$this->年齢=$年齢
}
//年齢を外部から取得するためのパブリックメソッドを提供します
関数 getAge()
{
戻る($this->年齢);
}
//プライベート属性の年齢
プライベート $age;
//外部向けに年齢を設定するためのパブリックメソッドを提供します
関数 setAge($age)
{
//属性に値を代入する際、属性に不正な値が設定されることを避けるため
if($年齢130)
戻る;
$this->age=$age;
}
//外部関係者向けに年齢を取得するための公開メソッドを提供します
関数getAge()
{
return($this->年齢);
}アップ
|
上記のメソッドはメンバー属性の値を設定および取得するものですが、同じメソッドを使用して各属性の値を割り当ておよび取得し、クラスの外でアクセス作業を完了することもできます。
|