ホームページ  >  記事  >  バックエンド開発  >  PHP5権威プログラミング読書学習ノート電子書籍ダウンロード付き_PHPチュートリアル

PHP5権威プログラミング読書学習ノート電子書籍ダウンロード付き_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:17:391008ブラウズ

PHP 5 Power Programming PDF ダウンロードアドレス http://www.jb51.net/books/28207.html

PHP4 では、コンストラクターの名前として __construct() は使用されず、クラスの名前を使用する必要があります。 C++ と同様のメソッドです。
PHP5 では、コンストラクターの新しい統一命名メソッド __construct() が使用されます。 もちろん、クラス名を使用することもできます。
ただし、両方を同時に使用すると、システムはデフォルトで __construct() を使用します。

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

class Person{
//PHP4 のメソッド
public function Person(){
echo "PHP4 のメソッド"
}
// PHP5 推奨メソッド
public function __construct(){
echo "PHP5 推奨メソッド"
}
$p1=new Person()?>


;値はコンストラクターで返すことができるため、コンストラクターからエラーを生成する最も一般的な方法は例外をスローすることです。
コードは次のとおりです:


コードをコピーします
コードは次のとおりです: class Person{
private $_age;
public function __construct($age){
try {
if ($age<120 ){
$this->_age=$age;
}else {
throw new Exception("入力した年齢が古すぎます")
}
}catch (Exception $e); {
echo $e-> getMessage();
}
}
}



アクセス制御

オブジェクトのプロパティのアクセス保護は、 OOP
パブリック: どこでも使用可能 アクセス可能
保護: クラスメンバーは、オブジェクト内のメソッドから、そのクラスのサブクラスおよび親クラスからアクセス可能
プライベート: クラスメンバーは、そのクラスからのみアクセス可能オブジェクト内のメソッドからはアクセスできず、継承されたクラスのメンバーからはアクセスできません。プライベート メンバーは継承されないため、関連する 2 つのクラスが同じ名前のプライベート変数を宣言できます。 つまり、どちらのクラスも自身のプライベート プロパティのみを参照でき、プライベート メンバー間には関係がありません。 例:



コードをコピーします

コードは次のとおりです:
/*** MyClass を定義する */
class MyClass
{
public $public = 'Public';保護された = ' 保護済み ';
関数 printHello()
echo $this->protected; }
}
$obj = new MyClass();
echo $obj->public; // この行は正常に実行できます
echo $obj->protected; // この行は致命的なエラーを生成します
echo $ obj-> ;private; // この行も致命的なエラーを生成します
$obj->printHello(); // 出力 Public、Protected、および Private
/**
* MyClass2 を定義する
*/
class MyClass2 extends MyClass
{
// public と protected は再定義できますが、private は再定義できません $protected = 'Protected2';
function printHello()
{
echo $this->public
echo $this->protected;
echo $this ->private;
}
}
$obj2 = new MyClass2();
echo $obj->public; // この行は通常通り実行できます
echo $obj2->private;
echo $obj2->protected; // この行は致命的なエラーを生成します
$obj2->printHello(); // Public と Protected2 を出力しますが、Private は出力しません


注: クラス内のすべてのメソッドは必須ですpublic、protected、または private のキーワードを使用して定義できます。これらのキーワードが設定されていない場合、メソッドはデフォルトの public に設定されます。

静的メソッド

静的メソッドは、オブジェクトインスタンスを作成せずにクラス名::静的メソッドを通じて呼び出すこともできます。また、オブジェクトインスタンス内の$this->staticメソッドまたはself::staticメソッドを通じて呼び出すこともできます。



コードをコピーします

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

class Foo { public static $my_static = 'foo';
public static function staticValue() {
return self:: $my_static;/ /クラス内の静的メンバーにアクセスするには、self キーワードを使用します
} } $obj=new Foo(); echo $obj->staticValue();//メソッド 1echo Foo::staticValue ();// 方法 2?>
オブジェクトのクローン
PHP4では、新しいオブジェクトが返されると、「オブジェクトそのもの」が返されます
PHP5では、新しいオブジェクトが返されると、「オブジェクトを指すハンドル」が返されます
これは、PHP5ではという意味です、オブジェクト インスタンス ($obj1) を別の変数 ($obj2) に割り当てる場合、両方のオブジェクトは同じメモリ領域を指します。
例:
コードをコピーします コードは次のとおりです:

class test{
public $str;
$obj1=new test(); >str=" obj1";
$obj2= $obj1;
echo $obj1->str;// "obj1" を出力します


$obj1 と $obj2 は同じメモリ領域を指しているため、いずれかのオブジェクトを使用してメンバー変数の値を変更すると、他のオブジェクトに影響を与えます。
ただし、オブジェクトのコピー (2 つの独立したメモリ領域) を作成する必要がある場合があります。このとき、言語コマンド clone を使用できます。以下の例を参照してください。


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

class test{ public $str; $obj1=new test(); $obj2= clone $obj1 ;
$obj2-> ;str="obj2";
echo $obj1->str;//"obj2" が出力されます



parent:: および self::
self::現在のクラスを指し、通常は静的メンバー、メソッド、定数にアクセスするために使用されます
parent:: は親クラスを指し、親クラスのコンストラクターとメソッドを呼び出すためによく使用され、また次の目的にも使用されます親クラスのメンバーと定数にアクセスします
注: 親クラスの特定の名前の代わりに、parent: : を使用する必要があります。これにより、クラスの階層を簡単に変更できるようになります。
例:


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

class Father{
public function __construct(){
echo "親クラスのコンストラクターを呼び出す
";
} } class Son extends Father { public function __construct(){ parent::__construct();//メソッド1
// Father::__construct();//メソッド2
echo "のコンストラクタを呼び出すサブクラス" ;
}
}
$son=new Son();
?>


結果:
親クラスのコンストラクターを呼び出す
サブクラスのコンストラクターを呼び出す
方法 1 を使用することをお勧めします。上記の理由により。

インスタンスのインスタンス



コードをコピー

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


class Rectangle { public $name=__CLASS__
}
class Square extends Rectangle { public $名前= __CLASS__; } クラス Circle{ public $name=__CLASS__
}
function checkIfRectangle($shape){
echo $shape->name;オブジェクトは Rectangle クラスのインスタンスではありません";
}
}
checkIfRectangle(new Square());//出力: Square
checkIfRectangle(new Circle());//出力: オブジェクトは Rectangle クラスのインスタンスではありません
?>


注: __CLASS__ は、現在のクラスの名前を保存するために使用される特別な定数です。



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

www.bkjia.com

tru​​e

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

技術記事
PHP 5 Power Programming PDF ダウンロードアドレス http://www.jb51.net/books/28207.html PHP4 では、コンストラクターの名前として __construct() は使用されず、クラスの名前を使用する必要があります。

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