php面向對象基礎一
每學一門後端語言,都會先讓你瞭解什麼面向對象?現在我們就一起去了解什麼是面向對象。
什麼是面向對象?!什麼是面向過程?!
面向對象:把構成問題事務分解成各個對象,建立對象的目的描述某個事物在整個解決問題的步驟中的行爲。
面向過程:分析出解決問題所需要的步驟。
1.類
類的定義:
class 類名{
字段(屬性)
方法(函數)
}
繼承:extends
接口:interface
接口實現:implements
繼承:parent::方法名 或者類名::方法名
抽象類(方法):abstract
特別注意:解決類名的衝突可以使用命名空間 namespace
2.修飾符(public、private、protected)
修飾符 | 作用域 |
---|---|
public | 任意作用域 |
private | 類內 |
protected | 子類中 |
**3.include與require區別**
差異:二者出現的拋出的異常錯誤不一樣,當二者應用不存在的文件時,前者會拋出warring並且繼續進行下面的代碼,後者會拋出error不會繼續執行剩下的代碼。
Include:主要引入html文件
Require:主要用於引入php文件(嚴謹)
相同處:都可以用於引入文件
擴展:
require_once和include_once
require和require_once
Require:同一個文件多次會報錯
require_once:多次使用則會只引入一次(同一個文件引入只能引入一次)
Include和include_once
Include:可以多次引入
Include_once:多次使用則會只引入一次(同一個文件引入只能引入一次)
Require比require_once性能好
4.關鍵字(this、self)
this、self主要用於常量和靜態變量的使用
public static $st=666;
const PI = 3.1415926;
public function onlyRead(){
echo "靜態字段:<br>";
echo "類名讀取:".Person::$st."<br>";
echo "self讀取:".self::$st."<br>";
echo "this讀取:".$this::$st."<br>";
}
在類外訪問常量和靜態變量時,只能通過類名訪問。
5.靜態方法和變量
定義靜態變量:修飾符 static 變量名
定義靜態方法:修飾符 static function 函數名(){}
public static $st=666;
public static function setST($type){
// Person::$st = $type; //靜態字段賦值只能通過self、類名賦值 不可以通過$this
self::$st = $type;
}
6.常量(const)
定義常量:const 常量名 = 值
訪問常量的方法:
類外:
echo "類名讀取:".Person::PI."<br>"; //類名訪問
類中:
public function onlyReadConst(){
echo "const字段:<br>";
echo "類名讀取:".Person::PI."<br>";
echo "self讀取:".self::PI."<br>";
echo "this讀取:".$this::PI."<br>";
}
特別注意:
常量一旦定義就不可以修改其值。
7.屬性操作
自定義:set、get方法
public function getName(){
return $this->name;
}
public function setName($name){
$this->name = $name;
}
Php自帶API:魔法函數 __get(),__set()
public function __get($type){
return $this->$type;
}
public function __set($type,$value){
$this->$type = $value;
}
8.構造函數
(1)自定義構造函數
無參構造體
public function Person(){
echo "自定義無參構造體<br>";
}
自定義有參構造體
public function Person($name,$age=10){
echo "自定義有參構造體<br>";
$this->name = $name;
$this->age = $age;
}
(2)魔法構造函數
API無參構造體
public function __construct(){
echo "API實現無參構造體<br>";
}
API有參構造體
public function __construct($name,$age=100){
echo "魔法函數之有參構造體<br>";
$this->name = $name;
$this->age = $age;
}
特別注意:
在php中一個類有且僅有一個構造函數。