PHP面向?qū)ο螅ㄒ唬?/h1>

1.什么是面向?qū)ο螅?/h4>

面向?qū)ο缶幊蹋∣bject Oriented Programming, OOP, 面向?qū)ο蟪绦蛟O(shè)計(jì))是一種計(jì)算機(jī)編程架構(gòu)咬腕,OOP的一條基本原則是計(jì)算機(jī)程序是由單個(gè)能夠起到子程序作用的單元或?qū)ο蠼M合而成憨闰,OOP達(dá)到了軟件工程的三 個(gè)目標(biāo):重用性舟茶、靈活性和擴(kuò)展性信卡。為了實(shí)現(xiàn)整體運(yùn)算,每個(gè)對(duì)象都能夠接收信息执桌、處理數(shù)據(jù)和向其它對(duì)象發(fā)送信息家厌。面向?qū)ο笠恢笔擒浖_發(fā)領(lǐng)域內(nèi)比較熱門的話 題,首先褐奥,面向?qū)ο蠓先祟惪创挛锏囊话阋?guī)律咖耘。其次,采用面向?qū)ο蠓椒梢允瓜到y(tǒng)各部分各司其職撬码、各盡所能儿倒。為編程人員敞開了一扇大門,使其編程的代碼 更簡(jiǎn)潔呜笑、更易于維護(hù)夫否,并且具有更強(qiáng)的可重用性。有人說PHP不是一個(gè)真正的面向?qū)ο蟮恼Z言叫胁,這是事實(shí)凰慈。PHP 是一個(gè)混合型語言,你可以使用OOP驼鹅,也可以使用傳統(tǒng)的過程化編程微谓。然而森篷,對(duì)于大型項(xiàng)目,你可能需要在PHP 中使用純的OOP去聲明類堰酿,而且在你的項(xiàng)目里只用對(duì)象和類疾宏。

2.什么是類,什么是對(duì)象触创,類和對(duì)象之間的關(guān)系

類的概念:類是具有相同屬性和服務(wù)的一組對(duì)象的集合坎藐。它為屬于該類的所有對(duì)象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和服務(wù)兩個(gè)主要部分哼绑。在面向?qū)ο蟮木幊陶Z言中岩馍,類是一個(gè)獨(dú)立的程序單位,它應(yīng)該有一個(gè)類名并包括屬性說明和服務(wù)說明兩個(gè)主要部分抖韩。
對(duì)象的概念:對(duì)象是系統(tǒng)中用來描述客觀事物的一個(gè)實(shí)體蛀恩,它是構(gòu)成系統(tǒng)的一個(gè)基本單位。一個(gè)對(duì)象由一組屬性和對(duì)這組屬性進(jìn)行操作的一組服務(wù)組成茂浮。從更抽象 的角度來說双谆,對(duì)象是問題域或?qū)崿F(xiàn)域中某些事物的一個(gè)抽象,它反映該事物在系統(tǒng)中需要保存的信息和發(fā)揮的作用席揽;它是一組屬性和有權(quán)對(duì)這些屬性進(jìn)行操作的一組 服務(wù)的封裝體顽馋。客觀世界是由對(duì)象和對(duì)象之間的聯(lián)系組成的幌羞。
類與對(duì)象的關(guān)系就如模具和鑄件的關(guān)系寸谜,類的實(shí)例化結(jié)果就是對(duì)象,而對(duì)一類對(duì)象的抽象就是類.類描述了一組有相同特性(屬性)和相同行為(方法)的對(duì)象属桦。 不要被概念的東西搞暈了

舉個(gè)例子:

如果你去中關(guān)村想買幾臺(tái)組裝的PC機(jī)熊痴,到了那里你第一步要干什么, 是不是裝機(jī)的工程師和你坐在一起聂宾,按你提供的信息和你一起完成一個(gè)裝機(jī)的配置單呀果善, 這個(gè)配置單就可以想像成是類,它就是一張紙系谐,但是它上面記錄了你要買的PC機(jī)的信息岭埠,如果用這個(gè)配置單買10臺(tái)機(jī)器,那么這10臺(tái)機(jī)子蔚鸥,都是按這個(gè)配置單 組成的,所以說這10臺(tái)機(jī)子是一個(gè)類型的许赃,也可以說是一類的止喷。那么什么是對(duì)象呢,類的實(shí)例化結(jié)果就是對(duì)象, 用這個(gè)配置單配置出來(實(shí)例化出來)的機(jī)子就是對(duì)象混聊, 是我們可以操作的實(shí)體弹谁, 10臺(tái)機(jī)子, 10個(gè)對(duì)象。 每臺(tái)機(jī)子都是獨(dú)立的预愤,只能說明他們是同一類的沟于,對(duì)其中一個(gè)機(jī)做任何動(dòng)作都不會(huì)影響其它9臺(tái)機(jī)器,但是我對(duì)類修改植康, 也就是在這個(gè)配置單上加一個(gè)或少一個(gè)配件旷太, 那么裝出來的9個(gè)機(jī)子都改變了, 這是類和對(duì)象的關(guān)系(類的實(shí)例化結(jié)果就是對(duì)象)

3.如何抽象出一個(gè)類销睁?

類是對(duì)象的抽象組織供璧,對(duì)象是類的具體存在。所以要定義規(guī)范冻记、合理的類結(jié)構(gòu)首先應(yīng)該明確類應(yīng)該具有的屬性和方法睡毒,在初學(xué)階段可以將類理解為屬性+方法的集合體,一個(gè)類可以包含有屬于自己的常量冗栗,變量(稱為“屬性”)以及函數(shù)(稱為“方法”)演顾。
只要掌握基本的程序語法定義規(guī)則就可以做的出來,那么難點(diǎn)在那里呢隅居? 一個(gè)項(xiàng)目要用到多少個(gè)類钠至,用多少個(gè)對(duì)象, 在哪要定義類军浆,定義一個(gè)什么樣的類棕洋,這個(gè)類實(shí)例化出多少個(gè)對(duì)象, 類里面有多少個(gè)屬性乒融, 有多少個(gè)方法等等掰盘,這就需要大家通過在實(shí)際的開發(fā)中就實(shí)際問題分析設(shè)計(jì)和總結(jié)了。 類的定義:

calss 類名 {
}

使用一個(gè)關(guān)鍵字class和后面加上一個(gè)你想要的類名以及加上一對(duì)大括號(hào)赞季, 這樣一個(gè)類的結(jié)構(gòu)就定義出來了愧捕,只要在里面寫代碼就可以了。
屬性:
通過在類定義中使用關(guān)鍵字" var "來聲明變量申钩,即創(chuàng)建了類的屬性次绘,雖然在聲明成員屬性的時(shí)候可以給定初值, 但是在聲明類的時(shí)候給成員屬性初始值是沒有必要的撒遣,我們?cè)趯?shí)例出對(duì)象后給成員屬性初始值就可以了邮偎。
方法:
通過在類定義中聲明函數(shù),即創(chuàng)建了類的方法义黎。
舉個(gè)例子:

class Person {
    // 下面是人的成員屬性
    var $name; // 人的名字
    var $sex; // 人的性別
    var $age; // 人的年齡
 
    // 下面是人的成員方法
    function say() { // 這個(gè)人可以說話的方法
        echo "這個(gè)人在說話";
    }
 
    function run() { //這個(gè)人可以走路的方法
        echo "這個(gè)人在走路";
    }
}

4.如何實(shí)例化對(duì)象禾进?

我們上面說過面向?qū)ο蟪绦虻膯挝痪褪菍?duì)象,但對(duì)象又是通過類的實(shí)例化出來的廉涕,既然我們類會(huì)聲明了泻云,下一步就是實(shí)例化對(duì)象了艇拍。
當(dāng)定義好類后,我們使用new關(guān)鍵字來生成一個(gè)對(duì)象宠纯。

class Person {
    // 下面是人的成員屬性
    var $name; // 人的名字
    var $sex; // 人的性別
    var $age; // 人的年齡
 
    // 下面是人的成員方法
    function say() { // 這個(gè)人可以說話的方法
        echo "這個(gè)人在說話";
    }
 
    function run() { //這個(gè)人可以走路的方法
        echo "這個(gè)人在走路";
    }
}
 
$p1 = new Person();
$p2 = new Person();
$p3 = new Person();

$p1就是我們實(shí)例出來的對(duì)象名稱卸夕, 同理,$p2, $p3也是我們實(shí)例出來的對(duì)象名稱婆瓜,一個(gè)類可以實(shí)例出多個(gè)對(duì)象快集,每個(gè)對(duì)象都是獨(dú)立的,上面的代碼相當(dāng)于實(shí)例出來3個(gè)人來勃救, 每個(gè)人之間是沒有聯(lián)系的碍讨, 只能說明他們都是人類, 每個(gè)人都有自己的姓名蒙秒, 性別和年齡的屬性勃黍,每個(gè)人都有說話和走路的方法,只要是類里面體現(xiàn)出來的成員屬性和成員方法晕讲,實(shí)例化出來的對(duì)象里面就包含了這些屬性和方法覆获。
對(duì)像在PHP里面和整型、浮點(diǎn)型一樣瓢省,也是一種數(shù)據(jù)類弄息,都是存儲(chǔ)不同類型數(shù)據(jù)用的,在運(yùn)行的時(shí)候都要加載到內(nèi)存中去用勤婚, 那么對(duì)象在內(nèi)存里面是怎么體現(xiàn)的呢摹量??jī)?nèi)存從羅輯上說大體上是分為4段, 椔ǎ空間段缨称, 堆空間段,代碼段祝迂, 初使化靜態(tài)段睦尽, 程序里面不同的聲明放在不同的內(nèi)存段里面,椥亡ǎ空間段是存儲(chǔ)占用相同空間長(zhǎng)度并且占用空間小的數(shù)據(jù)類型的地方当凡,比如說整型1, 10纠俭, 100沿量, 1000, 10000冤荆, 100000等等朴则,在內(nèi)存里面占用空間是等長(zhǎng)的,都是64位4個(gè)字節(jié)匙赞。 那么數(shù)據(jù)長(zhǎng)度不定長(zhǎng)佛掖,而且占有空間很大的數(shù)據(jù)類型的數(shù)據(jù)放在那內(nèi)存的那個(gè)段里面呢?這樣的數(shù)據(jù)是放在堆內(nèi)存里面的涌庭。棧內(nèi)存是可以直接存取的芥被,而堆內(nèi)存是不 可以直接存取的內(nèi)存。對(duì)于我們的對(duì)象來說就是一種大的數(shù)據(jù)類型而且是占用空間不定長(zhǎng)的類型坐榆,所以說對(duì)象是放在堆里面的拴魄,但對(duì)象名稱是放在棧里面的,這樣通 過對(duì)象名稱就可以使用對(duì)象了席镀。

5.如何使用對(duì)象中的成員

訪問對(duì)象中的成員就要使用一個(gè)特殊的操作符”->”來完成對(duì)象成員的訪問:

class Person {
    // 下面是人的成員屬性
    var $name;      // 人的名子
    var $sex;       // 人的性別
    var $age;       // 人的年齡
 
    // 下面是人的成員方法
    function say() { // 這個(gè)人可以說話的方法
        echo "這個(gè)人在說話";
    }
 
    function run() { // 這個(gè)人可以走路的方法
        echo "這個(gè)人在走路";
    }
}
 
$p1 = new Person(); // 創(chuàng)建實(shí)例對(duì)象$p1
$p2 = new Person(); // 創(chuàng)建實(shí)例對(duì)象$p2
$p3 = new Person(); // 創(chuàng)建實(shí)例對(duì)象$p3
 
// 下面三行是給$p1對(duì)象屬性賦值
$p1->name = "張三";
$p1->sex = "男";
$p1->age = 20;
 
// 下面三行是訪問$p1對(duì)象的屬性
echo "p1對(duì)象的名子是:" . $p1->name;
echo "p1對(duì)象的性別是:" . $p1->sex;
echo "p1對(duì)象的年齡是:" . $p1->age;
 
// 下面兩行訪問$p1對(duì)象中的方法
$p1->say();
$p1->run();
 
// 下面三行是給$p2對(duì)象屬性賦值
$p2->name = "李四";
$p2->sex = "女";
$p2->age = 30;
 
// 下面三行是訪問$p2對(duì)象的屬性
echo "p2對(duì)象的名子是:" . $p2->name;
echo "p2對(duì)象的性別是:" . $p2->sex;
echo "p2對(duì)象的年齡是:" . $p2->age;
 
// 下面兩行訪問$p2對(duì)象中的方法
$p2->say();
$p2->run();
 
// 下面三行是給$p3對(duì)象屬性賦值
$p3->name="王五";
$p3->sex="男";
$p3->age=40;
 
// 下面三行是訪問$p3對(duì)象的屬性
echo "p3對(duì)象的名子是:" . $p3->name;
echo "p3對(duì)象的性別是:" . $p3->sex;
echo "p3對(duì)象的年齡是:" . $p3->age;
 
// 下面兩行訪問$p3對(duì)象中的方法
$p3->say();
$p3->run();

從上例中可以看出只是對(duì)象里面的成員就要使用對(duì)象->屬性 匹中、對(duì)象->方法 形式訪問。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者

  • 序言:七十年代末豪诲,一起剝皮案震驚了整個(gè)濱河市顶捷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌屎篱,老刑警劉巖服赎,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異交播,居然都是意外死亡重虑,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門秦士,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缺厉,“玉大人,你說我怎么就攤上這事隧土√嵴耄” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵次洼,是天一觀的道長(zhǎng)关贵。 經(jīng)常有香客問我,道長(zhǎng)卖毁,這世上最難降的妖魔是什么揖曾? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮亥啦,結(jié)果婚禮上炭剪,老公的妹妹穿的比我還像新娘。我一直安慰自己翔脱,他們只是感情好奴拦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著届吁,像睡著了一般错妖。 火紅的嫁衣襯著肌膚如雪绿鸣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天暂氯,我揣著相機(jī)與錄音潮模,去河邊找鬼。 笑死痴施,一個(gè)胖子當(dāng)著我的面吹牛擎厢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辣吃,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼动遭,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了神得?” 一聲冷哼從身側(cè)響起厘惦,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎循头,沒想到半個(gè)月后绵估,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡卡骂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年国裳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片全跨。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缝左,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出浓若,到底是詐尸還是另有隱情渺杉,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布挪钓,位于F島的核電站是越,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏碌上。R本人自食惡果不足惜倚评,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望馏予。 院中可真熱鬧天梧,春花似錦、人聲如沸霞丧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至后豫,卻和暖如春悉尾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挫酿。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工焕襟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人饭豹。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像务漩,于是被迫代替她去往敵國(guó)和親拄衰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 10,970評(píng)論 6 13
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法饵骨,類相關(guān)的語法翘悉,內(nèi)部類的語法,繼承相關(guān)的語法居触,異常的語法妖混,線程的語...
    子非魚_t_閱讀 31,631評(píng)論 18 399
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,129評(píng)論 25 707
  • Y同學(xué),你好: 我最近看了一個(gè)電視劇叫《錦繡未央》轮洋,特別討厭里面的李長(zhǎng)樂那樣的人制市。而事實(shí)上,我德才容工還均不如李長(zhǎng)...
    2017安好閱讀 220評(píng)論 0 0
  • 何以鄭家姊妹弊予、白流蘇會(huì)被定調(diào)以「女結(jié)婚員」祥楣?她們以為如何操作能夠提升她們做為「女結(jié)婚員」的「價(jià)值」?試各從小說中舉...
    耿涌閱讀 312評(píng)論 0 0