面向對象思想
面向對象程序設計(Object-Oriented Programming,OOP)是一種程序設計范型,同事也是一種程序開發方法。它將對象作為程序的基本單元,將程序和數據封裝其中,以提高軟件的重用性、靈活性和可擴展性。
面向過程、面向對象以及函數式編程被人們稱為編程語言中的三大范式(實際上,面向過程與面向對象都同屬於命令式編程),是三種不同編碼和設計風格。其中面向對象的核心思想是對象、封裝、可重用性和可擴展性。
面向對象是一種更高級、更抽象的思維方式,面向過程雖然也是一種抽象,但面向過程是一種基礎的抽象,面向對象又是建立在面向過程以上的更高層次的抽象,因此面向對象的理解也就不是那麼容易了。
類是我們隊一組對象的描述
在php裡,每個類的定義都以關鍵字class開頭,後面跟著類名,緊接著一對花括號,裡面包含有類成員和方法的定義。如下代碼所示
代碼如下 復制代碼class person{
public $name;
public $gender;
public function say(){
echo $this->name."is ".$this->gender;
}
}
接下來就可以產生這個類的實例:
代碼如下 復制代碼$student = new person();
$student->name="Tome";
$student->gender= "male";
$student->say();
$teacher= new person();
$teacher->name="kati";
$teacher->gender= "female";
$teacher->say();
這段代碼則實例化了person類,產生了一個student對象和teacher對象的實例。實際上也就是從抽象到具體的過程。
對類和對象的一些理解:
類定義了一系列的屬性和方法,並提供了實際的操作細節,這些方法可以用來對屬性進行加工。
對象含有類屬性的具體值,這就是類的實例化。正是由於屬性的不同,才能區分不同的對象。在上面例子裡,由於student和teacher的性別和姓名不一樣,才得以區分開二人。
類與對象的關系類似一種服務於被服務、加工與被加工的關系,具體而言,就如同原材料與流水線的關系。只需要在對象上調用類中所存在的方法,就可以對類的屬性進行加工,並且展現其功能。
打印student對象
print_r((array)$student);
var_dump($student);
序列化對象
代碼如下 復制代碼$str = serialize($student);
echo $str;
file_put_contents('store.txt',$str);
輸出結果:
0:6:"person":2:{s:4:"name";s:3:"Tom";s:6:"gender";s:4:"mail";}
反序列化對象
代碼如下 復制代碼$str = file_get_contents('store.txt');
$student = unserialize($str);
$student->say();