1. オブジェクト指向とクラス
オブジェクト指向プログラムでは、オブジェクトとは、格納されたデータとこれらのデータを操作するための操作メソッドの固有の識別可能なコレクションです。
カプセル化、多態性 (PHP では、クラス メンバー関数のみが多態性を持つことができ、通常の関数はサポートされません)、統合。
2. 特殊関数
例えば、コンストラクター (__construct())、デストラクター (__destruct())、set、get などはすべてdouble アンダースコア __ で始まる二重アンダースコアは、これらの関数が PHP で特別な意味を持ち、これらの関数に直接アクセスしないことを示します。
3. このポインター
クラスでは、特別なポインター $this にアクセスできます。
4. 修飾子
クラス外からプロパティにアクセスできるかどうかは修飾子によって決まります。
public: 書かれていない場合、デフォルトはこれです。パブリック プロパティまたはパブリック メソッドには、クラスの内部と外部の両方でアクセスできます。
private: プライベート プロパティとメソッドはクラス内でのみアクセスでき、プライベート プロパティとメソッドは継承されません。
protected: 保護されたプロパティとメソッドはクラス内でのみアクセスできますが、継承することはできます。
5. 継承の拡張
PHP は複数の統合をサポートしていませんが、「インターフェース」の機能があります
class B extends A
{
}
6. インターフェース
多重継承を実装する必要がある場合は、以下を使用できます。 PHP のインターフェイスは、Java などの他のオブジェクト指向プログラミング言語でサポートされているインターフェイスの実装と同様に、多重継承の問題に対する解決策と見なされます。
インターフェイスの考え方は、インターフェイスを実装するクラスが実装する必要がある一連の関数を指定することです。
例:
インターフェース Displayable
{
function display();
クラス webPage 実装 Displayable
{
関数 display()
{
//
}
}
7. サブクラスでのオーバーロード
サブクラス内で、同じ属性と操作を再度宣言することも有効です。
また、parent キーワードを使用すると、B から A::operation を呼び出すなど、親クラスの操作の初期バージョンを呼び出すことができることにも注意してください。
parent::operation(); 🎜>
8. 最後のキーワードは、継承とオーバーロードを禁止します。
は、次のように関数の前またはクラスの前に配置できます。最終関数の操作()
{...}
関数のオーバーロードは許可されていません
最終クラス A
{...}
クラスは順番にリロードされません
9. PHP の終了タグと開始タグの柔軟な処理
PHP によって処理された内容を関数本体内に表示する必要がある場合は、PHP 終了タグ (?>) を使用し、HTML を入力してから、関数本体内で PHP 開始タグ (cda00bbab35c4e67f340ba793adf0aa5
1e22bf3ae80d63bbe7158ab92e291ef0
2) 静的メソッドを実装します。 🎜 >
254b8d1e25da28ed7cb1dc43a55eae84
出力:
B
15. クローンオブジェクト
$c = clone $b;は、オブジェクト $b と同じクラスのコピーを作成し、同じ属性値を持ちます。
注: この動作を変更したい場合は、基本クラスに __clone() メソッドを追加します。このメソッドは、 clone キーワードを使用する場合には直接呼び出されないため、コンストラクターまたはデストラクターに似ています。このメソッドが呼び出されます。
オブジェクト参照を含むクラスのクローンを作成する場合は、2 番目の参照ではなく、オブジェクトの 2 番目のコピーを取得する必要がある場合があるため、__clone() メソッドをカスタマイズする必要があります。
16. 抽象クラス
抽象クラス これらのクラスはインスタンス化できず、クラス メソッドは実現されません。継承されるためにのみ使用され、各サブクラスに特定のメソッドが含まれ、オーバーロードされていることを確認してください。
抽象メソッドなど:
abstract actionX($param1, $param2);
抽象メソッドを含むクラスはそれ自体が抽象である必要があります:
抽象クラス A
{
抽象操作 > メソッドのオーバーロードは多くのオブジェクト指向プログラミング言語で非常に一般的ですが、柔軟な型と (実装が簡単な) オプションの関数パラメーターの使用に慣れているため、PHP ではあまり役に立ちません。
このメソッドを使用するには、次の例に示すように __call() メソッドを実装する必要があります。
public function __call($method, $p)
if ($method == "表示")
{
if (is_object($p[0]))
{
$ this-> displayObject($ p [0])); 0]));
🎜>
__call() メソッドは 2 つのパラメータを取る必要があります。最初のパラメータには呼び出されるメソッドの名前が含まれ、2 番目のパラメータにはメソッドに渡されるパラメータ配列が含まれます。 。
注: 私の理解では、display() メソッドを実装する必要はありません。他のいくつかのメソッドを実装する必要があります。
呼び出し例:
$ov = new オーバーロード;
$ov->display(array(1,2,3)); $ov->display('cat');
最初のものは displayArray() を呼び出し、2 つ目は displayScalar(); を呼び出します。
18. __autoload() メソッド
これはクラスメソッドではなく、別の関数です。この関数はクラス宣言の外で宣言できます。この関数が実装されている場合、まだ宣言されていないクラスをインスタンス化するときに自動的に呼び出されます。必要なクラスの初期化に使用されるファイルを含めるか、要求することを試みます。
例:
function __autoload($name)
{
include_once $name.".php";
19. イテレーターと反復の実装
PHP のオブジェクト指向エンジンは、foreach() メソッドによるループによるオブジェクトのすべての属性の取得をサポートしています。方法。例:
class myClass
{
public $a="5";
public $b="7"; >
public $c="9";
}
$x = new myClass;
foreach ($x として $attriute)
echo $attriute."df250b2156c434f3390392d09b1c9563";
}
より複雑な動作が必要な場合は、イテレータを実装できます。 (イテレータ)。イテレータを実装するには、IteratorAggregate インターフェイスを実装し、このクラスのインスタンスを返す getIterator メソッドを定義する必要があります。このクラスは Iterator インターフェイスを実装する必要があります。
b9cd90cb5334ab1fd90c086fed490c75currentIndex 656699388cd4dd6a267e677ebec44992obj->data[$this->currentIndex];
}
function next()
{
$this->currentIndex++;
}
}
class Object implements IteratorAggregate
{
public $data =配列();
function __construct($in)
{
$this->data = $in;
}
function getIterator()
{
return new ObjectIterator($this);
}
}
$myObject = new Object(array(2, 4, 6, 8, 10));
$myIterator = $myObject->getIterator();
for($myIterator->rewind(); $myIterator->valid(); $myIterator->next())
{
$key = $myIterator->key();
$value = $myIterator->current();
echo $key." => ".$value."df250b2156c434f3390392d09b1c9563";
}
?>
如果在このクラスには __toString() 関数が定義されており、そのクラスを印刷するときにこの関数が使用されます。
$p = 新しい印刷可能;echo $p;
实现如:
class Printable()
{
public $testone;
public $testtwo;
public function __toString()
{
}
}
注意:var_export()関数打印出力クラス内のすべてのプロパティ値。
20、Reflection(Reflection)API を使用します
例:
9d437fa44d3096d2e1074192f6522403".$class."bc5574f69a0cba105bc93bd3dc13c4ec"; ?> |
fd20c7d4a6505b08b1786ffb81ed75c5"home.php", "連絡先" =>"contact.php", 「サービス」 " => "services.php", 「サイト マップ」 => "map.php" ); // class ページの操作 public function __set($name, $value) { $ this->$name = $value; } public function Display() { echo "100db36a723c770d327fc0aef2ce13b1n93f0f5c25f18dab9d176bd4f6de5d30eん"; $this -> DisplayTitle(); $this -> 表示キーワード(); $this -> DisplayStyles(); echo "9c3bca370b5104690d9ef395f2c5f8d1n6c04bd5ca3fcae76e30b72ad730ca86dn"; $this -> DisplayHeader(); $this -> DisplayMenu($this->ボタン); echo $this->content; $this -> DisplayFooter(); echo "36cc49f0c466276486e50c850b7e4956n73a6ac4ed44ffec12cee46588e518a5en"; } public function DisplayTitle() { echo "b2386ffb911b14667cb8f0f91ea547a7".$this ->title."6e916e0f7d1e588d4f442bf645aedb2f"; } public function DisplayKeywords() { echo "bcd872ed873fd37c3849c8950a6dfc98
h1 { color:white; フォントサイズ:24pt; テキスト整列:中央; font-family:arial,sans-serif } .menu { color:white; フォントサイズ:12pt; テキスト整列:中央; font-family:arial,sans-serif; font-weight:bold } td { background:black } p { 色:黒; フォントサイズ:12pt; テキスト整列:両端揃え; font-family:arial,sans-serif } p.foot { color:white; フォントサイズ:9pt; テキスト整列:中央; font-family:arial,sans-serif; font-weight:bold } a:link,a:visited,a:active { color:white } 531ac245ce3e4fe3d50054a55f265927 6baf5124b256fcd1617c4b5ef51b7d42 3fa337141870a4b9a175dc1d4e3e553c4bc392bc370ad1713f4580befd59a4cdb90dd5946f0946207856a8a37f441edf b6c5a531a458a2e790c1fd6421739d1c 4a249f0d628e2318394fd9b75b4636b1TLA Consulting Pty Ltd473f0a7621bec819994bb5020d29372a b90dd5946f0946207856a8a37f441edf c1d9a40586aef19be999495a5c969c054bc392bc370ad1713f4580befd59a4cdb90dd5946f0946207856a8a37f441edf fd273fcf5bcad3dfdad3c41bd81ad3e5 f16b1740fad44fb09bfe928bcc527e08 74ef8263efdbc9d21dbd829f33834b86n"; echo " |
Class [ class Page ] { @@ D:\wamp\www\study\book\Chapter 06\page.inc 2-152 - Constants [0] { } - Static properties [0] { } - Static methods [0] { } - Properties [4] { Property [ public $content ] Property [ public $title ] Property [ public $keywords ] Property [ public $buttons ] } - Methods [10] { Method [ public method __set ] { @@ D:\wamp\www\study\book\Chapter 06\page.inc 16 - 19 - Parameters [2] { Parameter #0 [ $name ] Parameter #1 [ $value ] } } Method [ public method Display ] { @@ D:\wamp\www\study\book\Chapter 06\page.inc 21 - 33 } Method [ public method DisplayTitle ] { @@ D:\wamp\www\study\book\Chapter 06\page.inc 35 - 38 } Method [ public method DisplayKeywords ] { @@ D:\wamp\www\study\book\Chapter 06\page.inc 40 - 44 } Method [ public method DisplayStyles ] { @@ D:\wamp\www\study\book\Chapter 06\page.inc 46 - 74 } Method [ public method DisplayHeader ] { @@ D:\wamp\www\study\book\Chapter 06\page.inc 76 - 90 } Method [ public method DisplayMenu ] { @@ D:\wamp\www\study\book\Chapter 06\page.inc 92 - 107 - Parameters [1] { Parameter #0 [ $buttons ] } } Method [ public method IsURLCurrentPage ] { @@ D:\wamp\www\study\book\Chapter 06\page.inc 109 - 119 - Parameters [1] { Parameter #0 [ $url ] } } Method [ public method DisplayButton ] { @@ D:\wamp\www\study\book\Chapter 06\page.inc 122 - 136 - Parameters [4] { Parameter #0 [ $width ] Parameter #1 [ $name ] Parameter #2 [ $url ] Parameter #3 [ $active = true ] } } Method [ public method DisplayFooter ] { @@ D:\wamp\www\study\book\Chapter 06\page.inc 138 - 151 } } }
|