ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHP チュートリアルでクラスとそのメンバーの属性と操作を定義する方法
クラスの概念: クラスは、同じ属性と操作を持つオブジェクトのコレクションです。これは、このクラスに属するすべてのオブジェクトに対して統一された抽象的な説明を提供します。これには、属性と操作という 2 つの主要な部分が含まれます。オブジェクト指向プログラミング言語では、クラスは独立したプログラム単位であり、クラス名を持ち、属性の説明と操作の説明という 2 つの主要な部分を含む必要があります。
1. クラス定義:
i. クラスのキーワード定義には class を使用します
1. 空のクラスを定義します
クラス担当者{};
2. メンバー属性と操作を含むクラスを定義します
クラスの人{
メンバー属性....
クソ……
}
3. 継承できないクラスを定義し、final キーワードを使用します
最終クラスの人{
メンバー属性....
クソ……
}
4. 注: Final キーワードはメンバー属性の変更には使用できませんが、変更できるのはクラスとメソッドのみです (final メソッドについては後で紹介します)
5. ファイナルのクラスです
パブリック関数を含む最終クラス FinalClass を定義します
最終クラス FinalClass {
パブリック関数 ffun() {
echo "このクラスは最終クラスです";
}
}
クラスChildFinalClassを定義し、FinalClassクラスを継承します
class ChildFinalClass は FinalClass を拡張します {
パブリック関数 fchildfun() {
echo ‘このクラスは最終クラス FinalClass を継承します’;
}
}
上記のコマンドを実行すると、システムからプロンプトが表示されます
致命的なエラー: クラス ChildFinalClass は最終クラス (FinalClass) から継承できません
Final キーワードで定義されたクラスはサブクラスに継承できないことを証明します
2. クラス内のメンバー属性の定義
i. メンバー属性は、クラスとして定義された、一対の目 (Erlang Shen を除く通常)、口、2 つの耳、およびその他の固定属性を持ちます。何かを表現するものをメンバー属性と呼びます
ii. クラスのメンバープロパティの宣言で使用されるキーワード
iii. 共通のメンバー属性宣言は次のキーワードで構成されます
public、var、protected、private で始まり、変数が続きます。静的および定数 const を含むいくつかのメンバー属性もあります。
パブリック: グローバルを表し、クラスの内部サブクラスと外部サブクラスの両方にアクセス可能です
Var: PHP 5 バージョンでは、このメンバー属性はパブリック型属性とみなされます
protected は保護されていることを意味し、このクラス、サブクラス、または親クラスでのみアクセスできます
プライベート
プライベートを示し、このクラス内でのみ使用できます
静的: 1) 静的属性、
2) static で変更されたメンバープロパティは、同じクラスのすべてのオブジェクトで共有できます
3) クラスが初めてロードされるとき (静的セグメントの初期化時)、静的データはメモリ内のデータ セグメントに保存されます
4) クラス内で self::member 属性名を使用します
️クラス名:: メンバー属性名Const: 1) クラス内の定数属性 クラス内で定数を宣言する場合は、const
を使用する必要があります。
2) クラス内で self:: member 属性名を使用します注: 属性内の変数は初期化できますが、初期化される値は定数である必要があります。ここでの定数は、コンパイル段階後の実行段階で計算される定数ではなく、PHP スクリプトがコンパイル段階にある定数を指します。たとえば、演算子を含めたり、変数や関数を含めることはできません。
iv. メンバー属性の呼び出し方法:
クラスのメンバーメソッドでは、$this->property (プロパティはプロパティ名) を介してクラスのプロパティとメソッドにアクセスできますが、クラスの静的プロパティにアクセスしたり、静的プロパティで使用したりすることはできません。 self::$プロパティを使用します。 疑似変数 $this は、クラスの非静的メソッドで使用できます。この疑似変数は、メソッドを呼び出すインスタンス化されたオブジェクトへの参照です。
次に、コードを使用して上記の内容を説明します:
クラス FinalClass {
//const A = 1+2 //この書き方は間違っています
//パブリック $name = 123+456;
//この書き方は間違っています
静的 $a = '$a';
const A = 'A';
public $name = 'シスター・フェン';
protected $sex = '男性+女性';
プライベート $年齢 = 23;
}
class ChildFinalClassはFinalClassを拡張します{
パブリック関数 fchildfun(){
echo 'ChildFinalClass::$a->'.ChildFinalClass::$a."
エコー 'ChildFinalClass::A->'.ChildFinalClass::A."
echo 'こんにちは、私の名前は'.$this->name."
echo '私は:'.$this->sex.'生
echo '私の年:'.$this->age.'
}
}
$obj = new ChildFinalClass();
$obj->fchildfun();
3. クラス内の演算の定義
i. 私は通常、オペレーションをメンバー メソッドとして呼び出しますが、それらはすべて同じです
。
ii. メンバー メソッドの定義: メンバー メソッドは、クラスに対して定義されたいくつかの関数メソッドです。例として、これらはメンバー メソッドです。つまり、メンバーメソッドとして理解されるいくつかの実行可能なアクションを実行できますiii. メンバー メソッドとメンバー属性へのアクセスについては、上記のメンバー属性へのアクセスの概要を参照してください。
iv. メンバー メソッドとメンバー属性には、public、protected、private、static、final も含まれており、その範囲は同じです。参照と理解のためにいくつかの例を示します。
v. 静的メンバー メソッドは静的メンバー プロパティとメンバー メソッドにのみアクセスでき、self::static method() を使用してクラス内の静的メソッドにアクセスし、classname::static method() を使用して外部クラスにアクセスできます
1.カスタマイズ方法:
静的 $a = '$a';
const A = 'A';
public $name = 'シスター・フェン';
protected $sex = '男性+女性';
プライベート $年齢 = 23;
//パブリックメソッドを定義します
パブリック関数 publickfun(){
FinalClass クラスの echo 'self::$a->'.self::$a."
FinalClass クラスの echo "self::A->".self::A."
echo 'こんにちは、私の名前は:'.$this->name."
echo '私は:'.$this->sex.'生
echo '私の年:'.$this->age.'
//保護されたメソッドを定義する
保護された関数 protectedfun(){
FinalClass クラスの echo 'self::$a->'.self::$a."
FinalClass クラスの echo "self::A->".self::A."
echo 'こんにちは、私の名前は:'.$this->name."
echo '私は:'.$this->sex.'生
echo '私の年:'.$this->age.'
}
//プライベートメソッドを定義します
echo 'self::$a->'.self::$a."
FinalClass クラスの "self::A->".self::A."
echo 'こんにちは、私の名前は:'.$this->name."
エコー '私は:'.$this->sex.'生
エコー '私の年:'.$this->age.'
}
class ChildFinalClassはFinalClassを拡張します{
echo 'ChildFinalClass::$a->'.ChildFinalClass::$a."
エコー 'ChildFinalClass::A->'.ChildFinalClass::A."
エコー '私は:'.$this->sex.'生
echo '私の年:'.$this->age.'
//age はプライベートなメンバー属性なので、自分の年齢を他人に知られたくないということが分かるので、ここでは呼び出されず、この属性が ChildFinalClass クラスに定義されていないことを確認するメッセージが表示されます。
$this->publickfun();
$this->protectedfun();
$this->privatefun();
//privatefun はプライベートメンバーメソッドであるため、ここでは呼び出されません。
}
}
i. 他のすべてのマジック メソッドと同様に、マジック メソッドをパブリックとして定義する必要があります
ii. PHP 5 以降では、PHP のクラスでマジック メソッドを使用できるようになりました。 2 つのアンダースコア (__) で始まるメソッドはマジック メソッドとして予約されると規定されているため、既存のマジック メソッドをオーバーロードする場合を除き、すべての関数名を __ で始めないようにすることをお勧めします。詳しく知りたい方は問い合わせてみると良いので、ここでは詳しく紹介しません。
1. __construct() 構築メソッド
__destruct()
破壊方法
2、__clone()
オブジェクトをコピーしたい場合は、cloneメソッドを使用する必要があります
3、__toString()
このメソッドは、オブジェクトを印刷するためにechoを使用する場合など、オブジェクトを文字列に変換するときに自動的に呼び出されます
4. __sleep() はシリアル化中に使用されます
__wakeup は逆シリアル化中に呼び出されます
5. __set_state()
この静的メソッドは、var_export() が呼び出されたときに呼び出されます (PHP 5.1.0 以降で有効)
6. __invoke (PHP 5.3.0 以降で有効)
オブジェクトを関数として呼び出そうとすると、__invoke メソッドが自動的に呼び出されます。
7. __callStatic (PHP 5.3.0 以降で有効) は静的メソッド呼び出しを処理します
8. __get() 未定義の属性が呼び出されると、このメソッドがトリガーされ、渡されるパラメーターはアクセスされる属性の名前です。
__set() このメソッドは、未定義の属性に値を割り当てるときにトリガーされます。渡されるパラメーターは、設定する属性名と値です。 ここでの非宣言には、オブジェクトを使用して呼び出されたときにアクセス制御が保護されプライベートである属性 (つまり、アクセス許可を持たない属性) が含まれます。
9. __isset() このメソッドは、isset() 関数が未定義の属性に対して呼び出されたときに呼び出されます
__unset() このメソッドは、未定義のプロパティに対して unset() 関数が呼び出されたときに呼び出されます
10.__call( $method, $arg_array )
このメソッドは、未定義のメソッドを呼び出すときに呼び出されます
ここでの未定義のメソッドには、アクセス権限がないメソッドが含まれます。メソッドが存在しない場合は、親クラスに移動してメソッドを見つけます。このメソッドの __call() メソッドを呼び出します。このメソッドの場合 __call() メソッドがクラスに存在しない場合は、親クラスの __call() メソッドに移動します。
11. __autoload() 自動読み込みマジックメソッド