クラスの概念: クラスは、同じプロパティと操作を持つオブジェクトのコレクションです。これは、このクラスに属するすべてのオブジェクトに対して統一された抽象的な説明を提供します。これには、属性と操作という 2 つの主要な部分が含まれます。 オブジェクト指向のプログラミング言語では、クラスは独立したプログラム単位であり、クラス名を持ち、属性の説明と操作の説明という 2 つの主要な部分を含む必要があります。
1. クラス定義:
i. class キーワードを使用してクラスを定義します
Class Person{};
2. メンバー属性と操作を含むクラスを定義します
Class Person{ 成员属性........ 操 作........ }
3. be 継承されたクラスの場合は、final キーワードを使用します
Final class Person{ 成员属性........ 操 作........ }
4. 注: Final キーワードは、クラスとメソッドのみを変更するために使用できます (final メソッドは後で紹介します)
5。
パブリック関数を含む最終クラスFinalClassを定義するfinal class FinalClass { public function ffun() { echo “本类为final类”; } }
class ChildFinalClass extends FinalClass { public function fchildfun() { echo ‘本类继承final类FinalClass ’; } }
Fatal error: Class ChildFinalClass may not inherit from final class (FinalClass)
プライベートを示し、このクラス内でのみ利用可能
Static: 1) 静的属性、2) 静的メンバー属性で変更可能同じクラスのすべてのオブジェクトによって共有されます
3) クラスが初めてロードされるとき(静的セグメントの初期化中)、メモリ内のデータセグメントに静的データが存在します4) クラス内で self を使用します::メンバー属性名类 5) クラスの外部カテゴリ名 :: メンバー属性名 Const: 1) クラス内の共通数量属性は、クラス内のクラスの定数を宣言し、cONST で使用する必要があります 2) クラス名:: メンバー属性名 注: 属性内の変数は初期化できますが、初期化された値は定数である必要があります。ここでの定数は、PHP スクリプトがコンパイル段階で評価される定数ではないことを意味します。コンパイルフェーズの後のランタイムフェーズ。たとえば、演算子を含めたり、変数や関数を含めたりすることはできません。 iv. メンバー属性を呼び出す方法: クラスの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();
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();
ii. PHP 5 以降では、PHP のクラスでマジック メソッドを使用できるようになりました。 2 つのアンダースコア () で始まるメソッドはマジック メソッドとして予約されると規定されているため、既存のマジック メソッドをオーバーロードしない限り、関数名はそれらで始まらないことが推奨されます。次に、必要に応じていくつかのマジック メソッドをリストします。理解するには、特定のものを問い合わせて理解することができますので、ここでは詳しく紹介しません。
1.construct()構築メソッド
destruct()
2.clone()
オブジェクトをコピーしたい場合は、cloneメソッドを使用する必要があります
3. toString()
メソッドは、オブジェクトを文字列に変換するときに自動的に呼び出されます (例: echo を使用してオブジェクトを出力する場合)。 wakeup はシリアル化解除中に呼び出されます。 5. set_state() var_export() が呼び出されるとき、この静的メソッドが呼び出されます (PHP 5.1.0 以降で有効) 6. 呼び出し (PHP 5.3.0 以降で有効) function を呼び出すことによってオブジェクトを呼び出すと、 invoke メソッドが自動的に呼び出されます。 7. callStatic (PHP 5.3.0 以降で有効) は静的メソッド呼び出しを処理します8. get() 未定義のプロパティが呼び出されるとき、このメソッドがトリガーされ、渡されたパラメーターはアクセスされるプロパティです。名前。 set() 未定義のプロパティに値を割り当てる場合、このメソッドがトリガーされます。渡されるパラメータは、設定するプロパティ名と値です。 ここでの非宣言には、オブジェクトを使用して呼び出されたときにアクセス制御が保護されプライベートである属性 (つまり、アクセス許可を持たない属性) が含まれます。 9. isset() このメソッドは、未定義のプロパティに対して isset() 関数が呼び出されたときに呼び出されます。 unset() このメソッドは、未定義のプロパティに対して unset() 関数が呼び出されたときに呼び出されます。 call($method, $arg_array)未定義のメソッドを呼び出す場合、このメソッドが呼び出されますここでの未定義のメソッドには、アクセス権限がないメソッドも含まれます。メソッドが存在しない場合は、親クラスに移動して見つけます。親クラスに call() メソッドが存在しない場合は、このクラスの call() メソッドを呼び出します。親クラス。 11. autoload()自動ロード
マジックメソッド以上がPHP でクラスとそのメンバーのプロパティを定義する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。