ホームページ >php教程 >php手册 >php5 でのクラスの学習

php5 でのクラスの学習

WBOY
WBOYオリジナル
2016-06-13 12:29:451050ブラウズ

コードをコピー コードは次のとおりです:


public $name = 'value '; // プロパティ
public function name() // メソッド
{ echo 'value' }
}
?>



その中で、プロパティとメソッドは、public、protected、private の 3 つの異なるキーワードを使用して、プロパティとメソッドの範囲をさらに拡張できます。違いは、private キーワードを持つ属性とメソッドの場合、それらが属するクラス内のメソッドのみであることです。 protected キーワードを使用して属性とメソッドを呼び出すことができます。また、それ自体に加えて、 public キーワードを使用してプロパティとメソッドをオブジェクトから呼び出すこともできます。この最大の利点は、すべてのプロパティとメソッドに説明的な機能が追加され、コード構造の整理が容易になることです。 const キーワードは最初にスキップされ、後で static とともに説明されます。

静的キーワードは、public、protected、private とは異なる別のタイプのキーワードです (つまり、public、protected、private と組み合わせて使用​​できます):





コードをコピー

コードは次のとおりです:

echo 'value'; } } } ":: " シンボル呼び出しを public、protected、private と組み合わせると、呼び出しの権限を区別することもできますが、通常は public と組み合わせます。前述の定数キーワード const は public static 型である必要があるため、定数のみを呼び出すことができます。 self::NAME、TEST::NAME の形式で、後続の __construct、__destruct、およびその他のメソッドは静的です。

クラスの構造部分で、最後に導入された 2 つのキーワードは、abstract とfinal です。abstract キーワードは、このクラスがそのサブクラスによってオーバーライドされる必要があることを示し、final キーワードは、このクラスがオーバーライドされてはならないことを示します。サブクラスのオーバーライドでは、これら 2 つのキーワードの機能はまったく逆になります。抽象メソッドを含むクラスは抽象クラスと呼ばれます。

クラスを使用するには、主に 2 つの方法があります。

クラスを使用するには、主に 2 つの方法があります。1 つは new キーワードを使用する方法、もう 1 つは "::" を使用する方法です。シンボル:

PHP コード



コードをコピー


コードは次のとおりです:


class TEST
{
public static function name()
$test->name()

//方法 2: 「::」記号を使用します。 🎜>テスト::名前();



(1): new キーワードを使用してインスタンス化します。上記の $test は、TEST クラスをインスタンス化することによって生成されるオブジェクトであり、$test オブジェクトの名前と呼ばれます。 。 方法。
(2): new キーワードを使用してクラスを使用する場合、$this を使用してクラス自体を参照できます。
(3): 「::」記号を使用するための前提条件は、メソッドに static キーワードが必要であることです。 new キーワードを使用する場合、呼び出されるメソッドには public キーワードが必要です (メソッドに static キーワードがない場合)。 public キーワード、protected、private、デフォルトは public)
(4): new キーワードを使用して同じクラスを複数の異なるオブジェクトにインスタンス化できますが、それらは互いに分離されます。使用される場合、メソッドは複数の使用間で共有されます:

PHP コード

コードをコピー コードは次のとおりです:


$this ->name = $this->name 1;
} }
}

$test1 = new TEST1; name1 == 1
$test2->name(); //$name1 == 1

/*------------ ------- -------------------------*/ static $name = 0;
public static function name()
{ TEST2::$ name = TEST2::$name 1; }

} >}
TEST2 ::name(); // $name == 1
TEST2::name(); == 2
?>

クラスの関係:

クラス間の関係には主に抽象化、インターフェース、継承が含まれます:

PHP コード



コードをコピー

コードは次のとおりです:


abstract class TEST1 // Abstract
{
abstractパブリック関数名1();
パブリック関数名2()
{
} 🎜>

} } インターフェース TEST3 // インターフェース { パブリック関数名2 ();

}

?>



(1) abstract キーワードを持つクラスは抽象クラスであり、abstract キーワードを持つメソッドは抽象クラスでオーバーライドされる必要があります。
(2) インターフェース キーワードを持つクラスはインターフェースです。インターフェース内のすべてのメソッドはサブクラスでオーバーライドされる必要があります。
(3) classA extends classB または classAimplements classB という単語が付いているものは継承であり、extends は別のクラスを継承することを意味し、implements は一度に 1 つのクラスのみを拡張できますが、複数のインターフェイスを実装できます。
(4) 抽象クラス、インターフェイス、および最終的に継承および実装されるメソッドはパブリックである必要があります。

継承処理中に、サブクラスは親クラスのメソッドを同じ名前で上書きします。このとき、サブクラス内で親クラスのメソッドを呼び出す必要がある場合は、親クラスを使用できます。キーワードまたはクラス名と "::" シンボル呼び出し:

PHP コード

コードをコピー コードは次のとおりです:


class TEST1 extends TEST2
{ public function name()
{ echoparent::name2();
}
}
class TEST2
{
public function name2()
{
echo 'value2';
}
}
$test = new TEST1;
$test->name();
?>



クラス内の「::」メソッドの役割の別の説明です。インスタンス化がない場合です。特定の状況下で、定数 (実際には静的とも理解できます)、静的なプロパティおよびメソッドを呼び出します。もう 1 つは、self、parent、およびクラス名を通じてクラス内に便利な呼び出しチャネルを確立することです。


オブジェクト間の関係は主に、「== 等しい」、「=== すべて等しい、等しくない、クローン」です:

PHP コード
クラス TEST 🎜>$test2 = 新しい TEST;
$test3 = $test; 1;
echo $test1 == $test2 ? true : false;
echo $test1 == $test3 ? : false; // true
echo $test2 == $test3 ? true : false; // true
echo $test1 === $test2 ? // false
echo $test1 = == $test3 ? true : false ; // true
echo $test2 === $test3 ? true : false;

(1)クラスは同じ属性とメソッドを持ちます。つまり、「==」は等価です。
(2) 「===」と等しくなるには、2 つのクラスが同じオブジェクトを指している必要があります。

クローンは特殊です。上記の例では、$test3 = $test1 のプロセスは $test3 に $test1 オブジェクトのコピーを与えませんが、取得する必要がある場合は $test3 が $test1 を指すようにします。 $test1 のコピーの場合は、clone キーワードを使用する必要があります:

PHP コード



コードをコピー

コードは次のとおりです:


$test3 = クローン $test1;



クラスのフック:

__autoload:
は関数名であり、オブジェクトをインスタンス化するときにクラスのプリロードされていない場合、このフックは次のようになります。と呼ばれた。

__construct
クラスがインスタンス化されるとき、呼び出されるフックはいくつかの初期化操作を実行できます。

__destruct
クラスが破棄されるときに呼び出されるフック。

__call
オブジェクトが存在しないメソッドを呼び出そうとすると、フックが呼び出されます

__sleep
serialize() 関数を使用してクラスをシリアル化する場合 これフックは呼び出されます

__wakeup
クラスを逆シリアル化するために unserialize() 関数が使用されるとき、このフックは呼び出されます

__toString
オブジェクトが変換されるとき文字列に変換すると、このフックが呼び出されます (echo など)

__set_state
クラスを操作するために var_export() 関数が呼び出される場合、このフックは

__clone
clone キーワードを使用してクラスをコピーすると、このフックが呼び出されます

__get
クラスの属性値を取得すると、このフックが呼び出されます

__set
クラスの属性値を設定する場合、このフックが呼び出されます

__isset
isset() 関数を使用してクラスの属性値を決定する場合、このフック

__unset
は、unset() 関数を使用して属性値を破棄するときに呼び出されます。

クラスのヒント: インスタンス内の

クラスについて話すときは、次のように使用できます。このフォームは、パラメータを __construct フックに渡します:

PHP コード

コードをコピー コードは次のとおりです:


class TEST
{
public function __construct($para) 🎜> }
}

$test = new TEST('value') ; // 表示値
?>



foreach() 関数は、クラスまたはオブジェクトをテストするために使用できます。トラバースすると、public、protected のステータスが検査されます。


PHP コード



コードをコピー

コードは次のとおりです: class TEST 🎜> public $property3 = 'value3' ;


public function name()
{ foreach($this as $key => $value )
{
print "$key => $valuen"; 🎜> {

PHP コード



コードをコピー

コードは次のとおりです:


class TEST1
{
パブリック関数名(TEST2 $para)
{ }
>}

class TEST2
{

}

$test2 = new TEST2;
$test1 = new TEST1;

$test1->name('value ');このパラメータは TEST2 のインスタンス化後にオブジェクトである必要があるため、エラーが報告されます。
?> > PHP4 互換の構文:

PHP5 クラスは PHP4 と下位互換性があります。これらの PHP4 時代の構文も継承されていますが、PHP5 環境での使用は推奨されません。

(1) var default 属性を使用すると、自動的に public に変換されます。


(2) クラス名をコンストラクターとして使用します。__construct コンストラクターがない場合は、クラスと同じ名前の関数をコンストラクターとして検索します。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。