ホームページ >バックエンド開発 >PHPチュートリアル >PHP でクラスとそのメンバーのプロパティを定義する方法
クラスの概念: クラスは、同じプロパティと操作を持つオブジェクトのコレクションです。これは、このクラスに属するすべてのオブジェクトに対して統一された抽象的な説明を提供します。これには、属性と操作という 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类”; } }クラスChildFinalClassを定義し、FinalClassクラスを継承する
class ChildFinalClass extends FinalClass { public function fchildfun() { echo ‘本类继承final类FinalClass ’; } }このようにして、上記のコマンドが実行されると、システムはプロンプトを表示します
Fatal error: Class ChildFinalClass may not inherit from final class (FinalClass)によって定義されたクラスであることを証明します最後のキーワードは許可されません 2. クラス内のメンバー属性の定義i. メンバー属性は、クラスとして定義されたいくつかの変数属性です (通常のものを除きます)。 Erlangshen) )、1 つの口、2 つの耳など、何かを説明または表現するために使用される固定の固有名詞は、クラス内のメンバー属性を宣言するために使用されるキーワードiii と呼ばれます。次のキーワード public、var、protected、private の後に変数が続きます。静的、定数 const などのメンバー属性もいくつかあります。Public: グローバルであることを示し、クラスの内部および外部のサブクラスからアクセスできますVar: PHP 5 バージョンでは、このメンバー属性はパブリック型とみなされますprotected 保護されていることを示し、このクラス、サブクラス、または親クラス内でのみアクセス可能 private
プライベートを示し、このクラス内でのみ利用可能
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();3. クラス内の操作の定義ii. メンバー メソッドの定義: メンバー メソッドは、クラスに対して定義されたいくつかの関数メソッドであり、コードを実行、入力できます。つまり、メンバー メソッドとして理解されるいくつかの実行可能なアクションを実行できます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 を使用してオブジェクトを出力する場合)。 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 サイトの他の関連記事を参照してください。