PHP基礎2

PHP數(shù)組

  • 索引數(shù)組,數(shù)組的鍵是整數(shù)的數(shù)組,并且鍵的整數(shù)順序是從0開始
$arr = array("apple","orange","pear");
print_r($arr);//輸出數(shù)組建及對應的值

結果為:

Array
(
    [0] => apple
    [1] => orange
    [2] => pear
)
  • 關聯(lián)數(shù)組,數(shù)組的鍵是字符串的數(shù)組
$arr = array('apple'=>"蘋果",'orange'=>"橘子",'pear'=>"梨子");
print_r($arr);

結果為:

Array
(
    [apple] => 蘋果
    [orange] => 橘子
    [pear] => 梨子
)

創(chuàng)建數(shù)組

  • 使用array()函數(shù)
$fruits = array('apple','orange');
  • 直接對數(shù)組變量賦值
$fruits[]='pear';

如果方括號中沒有指定索引,則取當前最大整數(shù)索引值+1。如果當前還沒有整數(shù)索引,則鍵名將為0。如果指定的鍵名已經有值了,該值將被覆蓋

  • 使用range()創(chuàng)建指定范圍單元的數(shù)組
$num = range(1,10);

PHP函數(shù)

  1. 定義
    • 使用關鍵字function開始
    • function后面跟函數(shù)名
    • 大括號中編寫函數(shù)體
function say{
    echo "hello world"
}
  1. 調用:函數(shù)名加參數(shù)
  2. 判斷函數(shù)是否存在
    function_exists("fn")判斷函數(shù)fn是否存在

PHP類與面向對象

類是抽象的概念,對象是具體的實例。類通過關鍵字class定義,通過關鍵字new來創(chuàng)建一個實例,通過->訪問對象的屬性和方法

//定義一個類
class Car {
//屬性
    public $name  = "汽車";
    //方法
    public function getName(){
        //方法內部可以使用$this調用對象的方法和屬性
        return $this->name;
    }

}
//創(chuàng)建一個對象
$car = new Car();

屬性(方法)聲明是由關鍵字public,protected,private開頭

  • public 公有(默認)
  • protected 受保護的
  • private 私有的

受保護的屬性(方法)和私有的屬性(方法)不允許外部調用,在類的成員方法內部可以調用

構造函數(shù)和析構函數(shù)

  • 構造函數(shù)
    PHP5可以在類中使用__construct()定義一個構造函數(shù),構造函數(shù)會在對象創(chuàng)建時候調用,常用來對象創(chuàng)建時的初始化工作。
class Car{
    function __construct(){
        ...
    }
}
$car = new Car();//實例化會調用__construct

子類中定義了__construct則不會調用父類的__construct,如果需要調用父類的構造函數(shù),需要使用parent::__construct()顯示調用

  • 析構函數(shù)
    PHP5中使用_destruct(),定義,析構函數(shù)指的是當某個對象的所有引用被刪除,或者對象被顯示的銷毀時會執(zhí)行的函數(shù)。
class Car{
    function __destruct(){
        ...
    }
}
$car = new Car();
unset($car);//銷毀時調用析構函數(shù)

Static靜態(tài)關鍵字

靜態(tài)屬性和方法可以在不實例化類的情況下調用,直接使用類名::方法名的方式調用,靜態(tài)屬性不允許對象使用->操作符調用

class Car {
    static $speed = 10;
}
echo Car::$speed;

靜態(tài)方法中不允許使用$this偽變量??梢允褂?code>self,parent在內部調用靜態(tài)方法與屬性

訪問控制

訪問控制通過publicprotected,private關鍵字來實現(xiàn)。公有的類成員可以在任何地方被訪問,受保護的類成員可以被其自身以及其子類和父類訪問,私有的類成員只能被其定義所在的類訪問。
類屬性必須定義為公有、受保護、私有之一。

calss Car{
    $speed = 10;//錯誤,屬性必須定義訪問控制
    public $name;  //定義公有屬性
}

類的方法如果沒有設置這些關鍵字,默認公有
如果構造函數(shù)定義成了私有方法,則不允許直接實例化對象,可以通過靜態(tài)方法實例化對象

class Car{
    private function __construct(){
        ...
    }
    private static $_obj = null;
    public static function getInstance(){
        if(empty(self::$_obj))){
            self::$_obj = new Car();
        }
        return self::$_obj;
    }
}
//$car = new Car()//不允許直接實例化
$car = Car::getInstance(); //通過靜態(tài)方法獲得一個實例

對象繼承

使用extends實現(xiàn)類的繼承,共享屬性和方法

class Truck extends Car{
    ...
}
//定義繼承于Car的Truck類

PHP對象的重載

重載指的是動態(tài)的創(chuàng)建屬性和方法。
屬性是通過魔術方法來實現(xiàn)。__set,__get__isset,__unset分別實現(xiàn)對不存在的屬性的賦值,讀取,判斷屬性是否設置,銷毀屬性。

class Car {
    private $ary = array();
    
    public function __set($key, $val) {
        $this->ary[$key] = $val;
    }
    
    public function __get($key) {
        if (isset($this->ary[$key])) {
            return $this->ary[$key];
        }
        return null;
    }
    
    public function __isset($key) {
        if (isset($this->ary[$key])) {
            return true;
        }
        return false;
    }
    
    public function __unset($key) {
        unset($this->ary[$key]);
    }
}
$car = new Car();
$car->name = '汽車';  //name屬性動態(tài)創(chuàng)建并賦值
echo $car->name;

方法的重載通過__call來實現(xiàn),當調用不存在的方法的時候,將會轉為參數(shù)調用__call方法,當調用不存在的靜態(tài)方法時會使用__callStatic重載

class Car {
    public $speed = 0;
    
    public function __call($name, $args) {
        if ($name == 'speedUp') {
            $this->speed += 10;
        }
    }
}
$car = new Car();
$car->speedUp(); //調用不存在的方法會使用重載
echo $car->speed;
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 一、數(shù)組 1、數(shù)組定義 數(shù)組就是一個鍵值對組成的語言結構,鍵類似于酒店的房間號,值類似于酒店房間里存儲的東西。 $...
    空谷悠閱讀 863評論 4 11
  • 整型 十進制 八進制(0+0~7) 十六進制(0x) 二進制(0b) is_int() 或 is_integer(...
    簡單asdf閱讀 271評論 0 0
  • 一、數(shù)組 1、數(shù)組的聲明:$arr = array(); 2、數(shù)組的初始化:PHP有兩種數(shù)組:索引數(shù)組、關聯(lián)數(shù)組。...
    yzw12138閱讀 1,250評論 2 2
  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,677評論 0 4
  • 函數(shù)補充 字符串函數(shù) substr截取字符串$string="abcdefg;echo substr($strin...
    likeli閱讀 133評論 0 2

友情鏈接更多精彩內容