PHP 物件基礎知識

2021-08-29 09:35:24 字數 2769 閱讀 9014

最近開始重新學習物件知識,其實也算是初步深入學習物件和設計模式,希望自己會堅持下去,保持更新

還記得,剛開始學習 php 的時候,學到到方法和物件時有乙個很大的疑問,物件與方法相比較那麼麻煩(需要設定屬性,給屬性賦值,例項化類,呼叫)為什麼還要用物件呢?隨著逐步的深入才發現,自己之前的想法是有多可笑,下面給乙個簡單的示例。

function get_max($val_1, $val_2)

$max = get_max(23,34);

echo $max;

echo '

********************==這是華麗的分隔符********************==

';// 類

class test

public function get_max()

}// 例項化類,$test 是由類 test 生成的物件

$test = new test(83, 34);

echo $test->get_max();

可以看到使用物件比單純的方法多了很多**,但是為什麼還要使用物件呢,我們下一節詳細介紹,別走開,往下看

什麼是物件?什麼是類?很多人會把兩個搞混淆,我們可以把類看做乙個工廠,產出的產品就是物件,也就是物件是類的實現。

乙個類通常包含屬性、方法。舉個?:有乙個生產麵包的機器(類),生成麵包需要一些材料(屬性),材料包含麵粉、雞蛋、水(不熟悉)。有了材料就可以運作生成麵包了,這時機器會把準備好的材料放一起處理(方法)生成麵包。

關鍵字也是很重要的概念,用來決定宣告的屬性或方法的可見性,包含: public、protected、private。乙個屬性或方法設定為 public 就代表無論在物件內還是物件外都可以被使用,比如麵包機裡如果有乙個攪拌機(僅限如果),如果這個攪拌機設定為public,則這個攪拌機可以被任何品牌的麵包機使用。如果設定為 protected,則只能在同品牌的麵包機中使用(繼承的類)。如果設定為private則只能被自己用。

回到上節問題,對比方法,問什麼使用物件?因為方便,沒錯真的方便。因為物件有以下幾個特點:

封裝:顧名思義,就是把類的屬性和方法封裝起來,設定許可權(public|protected|private),如下:

class test

protected function get_max()

}$test = new test(83, 34);

echo $test->get_max();

封裝的好處是安全、可控。

以上**因為引用了 protected 宣告的方法,因此會報如下的錯誤

fatal error: uncaught error: call to protected method studydesignmode\test::get_max() from context '' in ...

同樣顧名思義,就是繼承分類的方法或屬性,只能繼承 public | protected 關鍵字宣告的方法或屬性。繼承的主要作用是多個不同的類都需要同樣的乙個方法,可以使用繼承。比如多個**頁面(每個頁面都是單獨的類)都需要驗證是否登入,這時候可以定義乙個父類,裡面驗證是否登入,再由需要驗證登入的類繼承,這樣就不需要每個類都寫一次驗證。

class test

protected function getmax()

protected function getmin()

}class testsub extends test

// 簡單功能測試

public function printmaxvalue()

public function printminvalue()

}$test = new testsub(83, 34);

echo '

********************==這是華麗的分隔符 獲取最大值********************==

';echo $test->printmaxvalue();

echo '

********************==這是華麗的分隔符 獲取最小值********************==

';echo $test->printminvalue();

結果:

********************==這是華麗的分隔符 獲取最大值********************==

83********************==這是華麗的分隔符 獲取最小值********************==

34就是讓具有繼承關係的不同類物件重寫類中的方法(兩個類中有相同名稱的方法),典型的應用是抽象類(abstract)和介面類(inte***ce)。如下:

abstract class vehicle

class car extends vehicle

}class bicycle extends vehicle

}$car = new car();

echo $car->run();

echo '

********************==這是華麗的分隔符********************==

';$bicycle = new bicycle();

echo $bicycle->run();

結果:

速度100

********************==這是華麗的分隔符********************==

速度15

PHP 物件基礎知識

還記得,剛開始學習 php 的時候,學到到方法和物件時有乙個很大的疑問,物件與方法相比較那麼麻煩 需要設定屬性,給屬性賦值,例項化類,呼叫 為什麼還要用物件呢?隨著逐步的深入才發現,自己之前的想法是有多可笑,下面給乙個簡單的示例。function get max val 1,val 2 max ge...

PHP 物件導向 基礎知識

物件導向的思想 一種理論 優勢 簡化 量 提高團隊效率 三個元素 五個原則 早期 硬體不標準 所有程式設計面向過程的處理 所有的情況必須寫出來 類 class 實際上是對某種型別的物件定義變數和方法的原型。它表示對現實生活中一類具有共同特徵的事物的抽象,是物件導向程式設計的基礎。1類 2物件 特徵1...

php基礎知識

2.3 語法 就像前面提到的一樣,你可以混合編寫你的php 和html 因此你必須有辦法將兩者區別開來。以下就是你可以採用的幾種方法。你可以選用其中一種你最適應的並且就這樣堅持這種方法!從html中分離 以下是可以使用的方法 注釋 php支援c,c 和unix風格的注釋方式 c,c 風格多行注釋 c...