真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何在PHP中使用類與對象-創(chuàng)新互聯(lián)

如何在PHP中使用類與對象?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

站在用戶的角度思考問題,與客戶深入溝通,找到思茅網(wǎng)站設(shè)計與思茅網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名與空間、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋思茅地區(qū)。

php的框架有哪些

php的框架:1、Laravel,Laravel是一款免費并且開源的PHP應(yīng)用框架。2、Phalcon,Phalcon是運行速度最快的一個PHP框架。3、Symfony,Symfony是一款為Web項目準備的PHP框架。4、Yii,Yii是一款快速、安全和專業(yè)的PHP框架。5、CodeIgniter,CodeIgniter是一款非常敏捷的開源PHP框架。6、CakePHP,CakePHP是一款老牌的PHP框架。7.Kohana,Kohana是一款敏捷但是功能強大的PHP框架。

1. 類與對象

類是面向?qū)ο蟪绦蛟O(shè)計的基本概念,是一類東西的結(jié)構(gòu)描述 , 是一種抽象的概念 . 對象是一類東西的一個具體的實例 , 是具體事物 .

對象通過new關(guān)鍵字進行實例化:
比如汽車可以抽象為一個類,汽車擁有名字、輪胎、速度、重量等屬性,可以有換擋、前進、后退等操作方法。

// 定義一個汽車類
class Car {
  $name = '汽車';
  function getName() {
    return $this->name;
  }
}
//對象通過new關(guān)鍵字進行實例化 
$car = new Car();
echo $car->getName();
2. 屬性與對象

在類中定義的變量稱之為屬性。屬性聲明是由關(guān)鍵字 public,protected 或者 private 開頭,后面跟一個普通的變量聲明來組成。屬性的變量可以設(shè)置初始化的默認值,默認值必須是常量。

方法就是在類中的function,很多時候我們分不清方法與函數(shù)有什么差別,在面向過程的程序設(shè)計中function叫做函數(shù),在面向?qū)ο笾衒unction則被稱之為方法。

訪問控制的關(guān)鍵字代表的意義為:

  • public:公開的 , 任何地方都可以訪問

  • protected:受保護的 , 類內(nèi)自身 , 其子類和父類可以訪問

  • private:私有的 , 類內(nèi)自身可訪問

類屬性的訪問控制必須定義 , 即必須寫出關(guān)鍵字 , 定義為三個中的一個
類方法不寫關(guān)鍵字 , 則默認為公有的

class Car {
  public $speed = 0;
  //增加speedUp方法,使speed加10
  public function speedUp(){
    $this->speed += 10;
  }
}
// 創(chuàng)建對象
$car = new Car();
// 通過對象獲取類屬性與類方法
$car->speedUp();
echo $car->speed;
3. 構(gòu)造函數(shù)與析構(gòu)函數(shù)

PHP5可以在類中使用__construct()定義一個構(gòu)造函數(shù),具有構(gòu)造函數(shù)的類,會在每次對象創(chuàng)建的時候調(diào)用該函數(shù),因此常用來在對象創(chuàng)建的時候進行一些初始化工作。

在子類中如果定義了__construct則不會調(diào)用父類的__construct,如果需要同時調(diào)用父類的構(gòu)造函數(shù),需要使用parent::__construct()顯式的調(diào)用。

同樣,PHP5支持析構(gòu)函數(shù),使用__destruct()進行定義,析構(gòu)函數(shù)指的是當某個對象的所有引用被刪除,或者對象被顯式的銷毀時會執(zhí)行的函數(shù)。

class Car {
  function __construct() {
    print "構(gòu)造函數(shù)被調(diào)用 \n";
  }
  function __destruct() {
    print "析構(gòu)函數(shù)被調(diào)用 \n";
  }
}
$car = new Car(); //實例化時會調(diào)用構(gòu)造函數(shù)
echo '使用后,準備銷毀car對象 \n';
unset($car); //銷毀時會調(diào)用析構(gòu)函數(shù)

當PHP代碼執(zhí)行完畢以后,會自動回收與銷毀對象,因此一般情況下不需要顯式的去銷毀對象。

4. 靜態(tài)屬性與靜態(tài)方法
  • 靜態(tài)屬性:

public / protected / private static $變量名

不用實例化類 , 直接調(diào)用 類名 :: $變量名
但實例化后 , 不允許使用 對象 -> $變量名

  • 靜態(tài)方法

public / protected / private static function 方法名()

不用實例化類 , 直接調(diào)用 類名 :: 方法名()
實例化后 , 對象 -> 方法名()
靜態(tài)方法中,$this偽變量不允許使用??梢允褂胹elf,parent,static在內(nèi)部調(diào)用靜態(tài)方法與屬性。

class Car {
  private static $speed = 10;
  
  public static function getSpeed() {
    return self::$speed;
  }
  
  public static function speedUp() {
    return self::$speed+=10;
  }
}
class BigCar extends Car {
  public static function start() {
    parent::speedUp();
  }
}

BigCar::start();
echo BigCar::getSpeed();

如果構(gòu)造函數(shù)定義成了私有方法,則不允許直接實例化對象了,這時候一般通過靜態(tài)方法進行實例化,在設(shè)計模式中會經(jīng)常使用這樣的方法來控制對象的創(chuàng)建,比如單例模式只允許有一個全局的對象。

class Car {
  private function __construct() {
    echo 'object create';
  }

  private static $_object = null;
  public static function getInstance() {
    if (empty(self::$_object)) {
      self::$_object = new Car(); //內(nèi)部方法可以調(diào)用私有方法,因此這里可以創(chuàng)建對象
    }
    return self::$_object;
  }
}
$car = new Car(); //這里不允許直接實例化對象
$car = Car::getInstance(); //通過靜態(tài)方法來獲得一個實例
5. 繼承

繼承是面向?qū)ο蟪绦蛟O(shè)計中常用的一個特性,汽車是一個比較大的類,我們也可以稱之為基類,除此之外,汽車還分為卡車、轎車、東風(fēng)、寶馬等,因為這些子類具有很多相同的屬性和方法,可以采用繼承汽車類來共享這些屬性與方法,實現(xiàn)代碼的復(fù)用。

class Car {
  public $speed = 0; //汽車的起始速度是0
  
  public function speedUp() {
    $this->speed += 10;
    return $this->speed;
  }
}
//建立一個Truck類,擴展Car類,并覆蓋speedUp方法,使速度累加50
class Truck extends Car{
  public function speedUp(){
    parent::speedUp();
    $this->speed += 50;
    return $this->speed;
  }
}

$car = new Truck();
$car->speedUp();
echo $car->speed;
5. 重載

PHP中的重載指的是動態(tài)的創(chuàng)建屬性與方法,是通過魔術(shù)方法來實現(xiàn)的。

  • 屬性的重載通過__set,__get,__isset,__unset來分別實現(xiàn)對不存在屬性的賦值、讀取、判斷屬性是否設(shè)置、銷毀屬性。

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;
if ($car->age){
  echo '有';
}else{
  echo '無';
}
unset($car->name);
var_dump($car->name);
  • 方法的重載通過__call來實現(xiàn),當調(diào)用不存在的方法的時候,將會轉(zhuǎn)為參數(shù)調(diào)用__call方法,當調(diào)用不存在的靜態(tài)方法時會使用__callStatic重載。

class Car {
  public $speed = 0;
  
  public function __call($name, $args) {
    if ($name == 'speedUp') {
      $this->speed += 10;
    }
  }
}
$car = new Car();
$car->speedUp(); //調(diào)用不存在的方法會使用重載
echo $car->speed;
6. 高級特性

對象比較,當同一個類的兩個實例的所有屬性都相等時,可以使用比較運算符 == 進行判斷,當需要判斷兩個變量是否為同一個對象的引用時,可以使用全等運算符 === 進行判斷。

class Car {
}
$a = new Car();
$b = new Car();
if ($a == $b) echo '==';  //true
if ($a === $b) echo '==='; //false

對象復(fù)制,在一些特殊情況下,可以通過關(guān)鍵字clone來復(fù)制一個對象,這時__clone方法會被調(diào)用,通過這個魔術(shù)方法來設(shè)置屬性的值。

class Car {
  public $name = 'car';
  
  public function __clone() {
    $obj = new Car();
    $obj->name = $this->name;
  }
}
$a = new Car();
$a->name = 'new car';
$b = clone $a;
var_dump($b);

對象序列化,可以通過serialize方法將對象序列化為字符串,用于存儲或者傳遞數(shù)據(jù),然后在需要的時候通過unserialize將字符串反序列化成對象進行使用。

class Car {
  public $name = 'car';
}
$a = new Car();
$str = serialize($a); //對象序列化成字符串
echo $str.'
'; $b = unserialize($str); //反序列化為對象 var_dump($b);

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,的支持。


網(wǎng)頁標題:如何在PHP中使用類與對象-創(chuàng)新互聯(lián)
鏈接地址:http://weahome.cn/article/gjcdo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部