ホームページ >バックエンド開発 >PHPチュートリアル >PHPのクラスとメソッドのキーワードチュートリアルの詳細な説明
以下は、私がまとめた PHP クラスとメソッド キーワードのチュートリアルです。興味のある学生はチェックしてください。
1. Final
クラスを継承したくない場合は、final を使用してこのクラスを変更します。このクラスは継承されません。
final---クラスとメソッドの前に使用されます。
最終クラス---継承できません。
最終メソッド---オーバーライドできません。
2. public はグローバルを意味し、クラス内外のサブクラスからアクセスできます。private はプライベートを意味し、このクラス内でのみ使用できます。protected は、このクラス、サブクラス、または親クラスからのみアクセスできます。 ;
3. これは現在のオブジェクトへのポインター (C ではポインターとみなすことができます)、self は現在のクラスへのポインター、parent は親クラスへのポインターです
self: 変数とメソッドが次のように設定されている場合static、それらはこのクラスで呼び出されます self
4、static
クラスメンバーまたはメソッドを static として宣言すると、クラスをインスタンス化せずに直接アクセスできます。静的メンバー (静的メソッドを除く) には、オブジェクトを介してアクセスできません。静的メンバーはクラスに属し、どのオブジェクト インスタンスにも属しませんが、クラスのオブジェクト インスタンスは共有できます。
次に、$object->… の使用と class::…:
1 の使用の違いを見てみましょう。 $object->… を使用する場合、オブジェクトを作成するために コンストラクターを実行する必要があります。 ; 2. class::... を使用して、コンストラクターを実行せずに静的メソッド/変数を呼び出します。
3. 非静的メソッド/変数を呼び出すには、class::... を使用します。オブジェクトを作成します。
5. 抽象クラス
1.
抽象クラス1.抽象クラスとは、クラスと抽象メソッド(クラスメソッドの関数キーワードの前に抽象キーワード)の前に抽象キーワードを追加したクラスを指します。 2.抽象クラスは直接インスタンス化できません。抽象クラスは、サブクラスに必要なメソッドのみを定義 (または部分的に実装) します。サブクラスは、抽象クラスを継承し、抽象クラス内のすべての抽象メソッドを実装することによって、抽象クラスを具体化できます。
3.サブクラスをインスタンス化する必要がある場合は、抽象クラス内のすべての抽象メソッドを実装する必要があります。サブクラスが抽象クラス内のすべての抽象メソッドを実装していない場合、そのサブクラスも抽象クラスであり、クラス内でその前に abstract キーワードを付ける必要があり、インスタンス化できません。
6.インターフェースインターフェース
1.抽象クラスは具体的な実装の標準を提供しますが、インターフェイスは純粋なテンプレートです。インターフェイスは関数のみを定義し、実装内容は定義しません。インターフェースはキーワードinterfaceで宣言されます。
2.インターフェイスは完全に抽象的であり、メソッドとパブリック メソッドのみを宣言でき、メソッド本体を定義できず、インスタンス変数も宣言できません。ただし、インターフェイスでは定数変数を宣言できます。しかし、インターフェイスに定数変数を配置すると、インターフェイスとして存在する目的に違反し、インターフェイスとクラスのさまざまな値が混乱します。本当に必要な場合は、対応する抽象クラスまたはクラスに配置できます。
7.instanceof
PHP5 のもう 1 つの新しいメンバーは instdnceof キーワードです。このキーワードを使用して、オブジェクトがクラスのインスタンスであるか、クラスのサブクラスであるか、または特定のインターフェイスを実装しているかを判断し、対応する操作を実行します。場合によっては、クラスが特定の型であるか、または特定のインターフェイスを実装しているかを判断する必要があります。このタスクには、instanceof
operator
が最適です。 instanceof 演算子は、インスタンスが特定の型であるかどうか、インスタンスが特定の型を継承しているかどうか、インスタンスまたはその祖先クラスが特定のインターフェイスを実装しているかどうかという 3 つのことをチェックします。たとえば、manager という名前のオブジェクトが Employee クラスのインスタンスであるかどうかを知りたいとします。
$manager = new Employee(); if ($manager instanceof Employee) echo "Yes"; 有两点值得注意。首先,类名没有任何定界符(引号)。使用定界符将导致 语法错误 。其次,如果比较失败,脚本将退出执行。instanceof关键字在同时处理多个对象时特别有用。例如,你可能要重复地调用某个函数,但希望根据对象类型调整函数的行为。可以使用case语句和instanceof关键字来实现这个目标。 class test{} class test{} class testChilern Extends test{} $a = new test(); $m = new test(); $i = ($m instanceof test); if($i) echo '$m是类test的实例!<br />'; // get this value switch ($a instanceof test){ case true : echo 'YES<br />'; break; case false : echo 'No<br />'; //get this value break; } $d=new testChilern(); if($d instanceof test)echo '$d是类test的子类!<br />'; // get this value
1回目の使用法:
<?php $obj = new A(); if ($obj instanceof A) { echo 'A'; }
<?php interface ExampleInterface { public function interfaceMethod(); } class ExampleClass implements ExampleInterface { public function interfaceMethod() { return 'Hello World!'; } } $exampleInstance = new ExampleClass(); if($exampleInstance instanceof ExampleInterface){ echo 'Yes, it is'; }else{ echo 'No, it is not'; } ?>
<?php class Foo { public $foobar = 'Foo'; public function test() { echo $this->foobar . "\n"; } } class Bar extends Foo { public $foobar = 'Bar'; } $a = new Foo(); $b = new Bar(); echo "use of test() method\n"; $a->test(); $b->test(); echo "instanceof Foo\n"; var_dump($a instanceof Foo); // TRUE var_dump($b instanceof Foo); // TRUE echo "instanceof Bar\n"; var_dump($a instanceof Bar); // FALSE var_dump($b instanceof Bar); // TRUE echo "subclass of Foo\n"; var_dump(is_subclass_of($a, 'Foo')); // FALSE var_dump(is_subclass_of($b, 'Foo')); // TRUE echo "subclass of Bar\n"; var_dump(is_subclass_of($a, 'Bar')); // FALSE var_dump(is_subclass_of($b, 'Bar')); // FALSE ?> 输出结果(PHP 5.4.4): use of test() method Foo Bar instanceof Foo bool(true) bool(true) instanceof Bar bool(false) bool(true) subclass of Foo bool(false) bool(true) subclass of Bar bool(false)
以上がPHPのクラスとメソッドのキーワードチュートリアルの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。