7.1 類的概念

類是對一個東西的描述,對象是根據(jù)這個描述實現(xiàn)出來的東西

類在PHP中表現(xiàn)的形式是 class ,對象的表現(xiàn)形式是 object

一個類中可以有自己的常量、變量(稱之為屬性)、函數(shù)(稱之為方法)。

// 我是一個 '人' 的類
class People{

    // 屬性列表
    public $name;
    public $age;

    // 構(gòu)造方法
    public function __construct(string $n, int $a){
        $this->name = $n;
        $this->age = $a;
    }
    
    // 方法列表
    public function say(){
        echo "<p>我叫:{$this->name}</p>";
        echo "<p>今年:{$this->age} 歲</p>";
    }
    public function eat(){
        echo "<p>我需要吃飯喝水</p>";
    }
    public function sleep(){
        echo "<p>我需要睡覺</p>";
    }
}

// 我是一個 '人' 的對象,這步操作也叫實例化
$people = new People('劉國際', 26);

// 說句話看看
$people->say();

在類的普通方法(非靜態(tài))中使用 $this 變量可以獲取到當(dāng)前類的實例對象,但記得不要嘗試去修改它。

通過 new 關(guān)鍵字可以將一個 class 類實例化,得到一個對象。

當(dāng)把一個對象賦值給另一個變量時,默認(rèn)便是引用賦值, 可以通過 clone 關(guān)鍵進(jìn)行傳值賦值,也就是克隆一個新的對象。

// 克隆一個對象
$temp = clone $people;

上例中展示了一般情況下創(chuàng)建實例對象的方法,但還可以通過一些別的方式來創(chuàng)建對象。

// 創(chuàng)建一個對象
$className = "People";
$temp1 = new $className("劉德華", 55);
var_dump($temp1);

// 創(chuàng)建一個對象
$temp2 = new $temp1("張學(xué)友", 50);
var_dump($temp2);

再看一些創(chuàng)建對象的方法

// 定義類
class Foo{
    public $name = "iGuoji";
    public static function byStatic(){
        return new static;
    }
}

// 實例化
$foo = new Foo();

// 通過方法實例化
$fooStatic = Foo::byStatic();

// 兩者都是 Foo類 的實例
($foo instanceof Foo) and ($fooStatic instanceof Foo);
($foo instanceof $fooStatic) and ($fooStatic instanceof $foo);

// 兩者相等,但不絕對相等
($foo == $fooStatic) and ($foo !== $fooStatic);




// 定義類
class Bar extends Foo{
    public function bySelf(){
        return new self;
    }
    // 創(chuàng)建父類的對象
    public function byParent(){
        return new parent;
    }
}

// 實例化
$bar = new Bar();

// 通過方法實例化
$barStatic = Bar::byStatic();
$barSelf = Bar::bySelf();
$barParent = Bar::byParent();

// 前三者都是 Bar類 的實例
($bar instanceof Bar) and ($barStatic instanceof Bar) and 
    ($barSelf instanceof Bar);

// 四者都是 Foo類 的實例
($bar instanceof Foo) and ($barStatic instanceof Foo) and 
    ($barSelf instanceof Foo) and ($barParent instanceof Foo);

// 除了第四個外,其他都相等
$bar != $barParent;

// 第四個和之前的 Foo類 實例相等
$barParent == $foo;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,767評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,788評論 0 9
  • 重點掌握 3 類對象和方法 對象就是一個物體 類的獨特存在就是一個實例,對實例進(jìn)行操作叫做方法。方法可以應(yīng)用于類或...
    Coder大雄閱讀 1,285評論 0 2
  • 秋月籠煙春不曉,拍遍欄干人己老。漢家錦瑟五十弦,弦弦掩抑離別難。窗外依稀見人影,卷簾漠漠花枝冷。 空中又見北飛雁,...
    倚劍白云天閱讀 273評論 0 0