這篇與上一篇隔的時間有點長啊,並且中間還插入了一個小項目。不過沒關係,《邊記邊學PHP》還會一直進行去。
PHP物件導向程式設計
(2)類別屬性
所謂類別屬性,就是在類別中宣告的變數。它與在類別外宣告的變數的差別就是前面加上了修飾權限,也就是上一篇的public/private/protected。例如我要聲明一個學生類,裡麵包含學生的學號,姓名,性別,年齡,班級等。那我可以如下聲明:
<?php class Student{ private $sid; private $name; private $gender; private $age; private $grade; public getSid(){ return $this->sid; } public getName(){ return $this->name; } public getGender(){ return $this->gender; } public getAge(){ return $this->age; } public getGrade(){ return $this->grade; } public setSid($sid){ $this->sid = $sid; } public setName($name){ $this->name = $name; } public setGender($gender){ $this->gender = $gender; } public setAge($age){ $this->age = $age; } public setGrade($grade){ $this->grade = $grade; } }
在上面的學生類中,我聲明了五個屬性,全部聲明成了private私有型,那麼在類的外面是不能直接訪問他們的,所以我為它們每個屬性提供了兩個方法,分別是去訪問他們和設定它們的值。一般在宣告類別的時候,屬性宣告成私有,而成員方法宣告成公有,那麼外面就能透過公有方法去存取私有屬性了。並且在宣告存取和設定兩種方法的時候一般使用getXXX()和setXXX()這種形式,XXX第一個字母一般大寫。當然也可以聲明成公有屬性,那麼在類別外就可以直接給它們賦值,並且存取了。但還是建議聲明成私有屬性,因為以後如果規範了的話,每一個類會單獨生命成一個php文件,專門存放這個類,聲明成私有的會保證這個類的對象裡面的值不會隨意更改,保證了安全性。
在聲明屬性的同時,也可以像類外變數一樣,宣告的同時賦值。
這裡注意:
屬性可以儲存一個值,一個數組,甚至是另一個類別的物件。例如上面的學生類別中給他加上學校屬性,這個學校也是一個類,包括學校的名字,地址等。我先聲明學校類別
class School{ private $name; private $address; public getName(){ return $this->name; } public getAddress(){ return $this->address; } public setName($name){ $this->name = $name; } public setAddress($address){ $this->address = $address; } }那麼我在學生類中就可以這麼加入學校屬性:
<?php class Student{ ... private $school; ... public getSchool(){ return $this->school; } ... public setSchool($school){ $this->school = $school; } }這樣值
<span style="white-space:pre"> </span>$school1 = new School(); <span style="white-space:pre"> </span>$school1->setName("大连理工大学"); <span style="white-space:pre"> </span>$school1->setAddress("大连"); <span style="white-space:pre"> </span>$stu1 = new Student(); <span style="white-space:pre"> </span>$stu1->setSchool($school1);這樣值參的時候注意傳的是對象。例如:
我先聲明一個學校:
<span style="white-space:pre"> </span>$stu1->getSchool()->getName();
我先聲明一個學校:
<span style="white-space:pre"> </span>public static $graduate;
這樣在訪問它的學校的時候就是一個對象了,如果我想知道這個學生所在的名稱,我所在的學校名稱,我的學校就知道這個學生要這樣訪問:
class Phone{ const IPHONE = 1; const ZTE = 2; const HUAWEI = 3; //这里面各种属性 }
使用getSchool方法得到的是一個School對象,那麼在使用School物件中的getName方法存取它的名字。 這裡在類別裡面存取變數的時候,使用了$this這個關鍵字,那麼接下來就說一下this關鍵字。
(3)$this關鍵字不管是聲明成公有還是私有還是保護的成員變量,在類裡面訪問自己的變量一定會有的,那麼就要用到$this字。 $this關鍵字在我看來就是指類自己本身,我也可以理解成自己把自己當成了一個物件去呼叫自己的屬性。這裡要注意,在宣告變數的時候我們使用了$符號,但是如果使用$this存取的時候,只有this加$符號,後面的屬性就不要加了,如果加上會報錯。具體用法還是參照上面的代碼。當然如果是外面宣告的物件呼叫的時候跟$this一樣,物件要加$符號,後面不加。
(4)靜態屬性
對於靜態屬性我沒有想到怎麼去解釋它,不過我看到書上這句話說得很好:靜態屬性常用來表示一個與某個特定特定類別有關而與實例物件無關的持續值。我們可以把靜態屬性看成是累得全域變數。靜態屬性的一個重要特性是,在存取靜態屬性時不需要建立類別的實例,也就是不需要定義類別的物件。
🎜🎜🎜在書上舉了一個車類裡面的銷售數量的靜態屬性,也就是說不管是誰買的車,反正是賣了,那麼我的銷售數量就要加1。但我上面已經舉了學生與學校的例子,我就再接著我的例子說,我想到了一個學校畢業生的這個屬性,也就是說不管你是誰,只要從我的學校畢業了,那麼我的學校畢業生的人數就會多1。那我可以這麼聲明:🎜🎜🎜rrreee🎜🎜🎜也就是在變數的前面加上static這個關鍵字。那我在訪問這個靜態屬性的時候就不要使用物件去訪問了,直接使用這個類別去訪問,School::$graduate = ...;就可以了。這也就是上面說的不需要定義類別的物件可以去存取。這裡我可以用張圖來說明靜態屬性與普通屬性的差別:🎜🎜静态属性只占这个内存,不管存不存在对象实例,除非这个类没了,否则会一直占有自己的内存。而普通的属性在每次声明对象的时候都会分配内存。
静态属性一般声明成公有的。
(6)类常量
与类外的普通常量一样,类常量也是存储一个固定的值。使用const关键字进行声明,这里不需要加权限修饰。在访问的时候跟访问静态属性一样需要使用类名::(双冒号)加常量名来访问。比如如果我声明一个手机类,手机有各种型号,那么我可以把各个手机型号用常量来存储,在给手机型号属性赋值的时候使用这些常量来赋值就好了。但是可能有这种疑惑,为什么要使用常量,我直接声明不就行了。那么可以这样理解:
class Phone{ const IPHONE = 1; const ZTE = 2; const HUAWEI = 3; //这里面各种属性 }我这个是一个手机类,里面声明了三个常量,这里注意,声明常量不需要$符号,并且常量的名字一般大写。但是你注意我在里面存储的是int型的数据,如果我给手机型号赋值的时候虽然给他赋值是类似:$this->type = ZTE;但是我的型号存的是int型的数据,那么就会占内存少,如果我不适用常量$this->type = 'ZTE';这样我就存的字符串。并且使用常量可以提高编译速度。
这是我理解的常量的优点。但是我没怎么用过。
下一篇继续面向对象。
以上就介绍了边记边学PHP-(十二)面向对象编程2,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP在現代化進程中仍然重要,因為它支持大量網站和應用,並通過框架適應開發需求。 1.PHP7提升了性能並引入了新功能。 2.現代框架如Laravel、Symfony和CodeIgniter簡化開發,提高代碼質量。 3.性能優化和最佳實踐進一步提升應用效率。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP類型提示提升代碼質量和可讀性。 1)標量類型提示:自PHP7.0起,允許在函數參數中指定基本數據類型,如int、float等。 2)返回類型提示:確保函數返回值類型的一致性。 3)聯合類型提示:自PHP8.0起,允許在函數參數或返回值中指定多個類型。 4)可空類型提示:允許包含null值,處理可能返回空值的函數。

PHP中使用clone關鍵字創建對象副本,並通過\_\_clone魔法方法定制克隆行為。 1.使用clone關鍵字進行淺拷貝,克隆對象的屬性但不克隆對象屬性內的對象。 2.通過\_\_clone方法可以深拷貝嵌套對象,避免淺拷貝問題。 3.注意避免克隆中的循環引用和性能問題,優化克隆操作以提高效率。

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境