国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP對象、模式與實踐之高級特性分析

2024-05-04 23:53:23
字體:
來源:轉載
供稿:網友

本文實例講述了PHP面向對象程序設計高級特性。分享給大家供大家參考,具體如下:

高級特性

包括:

1.靜態方法和屬性(通過類而不是對象來訪問數據和功能)
2.抽象類和接口(設計,實現分離)
3.錯誤處理(異常)
4.Final類和方法(限制繼承)
5.攔截器(自動委托)
6.析構方法(對象銷毀前的清理工作)
7.克隆對象(創建對象的副本)
8.把對象解析成字符串

PS,學會從內存的角度看代碼。想象計算機的微觀世界。

靜態方法的小例子

<?phpclass StaticExample{  static public $aNum = 10;  static public function sayHello(){    print "hello";  }}print StaticExample::$aNum."<br/>";StaticExample::sayHello();

tips:

1.靜態方法不能訪問類中的普通屬性,因為那些屬性屬于一個對象,但可以訪問靜態屬性。
2.我們不能再對象中調用靜態方法,因此不能再靜態方法中使用偽變量$this。

靜態方法的大例子

<?phpclass ShopProduct{  private $title;  private $producerMainName;  private $producerFirstName;  protected $price;  private $discount = 0;  private $id = 0;  function __construct($title,$firstName,$mainName,$price){    $this->title = $title;    $this->producerFirstName = $firstName;    $this->producerMainName = $mainName;    $this->price = $price;  }  public function setID($id){    $this->id = $id;  }  public static function getInstance($id,PDO $pdo){    $query = "select * from products where id= '$id'";    $stmt = $pdo->query($query);    $row = $stmt->fetch();    if(empty($row)){      return null;    }    if($row['type'] == "book"){      $product = new BookProduct($row['title'],        $row['firstname'],        $row['mainname'],        $row['price'],        $row['numpages']        );    }else if($row['type'] == "cd"){      $product = new CdProduct($row['title'],        $row['firstname'],        $row['mainname'],        $row['price'],        $row['playLength']        );    }else{      $product = new ShopProduct($row['title'],        $row['firstname'],        $row['mainname'],        $row['price']        );    }    $product->setId($row['id']);    $product->setDiscount($row['discount']);    return $product;  }  public function getProducerFirstName(){    return $this->producerFirstName;  }  public function getProducerMainName(){    return $this->producerMainName;  }  public function setDiscount($num){    $this->discount = $num;  }  public function getDiscount(){    return $this->discount;  }  public function getTitle(){    return $this->title;  }  public function getPrice(){    return ($this->price - $this->discount);  }  function getProducer(){    return $this->producerFirstName." ".$this->producerMainName;  }  function getSummaryLine(){    $base = "$this->title({$this->producerMainName},";    $base .= "{$this->producerFirstName})";    return $base;  }}class CdProduct extends ShopProduct{  private $playLength;  function __construct($title,$firstName,$mainName,$price,$playLength){    parent::__construct($title,$firstName,$mainName,$price);//繼承父類的構造函數    $this->playLength = $playLength;  }  function getPlayLength(){    return $this->playLength;  }  function getSummaryLine(){    $base = parent::getSummaryLine();    $base .= ":playing time {$this->playLength}";    return $base;  }}class BookProduct extends ShopProduct{  private $numPages = 0;  function __construct($title,$firstName,$mainName,$price,$numPages){    parent::__construct($title,$firstName,$mainName,$price);    $this->numPages = $numPages;  }  function getnumPages(){    return $this->numPages;  }  function getSummaryLine(){    $base = parent::getSummaryLine();    $base .= ":page count {$this->numPages}";    return $base;  }}$dsn = "sqlite:C:/Users/Administrator/Desktop/shop.db";$pdo = new PDO($dsn,null,null);$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);$obj = ShopProduct::getInstance(1,$pdo);echo $obj->getSummaryLine();

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 富蕴县| 云和县| 县级市| 平湖市| 区。| 桑日县| 慈溪市| 商河县| 丹凤县| 芒康县| 伊通| 镇江市| 庄河市| 金门县| 绍兴市| 富蕴县| 崇义县| 和硕县| 文化| 丹棱县| 牟定县| 涞水县| 铜川市| 醴陵市| 盐山县| 昌都县| 吉木萨尔县| 综艺| 赤壁市| 靖远县| 西盟| 吉木萨尔县| 盖州市| 西华县| 昭通市| 虞城县| 浏阳市| 阿城市| 来宾市| 武山县| 高平市|