クラスの概念: クラスは、同じ属性と操作を持つオブジェクトのコレクションです。これは、このクラスに属するすべてのオブジェクトに対して統一された抽象的な説明を提供します。これには、属性と操作という 2 つの主要な部分が含まれます。 オブジェクト指向のプログラミング言語では、クラスは独立したプログラム単位であり、クラス名を持ち、属性の説明と操作の説明という 2 つの主要な部分を含む必要があります。
1. クラス定義:
i. クラスのキーワード定義は、クラス
1 を定義します。 {
メンバー属性…
オペレーション…
}
3. 継承できないクラスを定義し、finalキーワードを使用します
ファイナルクラス パーソン{
メンバー属性…
オペレーション 。 ..
}
4. 注: Final キーワードは、クラスとメソッドのみを変更するために使用できません (final メソッドは後で紹介します)
5. Final を含むクラスを次に示します。パブリック関数を含むクラスFinalClass
final class FinalClass { public function ffun() { echo “本类为final类”; } }
クラスChildFinalClassを定義し、FinalClassクラスを継承します
class ChildFinalClass extends FinalClass { public function fchildfun() { echo ‘本类继承final类FinalClass ’; } }
このように、上記のコマンドが実行されるとき、システムがプロンプトを表示するとき
致命的なエラー:クラスChildFinalClassは最終クラスから継承できません(FinalClass)
finalキーワードで定義されたクラスがサブクラスに継承できないことを証明する
2. クラス内のメンバー属性の定義i. メンバー属性は、クラスとして定義されるいくつかの変数属性です。 、人々は一対の目(アーランシェンを除く通常)、口、2つの耳、その他の固定されたものを持っています 何かを説明または表現するために使用される固有名詞は、メンバー属性と呼ばれますii クラス内のメンバー属性の宣言。キーワードiii を使用します。共通のメンバー属性宣言は、次のキーワードで構成されます public、var、protected、private で始まり、その後に変数が続きます。静的、定数 const などのメンバー属性もいくつかあります。
Public: グローバルであることを示し、クラスの内部および外部のサブクラスからアクセスできます
Var: PHP 5 バージョンでは、このメンバー属性はパブリック型とみなされます
protected 保護されていることを示し、このクラス、サブクラス、または親クラスでのみアクセス可能
private
プライベートを示し、このクラス内でのみ利用可能
Static: 1) 静的属性、
2) static で変更されたメンバー属性同じクラスのすべてのオブジェクトで共有できます
3) クラスの初回ロード時(静的セグメントの初期化)に、メモリ内のデータセグメントに静的データが存在します
4) クラスself::で使用されます。メンバー属性名
member メソッド
では、$this->property (プロパティは属性名) を通じてクラスの属性とメソッドにアクセスできますが、クラスにアクセスするには、静的プロパティを使用することはできません。代わりに、self::$property が使用されます。 疑似変数 $this は、クラスの非静的メソッドで使用できます。この疑似変数は、メソッドを呼び出すインスタンス化されたオブジェクトへの参照です。 次に、コードを使用して上記の内容を説明します:class FinalClass { //static $a = strTolower(); //这种写法错误 //const A = 1+2; //这种写法错误 //public $name = 123+456; //这种写法错误 static $a = '$a'; const A = 'A'; public $name = '凤姐'; protected $sex = '男+女'; private $age = 23; } class ChildFinalClass extends FinalClass{ public function fchildfun(){ echo 'ChildFinalClass类中ChildFinalClass::$a->'.ChildFinalClass::$a."<hr>"; Echo 'ChildFinalClass类中ChildFinalClass::A->'.ChildFinalClass::A."<hr>"; echo '大家好,我叫'.$this->name."<hr>"; echo '我是:'.$this->sex.'生<hr>'; echo '我今年:'.$this->age.'<hr>'; //由于age是私有的成员属性,所以在这里将不会被调用,将提示没有定义此属性在ChildFinalClass类中。 } } $obj = new ChildFinalClass(); $obj->fchildfun();
iii. メンバー属性と同様に、メンバー メソッドへのアクセスについては、上記のメンバー属性へのアクセスの概要を参照してください。
iv. メンバー メソッドとメンバー属性には、public、protected、private、static、final も含まれており、参照と理解のためにいくつかの例を示します。 v. 静的メンバー メソッドは静的メンバー プロパティとメンバー メソッドにのみアクセスでき、self::static method() を使用してクラス内の静的メソッドにアクセスし、class name::static method() を使用して外部クラスにアクセスできます。 1 . カスタム メソッド:class FinalClass { static $a = '$a'; const A = 'A'; public $name = '凤姐'; protected $sex = '男+女'; private $age = 23; //定义一个公共方法 public function publickfun(){ echo 'FinalClass类中self::$a->'.self::$a."<hr>"; echo "FinalClass类中self::A->".self::A."<hr>"; echo '大家好,我叫:'.$this->name."<hr>"; echo '我是:'.$this->sex.'生<hr>'; echo '我今年:'.$this->age.'<hr>'; } //定义一个受保护的方法 protected function protectedfun(){ echo 'FinalClass类中self::$a->'.self::$a."<hr>"; echo "FinalClass类中self::A->".self::A."<hr>"; echo '大家好,我叫:'.$this->name."<hr>"; echo '我是:'.$this->sex.'生<hr>'; echo '我今年:'.$this->age.'<hr>'; } //定义一个私用方法 private function privatefun(){ echo 'FinalClass类中self::$a->'.self::$a."<hr>"; echo "FinalClass类中self::A->".self::A."<hr>"; echo '大家好,我叫:'.$this->name."<hr>"; echo '我是:'.$this->sex.'生<hr>'; echo '我今年:'.$this->age.'<hr>'; } } class ChildFinalClass extends FinalClass{ public function fchildfun(){ echo 'ChildFinalClass类中ChildFinalClass::$a->'.ChildFinalClass::$a."<hr>"; Echo 'ChildFinalClass类中ChildFinalClass::A->'.ChildFinalClass::A."<hr>"; echo '我是:'.$this->sex.'生<hr>'; echo '我今年:'.$this->age.'<hr>'; //由于age是私有的成员属性,可以理解为我不想让别人知道我的年龄,所以在这里将不会被调用,将提示没有定义此属性在ChildFinalClass类中。 $this->publickfun(); $this->protectedfun(); $this->privatefun(); //由于privatefun是私有的成员方法,所以在这里将不会被调用。 } } $obj = new ChildFinalClass(); $obj->fchildfun();
2. マジック メソッド
i. マジック メソッドは、他のすべてのマジック メソッドと同様に、パブリックとして定義する必要があります
ii. PHP 5 以降では、PHP のクラスでマジック メソッドを使用できるようになりました。 2 つのアンダースコア () で始まるメソッドはマジック メソッドとして予約されると規定されているため、既存のマジック メソッドをオーバーロードしない限り、関数名はそれらで始まらないことが推奨されます。次に、必要に応じていくつかのマジック メソッドをリストします。理解するには、特定のものを問い合わせて理解することができますので、ここでは詳しく紹介しません。
1.construct()構築メソッド
destruct()
2.clone()
オブジェクトをコピーしたい場合は、cloneメソッドを使用する必要があります
3. toString()
メソッドは、echo を使用してオブジェクトを出力する場合など、オブジェクトを文字列に変換するときに自動的に呼び出されます
4. sleep() シリアル化するときに
wakeup を使用し、逆シリアル化するときに呼び出します
5. )
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() 関数が呼び出されたときに呼び出されます。 call($method, $arg_array)
未定義のメソッドを呼び出す場合、このメソッドが呼び出されます
ここでの未定義のメソッドには、アクセス権限がないメソッドが含まれます。メソッドが存在しない場合は、親クラスに移動して、親クラスに call() メソッドが存在しない場合は、このクラスの call() メソッドを呼び出します。 クラスに call() メソッドが存在しない場合は、そのクラスの call() メソッドに進みます。親クラス。
11. autoload()
自動ロード以上がphpクラスとは何ですか? phpクラスの属性の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。