欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP面向?qū)ο笤斀猓ㄈ?/h1>
 更新時(shí)間:2015年12月07日 10:11:11   作者:韌還  
這篇文章主要介紹了PHP面向?qū)ο笤斀猓ㄈ?的相關(guān)資料,需要的朋友可以參考下

面向?qū)ο?對(duì)象概念是面向?qū)ο蠹夹g(shù)的核心。在顯示世界里我們所面對(duì)的事情都是對(duì)象,如計(jì)算機(jī)、電視機(jī)、自行車等。在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,對(duì)象是一個(gè)由信息及對(duì)信息進(jìn)行處理的描述所組成的整體,是對(duì)現(xiàn)實(shí)世界的抽象.

對(duì)象的主要三個(gè)特性

對(duì)象的行為:可以對(duì) 對(duì)象施加那些操作,開燈,關(guān)燈就是行為。
對(duì)象的形態(tài):當(dāng)施加那些方法是對(duì)象如何響應(yīng),顏色,尺寸,外型。
對(duì)象的表示:對(duì)象的表示就相當(dāng)于身份證,具體區(qū)分在相同的行為與狀態(tài)下有什么不同。

面向?qū)ο竽P?/strong>

面向?qū)ο蟮母拍睿?br />

oop(面向?qū)ο蟮木幊?它能是其代碼更加簡(jiǎn)潔易于維護(hù)并且具有更強(qiáng)的可重性

1、PHP面向?qū)ο螅ㄈ?/span>

四、OOP的高級(jí)實(shí)踐

4.3 Static-靜態(tài)成員

<?php
date_default_timezone_set("PRC");
/**
 * 1. 類的定義以class關(guān)鍵字開始,后面跟著這個(gè)類的名稱。類的名稱命名通常每個(gè)單詞的第一個(gè)字母大寫。
 * 2. 定義類的屬性
 * 3. 定義類的方法
 * 4. 實(shí)例化類的對(duì)象
 * 5. 使用對(duì)象的屬性和方法
 */
class Human{
 public $name;
 public $height;
 public $weight;
public function eat($food){
 echo $this->name."'s eating ".$food."<br/>";
 }
}
class Animal{
 public $kind;
 public $gender;
}
class NbaPlayer extends Human{
 // 類的屬性的定義
public $name="Jordan";// 定義屬性
public $height="198cm";
 public $weight="98kg";
 public $team="Bull";
 public $playerNumber="23";
 private $age="44";
 public $president="David Stern";
 // 類的方法的定義
public function changePresident($newP){
 $this->president=$newP;
 }
 public function run() {
 echo "Running<br/>";
 }
public function jump(){
 echo "Jumping<br/>";
 }
 public function dribble(){
 echo "Dribbling<br/>";
 }
 public function shoot(){
 echo "Shooting<br/>";
 }
 public function dunk(){
 echo "Dunking<br/>";
 }
 public function pass(){
 echo "Passing<br/>";
 }
 public function getAge(){
 echo $this->name."'s age is ".$this->age;
 }
 function __construct($name, $height, $weight, $team, $playerNumber){
 print $name . ";" . $height . ";" . $weight . ";" . $team . ";" . $playerNumber."\n";
 $this->name = $name; // $this是php里面的偽變量,表示對(duì)象自身
$this->height = $height; // 通過(guò)$this可以設(shè)置對(duì)象的屬性值
$this->weight = $weight;
 $this->team = $team;
 $this->playerNumber = $playerNumber;
 }
}
/**
 * 1. 類實(shí)例化為對(duì)象時(shí)使用new關(guān)鍵字,new之后緊跟類的名稱和一對(duì)括號(hào)。
 * 2. 使用對(duì)象可以像使用其他值一樣進(jìn)行賦值操作
 */
$jordan = new NbaPlayer("Jordan", "198cm","98kg","Bull","23");echo "<br/>";
$james=new NbaPlayer("James", "203cm", "120kg", "Heat", "6");echo "<br/>";
// 訪問(wèn)對(duì)象的屬性使用的語(yǔ)法是->符號(hào),后面跟著屬性的名稱
echo $jordan->name."<br/>";
// 調(diào)用對(duì)象的某個(gè)方法使用的語(yǔ)法是->符號(hào),后面跟著方法的名稱和一對(duì)括號(hào)
$jordan->run();
$jordan->pass();
//子類調(diào)用父類的方法
$jordan->eat("apple");
//試著調(diào)用private,直接以及通過(guò)內(nèi)部的public函數(shù)
//$jordan->age;
$jordan->getAge();echo "<br/>";
$jordan->changePresident("Adam Silver");
echo $jordan->president."<br/>";
echo $james->president."<br/>";
 直接從上述例子開始吧。
這里想得到的是,把兩位對(duì)象的某一個(gè)變量同時(shí)變掉。——用static
public static $president="David Stern";
 // 類的方法的定義
public static function changePresident($newP){
static::$president=$newP;//這里static換成self更符合規(guī)范
}

注意這里static的位置,以及,方法內(nèi)的::

調(diào)用的方法也有所變動(dòng)。

echo NbaPlayer::$president;echo "<br/>";
NbaPlayer::changePresident("Adam Silver");
echo NbaPlayer::$president;echo "<br/>";

也就是像之前說(shuō)的,靜態(tài)成員就是個(gè)常量,所以不針對(duì)某個(gè)具體的對(duì)象(不受具體對(duì)象的約束)——基于此,定義&賦值&調(diào)用都不需要具體的對(duì)象參與。

內(nèi)部調(diào)用要用self/static::$...

外部調(diào)用,類名::

用處就是所有的對(duì)象共用的數(shù)據(jù)。

--如果內(nèi)部調(diào)用時(shí),變量在父類中

比如說(shuō),在上述例子中,父類human中寫這么一句話

public static $aaa="dafdfa";

 然后在子類nbaplayer中,調(diào)用父類的靜態(tài)成員時(shí),要

echo parent::$aaa;

而外部調(diào)用,按照上面說(shuō)的,類名::,所以,直接父類類名即可

echo Human::$aaa;

--其他

在靜態(tài)方法中,是無(wú)法訪問(wèn)其他變量的,也就是說(shuō),不能用$this->

--小結(jié)

/**
 * 靜態(tài)成員
 * 1. 靜態(tài)屬性用于保存類的公有數(shù)據(jù)
 * 2. 靜態(tài)方法里面只能訪問(wèn)靜態(tài)屬性
 * 3. 靜態(tài)成員不需要實(shí)例化對(duì)象就可以訪問(wèn)
 * 4. 類內(nèi)部,可以通過(guò)self或者static關(guān)鍵字訪問(wèn)自身的靜態(tài)成員
 * 5. 可以通過(guò)parent關(guān)鍵字訪問(wèn)父類的靜態(tài)成員
 * 6. 可以通過(guò)類名稱在外部訪問(wèn)類的靜態(tài)成員
 */

4.4 Final成員

--問(wèn)題

不希望某個(gè)類擁有子類;

不希望子類修改父類中的某個(gè)變量(避免重寫?)

--final

》=php5版本

舉個(gè)例子

class BaseClass{
 public function test(){
 echo "BaseClass::test called<br/>";
 }
public function test1(){
 echo "BaseClass::test1 called<br/>";
 }
}
class ChildClass extends BaseClass{
 public function test(){
 echo "ChildClass::test called<br/>";
 }
}
$obj=new ChildClass();
$obj->test();

 子類中編寫跟父類中完全一致的方法名(內(nèi)容可以不同),會(huì)完成對(duì)父類方法的重寫!

所以,不希望被重寫的父類中的方法,寫上final

復(fù)制代碼 代碼如下:

final public function test(){

依此類推,對(duì)于不想有子類的父類,在類名那里寫上final

復(fù)制代碼 代碼如下:

final class BaseClass{

--小結(jié)

/**
 * 重寫和Final
 * 1. 子類中編寫跟父類完全一致的方法可以完成對(duì)父類方法的重寫
 * 2. 對(duì)于不想被任何類繼承的類可以在class之前添加final關(guān)鍵字
 * 3. 對(duì)于不想被子類重寫(overwrite, 修改)的方法,可以在方法定義前面添加final關(guān)鍵字
 */

4.5 數(shù)據(jù)訪問(wèn)

先把final都去掉

--parent

然后再子類中的方法中寫

parent::test();

運(yùn)行后會(huì)發(fā)現(xiàn),依然可以通過(guò)parent的關(guān)鍵字調(diào)用父類中,即使是被重寫的數(shù)據(jù)

--self

然后在父類中的方法test中寫

self::test1();

運(yùn)行后,發(fā)現(xiàn)self可以調(diào)用同一個(gè)類中的數(shù)據(jù)(其他方法/靜態(tài)變量/常量const)

--小結(jié)

/**
 * 數(shù)據(jù)訪問(wèn)補(bǔ)充
 * 1. parent關(guān)鍵字可以用于調(diào)用父類被重寫的類成員
 * 2. self關(guān)鍵字可以用于訪問(wèn)類自身的成員方法,也可以用于訪問(wèn)自身的靜態(tài)成員和類常量;不能用于訪問(wèn)類自身的屬性;訪問(wèn)類常量時(shí)不用在常量名稱前面加$符號(hào)
 * 3. static關(guān)鍵字用于訪問(wèn)類自身定義的靜態(tài)成員,訪問(wèn)靜態(tài)屬性時(shí)需要在屬性名前面添加$符號(hào)
 */

4.6 對(duì)象接口

非常重要!??!

--問(wèn)題

不同的類,有著相同的行為,但相同的行為又有著不同的實(shí)現(xiàn)方法。

比如人和動(dòng)物都會(huì)吃東西,但吃的方式方法又不太一樣。

--定義

接口就是把不同類的共同行為進(jìn)行了定義,然后在不同的類里面實(shí)現(xiàn)不同的功能。

--栗子 

復(fù)制代碼 代碼如下:

//定義一個(gè)接口
interface ICanEat{
 public function eat($food);
}

可以看到,接口中并沒(méi)有方法的具體實(shí)現(xiàn),但必須有方法!

那么,下面是,“人類會(huì)吃”

//具體對(duì)象,連接到接口
class Human implements ICanEat{
public function eat($food){
 echo "Human eating ".$food.".<br/>";
 }
}
$obj=new Human();
$obj->eat("shit");

請(qǐng)忽略我給出的“食物”。

注意,不再用extends,而是implements。然后,同樣是方法名的完全相同。然后,對(duì)象必須/最好實(shí)現(xiàn)方法。

繼續(xù)

interface ICanEat{
 public function eat($food);
}
//具體對(duì)象,連接到接口
class Human implements ICanEat{
public function eat($food){
 echo "Human eating ".$food.".<br/>";
 }
}
class Animal implements ICanEat{
 public function eat($food){
 echo "Animal eating ".$food.".<br/>";
 }
}
$obj=new Human();
$obj->eat("shit");
$monkey=new Animal();
$monkey->eat("banana");

 讓動(dòng)物也吃起來(lái)!

--逆向操作

判斷某個(gè)對(duì)象是否連接了某個(gè)接口。

復(fù)制代碼 代碼如下:

var_dump($obj instanceof ICanEat);

會(huì)返回boolean值。

--更多的栗子

interface ICanPee extends ICanEat{
 public function pee();
}
class Demon implements ICanPee{
 public function pee(){
 echo "Can demon pee?";
 }
 public function eat($food){
 echo "Can demon eat ".$food;
 }
}
$ghost=new Demon();
$ghost->pee();
$ghost->eat("shit");

 接口本質(zhì)上也是類,可以被繼承/繼承,但是使用繼承接口的接口,所有父類、“爺類”的方法都要有具體實(shí)現(xiàn)。

--小結(jié)

/**
 * 接口
 * 1. 接口的基本概念和基本使用方法
 * 2. 接口里面的方法沒(méi)有具體的實(shí)現(xiàn)
 * 3. 實(shí)現(xiàn)了某個(gè)接口的類必須提供接口中定義的方法
 * 4. 不能用接口創(chuàng)建對(duì)象,但是能夠判斷某個(gè)對(duì)象是否實(shí)現(xiàn)了某個(gè)接口
 * 5. 接口可以繼承接口(interface extends interface)
 * 6. 接口中定義的所有方法都必須是公有,這是接口的特性。
 */

aaaaaaaaaaaaaa

bu xiang xie le....................

ming tian yao ge ..............

以上內(nèi)容是小編給大家介紹的PHP面向?qū)ο笤斀猓ㄈ?,希望大家喜歡。

相關(guān)文章

  • PHP命名空間(namespace)的動(dòng)態(tài)訪問(wèn)及使用技巧

    PHP命名空間(namespace)的動(dòng)態(tài)訪問(wèn)及使用技巧

    上篇文章介紹了PHP命名空間的一些術(shù)語(yǔ),其解析規(guī)則,本文我們來(lái)繼續(xù)講述PHP命名空間動(dòng)態(tài)訪問(wèn)及使用技巧,希望能有所幫助
    2014-08-08
  • ThinkPHP中order()使用方法詳解

    ThinkPHP中order()使用方法詳解

    本文介紹ThinkPHP的order()方法的用法。order方法可以用于對(duì)數(shù)據(jù)庫(kù)操作的結(jié)果進(jìn)行排序。即相當(dāng)于是在select語(yǔ)句中一個(gè)order by的子句
    2016-04-04
  • php簡(jiǎn)單的留言板與回復(fù)功能具體實(shí)現(xiàn)

    php簡(jiǎn)單的留言板與回復(fù)功能具體實(shí)現(xiàn)

    留言板是在剛接觸php時(shí)用來(lái)學(xué)習(xí)的一個(gè)簡(jiǎn)單的應(yīng)用例子了,今天我再給初學(xué)php的朋友提供一個(gè)完整的php留言板的全部制作過(guò)程,希望對(duì)你會(huì)有幫助
    2014-02-02
  • ECMall支持SSL連接郵件服務(wù)器的配置方法詳解

    ECMall支持SSL連接郵件服務(wù)器的配置方法詳解

    這篇文章主要介紹了ECMall支持SSL連接郵件服務(wù)器的配置方法詳解
    2014-05-05
  • thinkphp3.2.2前后臺(tái)公用類架構(gòu)問(wèn)題分析

    thinkphp3.2.2前后臺(tái)公用類架構(gòu)問(wèn)題分析

    這篇文章主要介紹了thinkphp3.2.2前后臺(tái)公用類架構(gòu)問(wèn)題,以實(shí)例形式較為詳細(xì)的分析了前后臺(tái)公用類的簡(jiǎn)單調(diào)用方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-11-11
  • PHP 中TP5 Request 請(qǐng)求對(duì)象的實(shí)例詳解

    PHP 中TP5 Request 請(qǐng)求對(duì)象的實(shí)例詳解

    這篇文章主要介紹了PHP 中TP5 Request 請(qǐng)求對(duì)象的實(shí)例詳解的相關(guān)資料,這里提供實(shí)現(xiàn)代碼幫助大家理解這部分內(nèi)容,需要的朋友可以參考下
    2017-07-07
  • Laravel中9個(gè)不經(jīng)常用的小技巧匯總

    Laravel中9個(gè)不經(jīng)常用的小技巧匯總

    這篇文章主要給大家總結(jié)介紹了關(guān)于Laravel中9個(gè)不經(jīng)常用的小技巧,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Laravel具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • phpmyadmin下載、安裝、配置教程

    phpmyadmin下載、安裝、配置教程

    這篇文章主要為大家詳細(xì)介紹了phpmyadmin下載、安裝、配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • php下拉選項(xiàng)的批量操作的實(shí)現(xiàn)代碼

    php下拉選項(xiàng)的批量操作的實(shí)現(xiàn)代碼

    這篇文章介紹了php下拉選項(xiàng)的批量操作的實(shí)現(xiàn)代碼,有需要的朋友可以參考一下
    2013-10-10
  • php按百分比生成縮略圖的代碼分享

    php按百分比生成縮略圖的代碼分享

    最近的一個(gè)網(wǎng)站項(xiàng)目中上傳圖片需要生成縮略圖,以減小列表頁(yè)的大小,減緩服務(wù)器壓力。一向崇尚簡(jiǎn)潔明了和實(shí)用的我,看到網(wǎng)上搜到的一個(gè)個(gè)長(zhǎng)長(zhǎng)的php縮略圖類的時(shí)候,感到非常痛苦。我承認(rèn)他們寫的功能是強(qiáng)大一些,但是我不需要這么復(fù)雜的功能
    2014-05-05

最新評(píng)論