ホームページ > バックエンド開発 > PHPチュートリアル > php5_PHP チュートリアルでのクラスの学習

php5_PHP チュートリアルでのクラスの学習

WBOY
リリース: 2016-07-21 15:53:08
オリジナル
824 人が閲覧しました

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

class TEST
{
const NAME = 'value' // 定数
public $name = ' value'; // 属性
Public function name( ) // Method {c co 'value'


この中で、Public、Protect、Private の 3 つの異なるキーワードを使用できます。メソッドのスコープはさらに区別され、private キーワードを持つプロパティとメソッドは、それらが配置されているクラス内のメソッドによってのみ呼び出すことができます。また、protected キーワードを持つプロパティとメソッドは、独自の親クラスおよびサブクラスからも呼び出すことができます。のメソッド自体を呼び出すこともできます。public キーワードを含むプロパティとメソッドは、インスタンス化後にオブジェクトから呼び出すことができます。これにより、すべてのプロパティとメソッドに説明的な機能が追加され、整理が容易になります。そして組織化されたコードの構造。 const キーワードは最初にスキップされ、後で static とともに説明されます。

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



コードをコピー

コードは次のとおりです:
< ;?php class TEST { public static function name()
{
echo 'value';
}
}
?>


static キーワードを含むメソッドは、クラスをインスタンス化せずに使用できます。場合によっては、「::」記号を介して直接呼び出し、public、protected、および private と組み合わせて、アクセス許可を区別することもできますが、通常は、上記の定数キーワード const と組み合わせて public にする必要があります。静的型であるため、定数は self::NAME、TEST::NAME の形式でのみ呼び出すことができ、後続の __construct、__destruct およびその他のメソッドは静的です。

クラスの構造部分で、導入された最後の 2 つのキーワードは、abstract とfinal です。abstract キーワードは、このクラスがそのサブクラスによって上書きされなければならないことを意味し、final キーワードは、このクラスがそのサブクラスによって上書きされてはならないことを意味します。 、これら 2 つのキーワードの機能はまったく逆です。抽象を持つメソッドは抽象メソッドと呼ばれ、抽象メソッドを持つクラスは抽象クラスと呼ばれます。

クラスの使用法:

クラスを使用するには主に 2 つの方法があります。1 つは new キーワードを使用する方法、もう 1 つは「::」記号を使用する方法です:

PHP コード



コードをコピーする

コード: $test->name();
//方法 2: 「::」記号を使用します
TEST::name()>

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

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

class TEST1
{
public $name = 0 ; L パブリック関数名 () {
$ this-& gt; name = $ this-& gt;
}} $ test1 = 新しい test1;
$ test1 -& gt; // $name1 == 1
$test2->name(); //$name1 == 1

/*----- -------- ----------------* / Class Test2 {
public static $ name = 0; / $name = = 2
?>

クラス間の関係:

クラス間の関係、主に抽象化、インターフェース、継承:

PHPコード



コードをコピー

コードは以下の通りです:


}

class TEST2 extends TEST1implements TEST3 // 継承
{
public function name1( )

?>

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

継承プロセス中に、サブクラスは同じ名前の親クラスのメソッドを上書きします。このとき、サブクラスで親クラスのメソッドを呼び出す必要がある場合は、parent キーワードまたはクラスを使用できます。名前と呼び出す「::」記号:

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

class TEST1 extends TEST2
{
public function name()
{ :name2();
}
}
class TEST2
{
public function name2()
{
echo 'value2'; > もう 1 つは、self、parent、クラス名を使用してクラス内に便利な呼び出しチャネルを確立することです。

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

PHPコード
class TEST
{
public function name( )
」 }

}
}

$test1 = 新しいテスト;
$test3 = $test1; // true : false; $test3 ? true : false; // true
echo $test2 == $test3 ? // true
echo $test1 === false; $test3 ? true : false; // true
echo $test2 === $test3 ? true : false

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

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

PHP コード



コードをコピー

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


$test3 = clone $test1?>

クラスのフック:

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

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

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

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

__sleep
serialize() 関数を使用してクラスに対してシリアル操作を実行する場合、このフックは

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

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

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

__clone になります
clone キーワードを使用してクラスをコピーする場合、このフックは呼び出されます

__get
クラス内の属性値を取得する場合、このフックは

__set のときに呼び出される

__isset クラスで属性値を設定するとき、このフックが呼び出されます
isset() 関数を使用してクラスの属性値を決定するとき、このフックが呼び出されます

__unset
When unset() 関数を使用して属性値を破棄すると、このフックが呼び出されます

クラスに関するヒント:

クラスをインスタンス化するとき、このフォームを使用して __construct フックにパラメーターを渡すことができます:エコー $ para; Echo $para; = new TEST('value'); // 表示値



foreach() 関数は、クラスまたはオブジェクト内の属性を走査するために使用できます。 、および private が最初に状況に応じて判断されます:
PHP コード
コードをコピー

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


class TEST
{ public $property1 = 'value1 ';
public $property2 = 'value2';

public function name()
{
Print "$key => $valuen";
$test = new TEST; gt;name();
?>


クラス内のメソッドにパラメータを渡すとき、ここでは配列とオブジェクトの判定のみがサポートされています:
PHP コード コードをコピー
コードは次のとおりです:

クラス TEST1
{
パブリック関数名(TEST2 $para)


}
}

クラス TEST2
{

}

$test2 = 新しい TEST2;
$test1 = 新しいテスト1 ; >



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

(1) var デフォルト属性を使用します。これは自動的に public に変換されます。

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




http://www.bkjia.com/PHPjc/318761.html

www.bkjia.com

http://www.bkjia.com/PHPjc/318761.html技術記事次のようにコードをコピーします。 ?php classTEST { constNAME='value';//Constant public$name='value';//Attribute publicfunctionname()//Method { echo'value'; } ?そしてその方法は…
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート