PHP4中,不使用__construct()作為構造函數的名字,必須使用類的名字定義一個方法,就像在C++中一樣。 PHP5中,使用新的統一的 " /> 国产亚洲sss在线播放,国产第二十三页浮力影院,免费一级成人免费观看

一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

PHP5權威編程閱讀學習筆記 附電子書下載

php 5 權威編程(php 5 Power Programming) PDF下載地址 http://www.jb51.NET/books/28207.html 

php4中,不使用__construct()作為構造函數的名字,必須使用類的名字定義一個方法,就像在C++中一樣。
php5中,使用新的統一的構造函數命名方式:__construct(),當然,使用類名同樣也是可以的。
但是,你如果兩個同時使用的話,系統默認會使用__construct()的形式。
復制代碼 代碼如下:
<?php
class Person{
//php4中的方法
public function Person(){
echo "php4中的方法";
}
//php5推薦使用的方法
public function __construct(){
echo "php5推薦使用的方法";
}
public function say(){
}
}
$p1=new Person();
?>

在構造函數中不能返回值,所以從構造函數內產生一個錯誤最常用的做法就是拋出一個異常。
代碼如下:
復制代碼 代碼如下:
<?php
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();
}
}
}
$p1=new Person(121);
?>

訪問控制
對象屬性的訪問保護是OOP的一個關鍵范例
Public:可以在任何地方被訪問
Protected:類成員可以被其所在類的子類和父類從對象內部的方法訪問
Private:類成員只能被其所在類從對象內部的方法訪問,而無法從繼承類的成員中訪問到。因為私用成員不會被繼承,所以兩個相關的類完全可以分別聲明一個名字相同的私有變量。
也就是兩個類都只能看到自己的私有屬性,私有成員之間是沒有關系的。
例子:
復制代碼 代碼如下:
<?php
/**
* Define MyClass
*/
class MyClass
{
public $public = 'Public';
protected $protected = 'Protected';
private $private = 'Private';
function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}
$obj = new MyClass();
echo $obj->public; // 這行能被正常執行
echo $obj->protected; // 這行會產生一個致命錯誤
echo $obj->private; // 這行也會產生一個致命錯誤
$obj->printHello(); // 輸出 Public、Protected 和 Private
/**
* Define MyClass2
*/
class MyClass2 extends MyClass
{
// 可以對 public 和 protected 進行重定義,但 private 而不能
protected $protected = 'Protected2';
function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}
$obj2 = new MyClass2();
echo $obj->public; // 這行能被正常執行
echo $obj2->private; // 未定義 private
echo $obj2->protected; // 這行會產生一個致命錯誤
$obj2->printHello(); // 輸出 Public、Protected2,但不會輸出 Private

注意:類中的方法都必須使用關鍵字public、protected 或 private 進行定義。如果沒有設置這些關鍵字,則該方法會被設置成默認的 public。
靜態方法
靜態方法可以不創建對象實例就通過 類名::靜態方法 來調用,也可以在一個對象實例中通過$this->靜態方法或self::靜態方法來調用。
復制代碼 代碼如下:
<?php
class Foo
{
public static $my_static = 'foo';
public static function staticValue() {
return self::$my_static;//在類中訪問靜態成員使用self關鍵字
}
}
$obj=new Foo();
echo $obj->staticValue();//方式一
echo Foo::staticValue();//方式二
?>

克隆對象
php4中,new一個對象的時候,返回的是“對象本身”
php5中,new一個對象的時候,返回的是“指向對象的句柄”
這意味著在php5中,將對象實例($obj1)賦值給另一個變量($obj2)的時候,兩個對象都是指向同一塊內存區域。
比如 :
復制代碼 代碼如下:
<?php
class test{
public $str;
}
$obj1=new test();
$obj1->str="obj1";
$obj2= $obj1;
$obj2->str="obj2";
echo $obj1->str;//將輸出“obj1”
?>

由于$obj1和$obj2指向的是同一塊內存區域,因此使用任何一個對象修改其中的成員變量的值的時候,都會影響到另一個對象。
但是在有些時候,我們確實需要復制一個對象的拷貝(兩塊相互獨立的內存區域),這時候可以使用語言命令clone
參考下面的例子;
復制代碼 代碼如下:
<?php
class test{
public $str;
}
$obj1=new test();
$obj1->str="obj1";
$obj2= clone $obj1;
$obj2->str="obj2";
echo $obj1->str;//將輸出“obj2”
?>

parent::和self::
self::指向當前類,而且通常用來訪問靜態成員,方法和常量
parent::指向父類,而且它經常被用來調用父類的構造函數和方法,也可以用來訪問父類的成員和常量
注意:你應該使用parent::而不是父類的某個具體的名字,因為這樣可以令你方便的更改你的類的層次。
例子:
復制代碼 代碼如下:
<?php
class Father{
public function __construct(){
echo "調用父類的構造函數<br>";
}
}
class Son extends Father {
public function __construct(){
parent::__construct();//方式一
// Father::__construct();//方式二
echo "調用子類的構造函數";
}
}
$son=new Son();
?>

結果:
調用父類的構造函數
調用子類的構造函數
推薦使用方式一,原因上面已經說了。
instanceof實例
復制代碼 代碼如下:
<?php
class Rectangle {
public $name=__CLASS__;
}
class Square extends Rectangle {
public $name=__CLASS__;
}
class Circle{
public $name=__CLASS__;
}
function checkIfRectangle($shape){
if ($shape instanceof Rectangle ){
echo $shape->name;
}else {
echo "該對象不是Rectangle類的實例";
}
}
checkIfRectangle(new Square());//輸出:Square
checkIfRectangle(new Circle());//輸出:該對象不是Rectangle類的實例
?>

注:__CLASS__是一個特殊的常量,用來存儲當前類的名字

php技術PHP5權威編程閱讀學習筆記 附電子書下載,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产成人精品午夜视频' | 国产精品色综合久久 | 久久综合狠狠综合狠狠 | 国产91精品系列在线观看 | 亚洲区小说区激情区图片区 | 国产做受视频激情播放 | 亚洲伊人精品 | 久久精选视频 | 午夜小视频在线观看 | 久久九九久精品国产 | xxxxxx日本处大片免费看 | 一级毛片国产真人永久在线 | 国产成人精品日本亚洲网址 | 日本三级一区二区三区 | 亚洲人成伊人成综合网久久久 | 好吊逼 | 欧美在线看欧美高清视频免费 | 亚洲系列中文字幕一区二区 | 可以直接看的av网址站 | 国产福利在线观看永久视频 | 亚洲狠狠婷婷综合久久久久 | 热久久国产欧美一区二区精品 | 成年人国产视频 | 精品阁| 91李宗精品72集在线观看 | 国产在线观看91精品2022 | 98bb国产精品视频 | 日韩中文字幕免费观看 | 一级做a爰片欧美aaaa | 国产亚洲高清在线精品99 | 欧美精品亚洲精品日韩经典 | 黄色小视频在线看 | 精品国产品国语在线不卡丶 | 成人在线精品视频 | 免费精品久久久久久中文字幕 | 亚洲欧美色中文字幕 | 99热这里有免费国内精品 | 人人擦人人 | 天天综合干| 韩国精品一区视频在线播放 | 最新国产毛片 |