欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      傳智播客PHP教程.zend.framework視頻教程簡(jiǎn)介

      時(shí)間:2019-05-15 10:53:36下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《傳智播客PHP教程.zend.framework視頻教程簡(jiǎn)介》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《傳智播客PHP教程.zend.framework視頻教程簡(jiǎn)介》。

      第一篇:傳智播客PHP教程.zend.framework視頻教程簡(jiǎn)介

      [視頻簡(jiǎn)介:]

      本教程貫穿了兩個(gè)軟件公司常用的兩個(gè)項(xiàng)目,數(shù)據(jù)采集系統(tǒng)和購(gòu)物車(chē),共分20講,全面細(xì)致的講解了如何正確的使用zend framework框架到網(wǎng)站開(kāi)發(fā)中,zend framework 是官方推薦的PHP mvc框架,功能強(qiáng)大,后勁十足,也正是它太強(qiáng)大了,所以很多PHP程序員對(duì)它望而生畏,不敢去學(xué)習(xí)掌握它,真的有那么難嗎? 呵呵,看完本教程你就會(huì)發(fā)現(xiàn),喔!不過(guò)如此。

      韓老師這套zf視頻教程是目前市面上講解最全面的zend framework視頻教程,從本質(zhì)上深入淺出的分析了zend framework運(yùn)行原理。

      韓順平老師從事多年的軟件開(kāi)發(fā)和培訓(xùn)教學(xué),非常清楚那些容易使新手困惑的問(wèn)題,在學(xué)習(xí)過(guò)程中會(huì)碰到的攔路虎,韓老師結(jié)合了多年實(shí)際開(kāi)發(fā)與教學(xué)經(jīng)驗(yàn),收集了眾多學(xué)員在學(xué)習(xí)中常提到的問(wèn)題,對(duì)平時(shí)講課的內(nèi)容進(jìn)行了精心整理。讀者從本視頻中不僅可以學(xué)習(xí)到zend framework框架本身方面的知識(shí),還能學(xué)到了許多編程思想和實(shí)際操作手法,仿佛韓老師在你面前進(jìn)行現(xiàn)場(chǎng)演示一樣。本視頻不僅全面的介紹了zend framework本身,最重要還交會(huì)讀者去掌握編程思想,找到編程感覺(jué),而不是死記硬背語(yǔ)言本身,視頻中涉及到的應(yīng)用問(wèn)題分析,遠(yuǎn)遠(yuǎn)超了一個(gè)PHP程序員在學(xué)習(xí)和應(yīng)用zend framework過(guò)程中所有可能碰到的問(wèn)題。

      本視頻不僅講概念,講怎么做,還告訴讀者為什么;不僅講操作技能,還貫穿一些系統(tǒng)的理論,這樣讀者才不至于不明不白,或是似乎明白,但不知道具體該怎么干。本視頻一步步引導(dǎo)讀者深入,使讀者輕松愉快、興趣盎然、水到渠成、潛移默化地掌握PHP編程及許多其他的軟件開(kāi)發(fā)思想。

      [聲明:]

      本課程是由傳智播客韓順平老師錄制,任何人不能用此教程牟利,違者必究。但是:在不收取其他人費(fèi)用的前提下,您可以自由的分發(fā)此視頻教程。

      [聯(lián)系我們:]

      在學(xué)習(xí)過(guò)程中如果遇到問(wèn)題可以通過(guò)以下聯(lián)系方式與我們?nèi)〉寐?lián)系,另外還有更多傳智播客PHP內(nèi)部視頻見(jiàn):

      網(wǎng)址:http://php.itcast.cn 或者 http://

      電話(huà):010-51552111E-mail:hsp@itcast.cn

      第二篇:傳智播客 PHP程序員筆記第一天

      做網(wǎng)站 Web程序。

      需要制作一臺(tái)可以在網(wǎng)絡(luò)上被別人訪(fǎng)問(wèn)到的機(jī)器。

      安裝了瀏覽器的計(jì)算機(jī):

      browser端 能夠提供網(wǎng)絡(luò)資源的計(jì)算機(jī):(網(wǎng)站在這臺(tái)計(jì)算機(jī)上),能夠提供某種服務(wù)。Server端。

      B/S是什么意思? 瀏覽器/服務(wù)器的架構(gòu):

      請(qǐng)求:瀏覽器端向服務(wù)器端發(fā)送數(shù)據(jù)。Request 響應(yīng):服務(wù)器向?yàn)g覽器端發(fā)送數(shù)據(jù)?;貞?yīng),Response

      什么樣的計(jì)算機(jī)叫做服務(wù)器端? 安裝了服務(wù)器軟件的計(jì)算機(jī)。

      Web服務(wù)器軟件:iis,nginx,apache。

      其中apache還是目前與php配合使用最多的服務(wù)器軟件:

      安裝apache這個(gè)軟件,使jsj成為一臺(tái)web服務(wù)器。

      http:// Apache的默認(rèn)的文檔目錄 apache的安裝目錄下/htdocs/

      什么是靜態(tài)網(wǎng)站,動(dòng)態(tài)網(wǎng)站?

      靜態(tài),網(wǎng)站上所有的內(nèi)容,都是由靜態(tài)頁(yè)面提供的。

      動(dòng)態(tài):網(wǎng)站的內(nèi)容,是來(lái)源于某個(gè)數(shù)據(jù)源(數(shù)據(jù)庫(kù),互聯(lián)網(wǎng)),而,在需要展示某些數(shù)據(jù)時(shí),通過(guò)某種語(yǔ)言,將數(shù)據(jù)從數(shù)據(jù)源內(nèi)提取,然后再展示到頁(yè)面上。

      如果需要做動(dòng)態(tài)網(wǎng)站,需要

      1,數(shù)據(jù)源(數(shù)據(jù)庫(kù))mysql數(shù)據(jù)庫(kù)

      2,某種語(yǔ)言(用于提取和展示數(shù)據(jù)之用)PHP

      Amp開(kāi)發(fā):

      利用apache作為web服務(wù)器,使別人可以訪(fǎng)問(wèn)到我們的網(wǎng)站 利用mysql作為數(shù)據(jù)源,可以保存動(dòng)態(tài)網(wǎng)站所需要的數(shù)據(jù) 利用php來(lái)獲得某個(gè)操作所需要的數(shù)據(jù)。

      小測(cè)試: 輸出1-100 編寫(xiě)php文件:

      訪(fǎng)問(wèn)這個(gè)php文件:

      發(fā)現(xiàn),可以訪(fǎng)問(wèn)到,但是不能解析。

      Apache只有提供被訪(fǎng)問(wèn)的功能,而不能提供解析php代碼的功能。

      因此需要安裝php程序,提供解析php代碼的功能:

      安裝PHP:

      所有的請(qǐng)求都是web服務(wù)器來(lái)接收的(apache),但是其中某些資源需要php來(lái)處理。通常的處理方式,是將php作為apache內(nèi)部的一個(gè)模塊來(lái)管理的。

      將php安裝成apache模塊:

      使用一個(gè)apache的指令,loadModule來(lái)完成:

      解壓php的安裝包:

      不需要安裝可以直接執(zhí)行 將php軟件復(fù)制到相應(yīng)的目錄: E:/amp/php

      由于不需要安裝,目錄內(nèi)的可執(zhí)行文件直接可以使用:

      在php目錄內(nèi),有個(gè)文件,就是php為apache提供的apache模塊:

      需要使用apache的LoadModule載入這個(gè)模塊即可:

      需要在apache的配置文件內(nèi),使用上面的LoadModule指令: apache的配置文件在 apache的安裝目錄/Conf/httpd.conf

      增加如下指令即可:

      修改配置文件后,需要重啟動(dòng)apache服務(wù)才可以:

      配置apache,告知apache,哪樣的前請(qǐng)求需要調(diào)用php來(lái)解析,而哪些不需要: 通過(guò)請(qǐng)求的資源的后綴名

      使用apache的FilesMatch指令來(lái)完成: 當(dāng)匹配到php后綴時(shí),調(diào)用php來(lái)處理: Apache的配置文件內(nèi):

      請(qǐng)求php文件時(shí),php代碼可以執(zhí)行:

      大家可以使用phpinfo()函數(shù)來(lái)測(cè)試以下,當(dāng)前的php運(yùn)行的環(huán)境:

      安裝php后,需要配置一些最基本的配置項(xiàng): 修改php的配置文件: Php的安裝目錄/php.ini

      根據(jù)需要,將相應(yīng)的更改成php.ini即可:

      由于php作為apache一個(gè)模塊,因此需要告知apache,在哪里才能找到php的配置文件。利用apache的指令PhpIniDir來(lái)完成:

      修改配置文件,達(dá)到某些目的:

      1,時(shí)區(qū)

      2, php擴(kuò)展文件的目錄。Php的很多功能,并不是內(nèi)置到php的軟件內(nèi)的。在需要使用某個(gè)功能時(shí),再載入即可。這個(gè)擴(kuò)展的功能文件是被保存到某個(gè)目錄內(nèi)的,稱(chēng)之為php的擴(kuò)展目錄: Extension_dir:

      修改完了php的配置,也需要重啟apache才能生效

      如果我們的php需要操作數(shù)據(jù)的話(huà),需要利用數(shù)據(jù)軟件了。安裝Mysql。

      1,安裝 2,配置

      配置mysql的安裝目錄,和mysql數(shù)據(jù)的保存目錄:

      安裝完成時(shí),勾選運(yùn)行配置向?qū)?,完成配置的過(guò)程:

      配置字符集:

      簡(jiǎn)單介紹Mysql: 數(shù)據(jù)庫(kù)服務(wù)器:

      屬于server端。因此,需要等待某個(gè)程序請(qǐng)求他才可以運(yùn)行。

      能夠?qū)ysql數(shù)據(jù)庫(kù)服務(wù)器發(fā)出請(qǐng)求的我們稱(chēng)之為mysql客戶(hù)端。

      C/S Client客戶(hù)端

      Server服務(wù)器

      在安裝完mysql后,其實(shí)安裝了2個(gè)軟件1,mysql的服務(wù)器端,2,mysql的客戶(hù)端。

      我們需要使用php來(lái)操作mysql。

      其實(shí) 在php操作mysql的過(guò)程中,php就變成了 mysql的客戶(hù)端。

      Php能夠作為mysql的客戶(hù)端,使用php的php_mysql.dll這個(gè)擴(kuò)展完成,而且,這個(gè)擴(kuò)展不是默認(rèn)開(kāi)啟的。

      開(kāi)啟相應(yīng)的mysql的操作擴(kuò)展,利用php的指令extension來(lái)完成。Php.ini:

      B/S C/S

      1,服務(wù)器在監(jiān)聽(tīng)(運(yùn)行),提供某個(gè)服務(wù)

      2,瀏覽器或者客戶(hù)端,對(duì)服務(wù)器發(fā)出請(qǐng)求。在發(fā)送請(qǐng)求時(shí),請(qǐng)求的數(shù)據(jù)一定要按照某種數(shù)據(jù)格式才可以。數(shù)據(jù)格式在網(wǎng)絡(luò)數(shù)據(jù)傳輸時(shí)稱(chēng)之為網(wǎng)絡(luò)協(xié)議。3,服務(wù)器接收到請(qǐng)求后,會(huì)根據(jù)請(qǐng)求數(shù)據(jù),進(jìn)行相應(yīng)的操作。4,將處理好的結(jié)果返回給瀏覽器(客戶(hù)端),回應(yīng)。Response 5,瀏覽器端(客戶(hù)端)對(duì)回應(yīng)的數(shù)據(jù)進(jìn)行展示輸出,b/s 都是用瀏覽器發(fā)出請(qǐng)求的。

      http https c/s架構(gòu),都是采用某個(gè)服務(wù)專(zhuān)用的客戶(hù)端發(fā)出的請(qǐng)求。

      Bs架構(gòu)通常,任何兩次請(qǐng)求回應(yīng)周期是沒(méi)有任何聯(lián)系的。在發(fā)出請(qǐng)求時(shí),都需要先建連接。

      Cs通常,在連接一次之后,通常就會(huì)保持住這個(gè)連接,后續(xù)的操作,就不需要再次建立連接了。

      PHP與apache聯(lián)系:

      1,php作為apache的模塊而存在。loadModule 2,web服務(wù)器與php之間通過(guò) CGI方式產(chǎn)生聯(lián)系。CGI(通用網(wǎng)關(guān)接口),IIS+PHP?,F(xiàn)在CGI被fastCGI。Nginx+PHP

      apache的虛擬主機(jī):

      通常一個(gè)web服務(wù)器,代理的是一個(gè)網(wǎng)站。

      有時(shí)我們需要利用一個(gè)web服務(wù)器,管理多個(gè)站點(diǎn)。不同的站點(diǎn)擁有獨(dú)立的域名。

      通過(guò)配置apache服務(wù)器,達(dá)到,訪(fǎng)問(wèn)

      Test.kang.com時(shí),看到的是test目錄的內(nèi)容。Shop.kang.com時(shí),看到的是shop目錄的內(nèi)容

      Apache的基于域名的虛擬主機(jī)技術(shù):

      主機(jī):一個(gè)網(wǎng)站,就是一些php文件的集合,一個(gè)保存php文件的目錄 域名:指向某個(gè)網(wǎng)站的名稱(chēng)。

      通過(guò)修改apache配置文件達(dá)到效果:

      Apache/comf/httpd.conf 原則上在這個(gè)配置文件內(nèi)寫(xiě)虛擬主機(jī)的配置就可以了。但是通常我們都是將虛擬主機(jī)的配置寫(xiě)到某個(gè)單獨(dú)的配置文件內(nèi),然后將這個(gè)虛擬主機(jī)配置文件再載入到apache的這個(gè)httpd.conf配置文件內(nèi)。引入的操作:

      虛擬主機(jī)的專(zhuān)門(mén)的配置文件:

      編輯這個(gè)虛擬主機(jī)文件,增加虛擬主機(jī):

      在配置文件內(nèi),每一個(gè)指令段就配置了一個(gè)虛擬主機(jī)。增加一個(gè)虛擬主機(jī),就是:增加一個(gè)VirualHost指令段即可:

      域名和目錄是一個(gè)虛擬虛擬主機(jī)最基本的必備元素。

      完成以上的操作,apache配置已經(jīng)完成,apache上已經(jīng)存在兩個(gè)虛擬主機(jī)了:

      在配置了虛擬主機(jī)之后,我們對(duì)web服務(wù)器的默認(rèn)訪(fǎng)問(wèn)(沒(méi)有使用配置的虛擬主機(jī)域名的訪(fǎng)問(wèn)),都會(huì)訪(fǎng)問(wèn)到默認(rèn)的主機(jī)上。

      默認(rèn)的主機(jī):

      1,在配置了虛擬主機(jī)后:默認(rèn)的主機(jī)就是 第一個(gè)配置的虛擬主機(jī) 2,在沒(méi)有配置虛擬主機(jī)時(shí),是htdocs目錄。

      那么怎么才能在使用虛擬主機(jī)的前提下,讓localhost訪(fǎng)問(wèn)到原來(lái)的htdocs?

      如何能夠通過(guò)在瀏覽器上輸入相應(yīng)的虛擬主機(jī)域名訪(fǎng)問(wèn)到我們的虛擬主機(jī)呢? 在瀏覽器端,需要通過(guò)相應(yīng)的域名,解析成目標(biāo)服務(wù)器的ip地址才可以。

      可以通過(guò)過(guò)瀏覽器端操作系統(tǒng)上自帶的 域名解析文件完成。Hosts

      配置虛擬主機(jī)時(shí),常用的配置:

      目錄的權(quán)限的配置

      利用apache的directory指令段完成配置 看 httpd.conf的配置:

      目錄級(jí)別的配置,對(duì)當(dāng)前目錄,及其后代目錄有效果。

      如果在apache的配置文件內(nèi),沒(méi)有對(duì)某個(gè)目錄進(jìn)行配置,則采用默認(rèn)的目錄配置

      可以通過(guò)修改默認(rèn)的配置達(dá)到目的,但是通常是針對(duì)目錄進(jìn)行單獨(dú)配置: 增加一個(gè) Directory指令段:

      為了將目錄與虛擬主機(jī)聯(lián)系起來(lái),通常在VirtualHost內(nèi),使用Directory指令 Conf/extra/httpd-vhosts.conf

      直接訪(fǎng)問(wèn)目錄的配置:

      在訪(fǎng)問(wèn)目錄時(shí),先檢測(cè)當(dāng)前目錄是否配置了目錄索引頁(yè),如果配置了索引頁(yè),則展示索引頁(yè)的內(nèi)容。目錄的索引頁(yè)使用apache的指令 directoryIndex完成配置。這個(gè)指令是可以寫(xiě)到directory段內(nèi)。

      如果沒(méi)有配置目錄索引頁(yè):則需要將目錄的的內(nèi)容以列表的形式顯示出來(lái),但是是通過(guò)配置apache的指令options加以配置,是否可以顯示目錄的索引列表。

      可以在配置 options時(shí) 增加上允許符號(hào)連接的配置:

      Apache的配置文件系統(tǒng):

      Apache程序,只會(huì)在apache服務(wù)器啟動(dòng)時(shí),讀取apache配置文件的內(nèi)容,稱(chēng)之為apache主配置文件。

      一旦配置文件的語(yǔ)法出錯(cuò),就會(huì)導(dǎo)致apache服務(wù)器啟動(dòng)失敗,提示:

      Apache提供一個(gè)apache的配置文件檢查的功能:

      也可以通過(guò) cmd,命令行運(yùn)行:

      Apache還有一個(gè)配置文件,稱(chēng)之為apache的分布式配置文件,apache允許在某個(gè)目錄內(nèi)部,使用獨(dú)立的配置文件,來(lái)配置當(dāng)前目錄及其后代目錄的中的一些設(shè)置。但是此時(shí)配置文件名稱(chēng),就不是httpd.conf了 而是.htaccess

      在這個(gè).htaccess配置文件中配置的內(nèi)容,只能是目錄級(jí)別的配置。

      但是默認(rèn)情況下,分布式配置文件是不可以使用的。可以通過(guò)在主配置文件中使用apache的 Allowoverride指令加以配置。由于分布式配置文件是配置目錄的,因此 allowoverride也是需要寫(xiě)到Directory段。

      分布式與主配置文件的區(qū)別:

      1,主配置文件需要保存到Conf目錄中,而分布式需要保存到所有需要配置的目錄中

      2,主配置文件只要在apache啟動(dòng)時(shí),才讀取,而分布式配置文件,在apache訪(fǎng)問(wèn)到某個(gè)目錄時(shí)都會(huì)讀取一次。

      作業(yè)

      1,每個(gè)人配置一個(gè)虛擬主機(jī): 域名是 test.ip.com Test.100.com

      2,在test.ip.com上增加一個(gè)表單頁(yè)面 Welcome.html頁(yè)面

      最好在表單提交時(shí),驗(yàn)證姓名不能為空,為空給出提示,不能提交。

      分析上面的例子:

      發(fā)生了幾次請(qǐng)求和回應(yīng)的過(guò)程。

      第三篇:傳智播客PHP教學(xué)之PHP基本語(yǔ)法

      PHP基本語(yǔ)法

      36講 PHP基本語(yǔ)法介紹 PHP數(shù)據(jù)類(lèi)型介紹.............................................................................2 37講 整型細(xì)節(jié)說(shuō)明........................................................................................................................3 38講 布爾細(xì)節(jié) 浮點(diǎn)數(shù)細(xì)節(jié) 字符串細(xì)節(jié) 算術(shù)運(yùn)算符①..........................................................4 39講 算術(shù)運(yùn)算符② 比較運(yùn)算符 邏輯運(yùn)算符............................................................................5 40講 三元運(yùn)算符 類(lèi)型運(yùn)算符 運(yùn)算符優(yōu)先級(jí)............................................................................9 41講 順序控制 分支控制(if ifelse switch)程序流程圖............................................................10 42講 循環(huán)控制①(for)..................................................................................................................15 43講 循環(huán)控制②(while dowhile)打印金字塔案例..................................................................16 45講 break語(yǔ)句 continue語(yǔ)句 常量.........................................................................................19 46講 函數(shù)基本概念 函數(shù)快速入門(mén)............................................................................................22 47講 函數(shù)使用 函數(shù)調(diào)用初步理解............................................................................................25 48講 函數(shù)調(diào)用深入理解 函數(shù)使用注意事項(xiàng)①........................................................................26 49講 函數(shù)使用注意事項(xiàng)② 函數(shù)作業(yè)布置................................................................................29 50講 函數(shù)再回顧 自定義函數(shù)....................................................................................................30 51講 位運(yùn)算①.............................................................................................................................31 52講 位運(yùn)算②.............................................................................................................................32 53講 數(shù)組介紹 數(shù)組的創(chuàng)建 數(shù)組的遍歷..................................................................................34 54講 數(shù)組的引用 數(shù)組使用細(xì)節(jié)①............................................................................................36 55講 數(shù)組使用細(xì)節(jié)② 數(shù)組運(yùn)算符 數(shù)組作業(yè)評(píng)講① 數(shù)組小結(jié)............................................38 56講 排序介紹 冒泡排序............................................................................................................40 57講 選擇排序 插入排序 快速排序..........................................................................................42 58講 順序查找 二分查找............................................................................................................44 59講 多維數(shù)組 數(shù)組作業(yè)評(píng)講②................................................................................................46

      36講 PHP基本語(yǔ)法介紹 PHP數(shù)據(jù)類(lèi)型介紹

      更新時(shí)間:2012年11月02日16時(shí)44分 來(lái)源: 1.1

      單行注釋 // #

      php的基本語(yǔ)法加強(qiáng) Parse : 解析 error : 錯(cuò)誤 syntax : 語(yǔ)法

      php 可以和 html 混合使用 ②

      php 的變量的定義使用

      //php中,定義一個(gè)變量要以$符號(hào)打頭

      $a=890;//我定義了一個(gè)變量, 該變量名叫 $a , 然后給該變量賦了一個(gè)值890 ③

      php 的變量的數(shù)據(jù)類(lèi)型,是變化的,php變量的數(shù)據(jù)類(lèi)型是由運(yùn)行時(shí)的上下文決定 ④

      php區(qū)分大小寫(xiě) $i = 89;$I=90;$abc=90;$Abc=900;

      php 的變量的名稱(chēng),應(yīng)當(dāng)以字母或者下劃線(xiàn)開(kāi)頭,不要用數(shù)字開(kāi)頭,也不要用特殊字符開(kāi)頭.$3abc=89;

      php 數(shù)據(jù)類(lèi)型有哪些? 有三大類(lèi)

      1.基本數(shù)據(jù)類(lèi)型 1.1 整型 1.2 小數(shù)型(浮動(dòng)數(shù))包含單精度和雙精度 1.3 布爾類(lèi)型(表示真,和 假)1.4 字符串 2.復(fù)合數(shù)據(jù)類(lèi)型 2.1 數(shù)組(array)2.2 對(duì)象(object)3.特殊數(shù)據(jù)類(lèi)型 3.1 null

      3.2 資源類(lèi)型(resource)

      37講 整型細(xì)節(jié)說(shuō)明

      更新時(shí)間:2012年11月04日19時(shí)18分 來(lái)源: 基本數(shù)據(jù)類(lèi)型的入門(mén)案例: ■ 整型

      整數(shù)類(lèi)型可以表示一個(gè)整數(shù),比如:

      $ts=1;$ts=-12;■ 布爾類(lèi)型

      布爾型可以表示真或者假,比如:

      $ts=true;$ts=false;■ 小數(shù)類(lèi)型

      小數(shù)類(lèi)型可以表示一個(gè)小數(shù)(float,double)

      $ts=1.12 $ts=3.1415926 ■ 字符串類(lèi)型

      字符串類(lèi)型可以表示一個(gè)字符串

      $ts=“我是一個(gè)好人 hello” 基本概念: 何為定義一個(gè)變量

      $a=90;//相當(dāng)于我們定義了一個(gè)變量 $a,并賦值90 ?>

      什么叫給變量賦值

      $a=78;

      $a=8;//表示用新的值替代 78

      $a=”hello”;//表示$a 的類(lèi)型變化.?>

      整型的細(xì)節(jié)討論

      ①在php中一個(gè)整型數(shù)據(jù)可以用十進(jìn)制,也可以用八進(jìn)制和十六進(jìn)制 比如 :

      $a = 0123;// 八進(jìn)制數(shù)(是以0開(kāi)頭)$a = 0x1A;// 十六進(jìn)制數(shù)

      0123 = 3*8的0次方 + 2*8的1次方+ 1*8的二次方 =3*1+2*8+1*64=83

      0x1A= A*16的0次方 +1*16的一次方=10+16=26

      $a=123=3*10的0次方+2*10的1此方+1*10的二次方=3+20+100=123 ② php的整數(shù)都是有符號(hào)數(shù).通過(guò)該圖,我們可以看出,php的整數(shù)的二進(jìn)制的最高位表示符號(hào) ③ 通過(guò) PHP_INT_SIZE

      可以顯示我們自己的機(jī)器,一個(gè)整數(shù)用幾個(gè)字節(jié)表示 echo PHP_INT_SIZE;

      通過(guò)PHP_INT_MAX 可以顯示int 最大的數(shù)有多少 echo PHP_INT_MAX;

      請(qǐng)問(wèn)? 為什么 PHP_INT_MAX是 2147483647 我們一起推一下

      請(qǐng)問(wèn)? php 的int 型,負(fù)數(shù)最大表示多少? 負(fù)數(shù)和正數(shù)一樣大 2的31次方減一

      ④ 如果一個(gè)整數(shù)的范圍超過(guò)了最大范圍,則自動(dòng)變成float

      38講 布爾細(xì)節(jié) 浮點(diǎn)數(shù)細(xì)節(jié) 字符串細(xì)節(jié) 算術(shù)運(yùn)算符①

      更新時(shí)間:2012年11月06日13時(shí)53分 來(lái)源: 學(xué)生的問(wèn)題?

      $a=2;問(wèn)在內(nèi)存中 2是怎樣存在的

      00000000 00000000 00000000 00000010-> 0*2的0次方+1*2的一次方+..0=0+2=2 $a=-2 問(wèn)在內(nèi)存中形式

      布爾類(lèi)型

      簡(jiǎn)單的說(shuō) 布爾類(lèi)型就兩個(gè)值 true, 一個(gè)false;舉例: //布爾類(lèi)型 $a=true;$b=false;布爾值 FALSE 自身 整型值 0(零)浮點(diǎn)型值 0.0(零)空 字符串, 以及 字符串“0” 不包括任何元素的數(shù)組

      不包括任何成員變量的對(duì)象(僅PHP 4.0 適用)特殊類(lèi)型 NULL(包括尚未設(shè)定的變量)

      $conn=mysql_connect(“l(fā)ocalhost”,”root”,”root”);if($conn){

      echo ?ok?;}else{

      echo ?沒(méi)有ok?;}

      浮點(diǎn)數(shù)的細(xì)節(jié)

      1.浮點(diǎn)數(shù)(也叫雙精度數(shù)或?qū)崝?shù))

      2.浮點(diǎn)數(shù)的字長(zhǎng)和平臺(tái)相關(guān),通常最大值是 1.8e308 并具有 14 位十進(jìn)制數(shù)字的精度(這個(gè)限制很重要)? 精度要從左邊開(kāi)始的第一個(gè)非0的數(shù)字計(jì)算.字符串的細(xì)節(jié) $a=”hello”;

      請(qǐng)問(wèn) $a 占用了多個(gè)是字節(jié) 5個(gè)字節(jié) 一個(gè)字符串類(lèi)型可以表示多大的串?

      ①理論上,我們對(duì)字符串大小沒(méi)有限制,即只有不超過(guò)內(nèi)存就可.②我們定義字符串的時(shí)候,可以用單引號(hào),也可以使用雙引號(hào) 區(qū)別如下: $i=90;

      $user1=“hello$i”;

      $user2='hello$i';

      echo '
      user1='.$user1;

      echo '
      user2='.$user2;

      從上面案例我們看出, 當(dāng)一個(gè)變量包含在 “”號(hào)中時(shí),會(huì)輸出它的值,而包含在?? 中是輸出其字符本身.案例2

      如果字符串是包圍在單引號(hào)(?)中, 除了來(lái)處理 ” 時(shí),會(huì)輸出 ” 外,其它規(guī)則都一樣

      php數(shù)據(jù)類(lèi)型的自動(dòng)轉(zhuǎn)換

      php的表達(dá)式

      所謂表達(dá)式,就是任何有值的東西.$a=90+89;

      php的算術(shù)運(yùn)算符 +、-、*、/、%

      39講 算術(shù)運(yùn)算符② 比較運(yùn)算符 邏輯運(yùn)算符

      php的算術(shù)運(yùn)算符

      更新時(shí)間:2012年11月08日17時(shí)42分 來(lái)源: +、-、*、/、% $a=90;

      $b=7;

      if($a%$b==0){

      echo '能整除';

      }else{

      echo '不能整除!';

      }

      ++ 和 – 快速入門(mén): $a=90;

      $a++;//等價(jià)于 $a=$a+1;

      echo $a;

      $b=89;

      $b--;//等價(jià)于$b=$b-1;

      echo '
      '.$b;

      細(xì)節(jié) 我們的++ 和 – 分為前++ 后 ++ ,--也分為 前--$a=56;$b=$a++;echo $b;echo $a;對(duì)上面代碼的分析如下: $a=56;

      //$b=$a++;//等價(jià)于 $b=$a;$a=$a+1;

      $b=++$a;//等價(jià)于 $a=$a+1;$b=$a;

      echo $b.“||”;//-->$b 57

      echo $a;//-->$a 57

      左加 += 左減-=

      左乘 *= 左除 /= 左取模 %= $a=90;

      $a-=90;//$a=$a-90;echo $a;

      比較運(yùn)算符

      案例: $a=2;$b=2.0

      //只有值相等就為true if($a= =$b){

      echo ?$a==$b?;}

      //全等,要求$a 和 $b 值和類(lèi)型要相等 if($a= = =$b){ }

      對(duì)!=!= = 說(shuō)明 //只有值不相等,則為true

      if($a!=$b){

      echo '$a!=$b';

      }

      //只要值不相等,或者類(lèi)型不相等,則為true

      if($a!==$b){

      echo '$a!==$b';

      }

      請(qǐng)編寫(xiě)一個(gè)程序,該程序可以接收兩個(gè)數(shù)(可以是整數(shù),也可是小 數(shù)),并判斷兩個(gè)數(shù)是大于?小于?還是等于? 對(duì)應(yīng)的案例:

      $b=90;

      if($a>$b){

      echo '$a>$b';

      }

      if($a<$b)

      {

      echo '$a<$b';

      }

      if($a==$b){

      echo '$a==$b';

      } ?> 邏輯運(yùn)算符

      要求大家掌握的知識(shí)點(diǎn)有: 搞清每個(gè)邏輯運(yùn)算的規(guī)則 案例 $a=10;$b=7;

      if($a++>8 || $b++>7){

      echo 'ok!';

      }

      echo 'a='.$a.'b='.$b;//把結(jié)果填寫(xiě) $a=10;$b=7;

      if($a++>10 && $b++>7){

      echo 'ok!';

      }

      echo 'a='.$a.'b='.$b;$a=10;$b=7;

      if($a++>18 && $b++>7){

      echo 'ok!';

      }

      echo 'a='.$a.'b='.$b;

      ? 面試題: and && 都表示邏輯與,他們的區(qū)別在什么地方 主要體現(xiàn)在優(yōu)先級(jí)上面 and 的優(yōu)先級(jí) and< = <&& or < = < || 配合案例: $e = false || true;$f = false or true;var_dump($e, $f);$e 是 true $f 是 false;.....40講 三元運(yùn)算符 類(lèi)型運(yùn)算符 運(yùn)算符優(yōu)先級(jí)

      php基本語(yǔ)法-三元運(yùn)算符 基本語(yǔ)法

      表達(dá)式1 ? 表達(dá)式2 : 表達(dá)式3 規(guī)則:

      更新時(shí)間:2012年11月11日18時(shí)53分 來(lái)源: 如果表達(dá)式1 的運(yùn)算結(jié)果是 true, 則取 表達(dá)式2 的值,否則,取表達(dá)式3的值.舉例 :

      $a=90;

      $b=180;

      $c=$a>$b?(12-10):“hello,world”;

      echo 'c=='.$c;?>

      php 的字符串運(yùn)算符 案例:

      $a=“hello,world”;

      $b=123;

      $c=$b.$a;//$a 具體表示內(nèi)容和 $b 表示內(nèi)容拼接

      echo $c;

      從上面案例我們看出,當(dāng)兩個(gè)變量(基本數(shù)據(jù)類(lèi)型)用.連接的時(shí)候,就表示把他們的內(nèi)容拼接

      類(lèi)型運(yùn)算符(了解)

      基本語(yǔ)法是: instanceof 用于確定一個(gè) PHP 變量是否屬于某一類(lèi) class 的實(shí)例,通常在面向?qū)ο箝_(kāi)發(fā)中可能用的.class Dog{}

      class Cat{}

      //創(chuàng)建一個(gè)對(duì)象

      $cat1=new Cat;

      //var_dump($cat1 instanceof Dog);

      //在實(shí)際開(kāi)發(fā)中,我們可能需要去判斷某個(gè)變量是否是某個(gè)類(lèi)型

      if($cat1 instanceof Cat){

      echo '$cat1 是一只貓';

      }

      運(yùn)算符優(yōu)先級(jí)的說(shuō)明: //****運(yùn)算優(yōu)先級(jí)*****

      ? 如果將來(lái)你們有一個(gè)表達(dá)式很復(fù)雜,建議使用()來(lái)指定其運(yùn)算優(yōu)先級(jí)

      $a=3;

      $b=++$a*3;

      echo $b;

      41講 順序控制 分支控制(if ifelse switch)程序流程圖

      更新時(shí)間:2012年11月16日10時(shí)30分 來(lái)源:

      php程序的三大流程控制 ①

      順序控制(從上到下,從左到右)$a=7;

      echo “a=”.a;

      echo “hello!”;

      $a++;

      echo “a=”.a;

      echo “O(∩_∩)O”;

      $a++;

      echo “a=”+a;

      所謂順序控制流程,就是不加控制的流程,默認(rèn)情況,會(huì)按照,順序來(lái)執(zhí)行你編寫(xiě)的代碼 ②

      分支控制

      一個(gè)簡(jiǎn)單的定義: 有選擇的來(lái)執(zhí)行我們的代碼.分為 1.單分支 2.雙分支 3 多分支 1.單分支的基本語(yǔ)法結(jié)構(gòu) if(條件表達(dá)式){

      語(yǔ)句;

      //...//....}

      這里我們,這里的條件表達(dá)式不管多復(fù)雜,最總運(yùn)算的結(jié)果就是 true 或者 false;快速入門(mén):

      編寫(xiě)一個(gè)程序,可以輸入人的年齡,如果該同志 的年齡大于18歲,則輸出 “你年齡大于18,要對(duì) 自己的行為負(fù)責(zé)!” $age=7;

      if($age>18){

      echo '你的年齡大于18';

      } 2.雙分支 基本語(yǔ)法結(jié)構(gòu) if(條件表達(dá)式){

      //n多語(yǔ)句;}else{

      //n多語(yǔ)句;}

      編寫(xiě)一個(gè)程序,可以輸入人的年齡,如果該同志 的年齡大于18歲,則輸出 “你年齡大于18,要對(duì)

      自己的行為負(fù)責(zé)!”。否則 ,輸出”你的年齡不大

      這次放過(guò)你了.” 代碼: $age=4;

      if($age>18){

      echo '你的年齡大于18';

      }else{

      echo '你的年齡小于18';

      }

      echo '
      程序結(jié)束!';

      3.多重分支 基本語(yǔ)法結(jié)構(gòu)是 if(條件表達(dá)式){ //n多語(yǔ)句

      }else if(條件表達(dá)式){ //n 多語(yǔ)句 }else if(條件表示式){ //.}//這里可能還有更多的else if else{ }

      ? 對(duì)上面的結(jié)構(gòu)請(qǐng)注意:

      (1)else if 可以有一個(gè),也可以有多個(gè)(2)else 可以沒(méi)有 快速入門(mén)案例:

      編寫(xiě)一個(gè)程序,可以輸入人的年齡,如果該同志 的年齡大于18歲,則輸出 “你年齡大于18,要對(duì)

      自己的行為負(fù)責(zé),送入監(jiān)獄”。如果該同志的年

      齡大于10歲并且小于等于18,則輸出 “你的年齡

      也不小了,把你送少管所.”。其它情況,則輸出

      “小孩子,下次注意”。代碼如下: $age=34;【1】 if($age>18【2】){

      echo '你要被送入監(jiān)獄';【3】 }else if($age>10 【4】 && $age<=18【5】){ echo '送入少管所';【6】 }else{

      echo '下次注意';【7】 }

      echo “over”;【8】 流程分析圖:

      switch分支語(yǔ)句 基本語(yǔ)法結(jié)構(gòu) switch(表達(dá)式){ case 常量1: //n多語(yǔ)句;break;case 常量2: //n多語(yǔ)句 break;defual:

      //n多語(yǔ)句;

      break;} ? 請(qǐng)注意:

      1.case 語(yǔ)句有一到多

      2.defaul 語(yǔ)句可以沒(méi)有(根據(jù)自己代碼的業(yè)務(wù)邏輯)3.通常,在case 語(yǔ)句后,要帶break ,表示退出switch語(yǔ)句 4.常量的類(lèi)型(int, float, 字符串, 布爾型)快速入門(mén)案例: 請(qǐng)編寫(xiě)一個(gè)程序,該程序 可以接收一個(gè)字符,比如 : a,b,c,d,e,f,g

      a表示星期一,b表示星期 二 … 根據(jù)用戶(hù)的輸入顯 示相依的信息.要求使用 switch 語(yǔ)句完成 $myChar=“b”;

      switch($myChar){

      case “a”:

      echo '今天星期一,猴子穿新衣';

      break;

      case “b”:

      echo '今天星期二,猴子當(dāng)小二';

      break;

      case “c”:

      echo '今天星期三,猴子爬雪山';

      break;

      default:

      echo '沒(méi)有匹配的日期';

      }

      echo 'okokook';一個(gè)案例: $i=“11“;

      switch($i){

      case 10:

      echo '10';

      case 1.3:

      echo '11';

      break;

      default:

      echo 'hello';

      //break;

      case 11:

      echo '12';

      break;

      }

      該案例得出一個(gè)結(jié)論: //最終的結(jié)論是:

      首先按照case順序進(jìn)行配置,如果一個(gè)都沒(méi)有匹配到,則執(zhí)行

      default語(yǔ)句的內(nèi)容,直到遇到break,則退出switch Default語(yǔ)句放置的位置對(duì)執(zhí)行的結(jié)果沒(méi)有影響 如果$a=”1”,則會(huì)自動(dòng)轉(zhuǎn)化為整型1

      42講 循環(huán)控制①(for)

      更新時(shí)間:2012年11月19日15時(shí)24分 來(lái)源: 學(xué)生的問(wèn)題: 老師,說(shuō)一下if語(yǔ)句和switch的區(qū)別,及應(yīng)用場(chǎng)景。

      回答: 從我們學(xué)習(xí)if 和 switch 分支看,if 對(duì)某個(gè)范圍的判斷,而switch是對(duì)一個(gè)點(diǎn)的判斷, 所以我們可以這樣去選擇他們: 應(yīng)用場(chǎng)景: 當(dāng)我們 的分支就是幾個(gè)點(diǎn)的時(shí)候(比如判斷坦克的方向),就應(yīng)當(dāng)使用swtich ,如果你的分支是幾個(gè)區(qū)域(范圍)的判斷,則考慮使用if ①

      循環(huán)控制流程 首先說(shuō) for 循環(huán)控制 基本語(yǔ)法結(jié)構(gòu)

      for(循環(huán)初值;循環(huán)的條件;步長(zhǎng)){

      //n多語(yǔ)句;}

      為什么需要循環(huán)控制 ?

      問(wèn)題 : 請(qǐng)輸出9000000句,”你好,北京” 這樣一問(wèn)題: 怎樣讓我們的某段代碼,循環(huán)的執(zhí)行 分析圖

      for($i=0;$i<2;$i++){

      echo '
      你好,北京';

      }

      echo “over”;

      內(nèi)存圖:

      43講 循環(huán)控制②(while dowhile)打印金字塔案例

      更新時(shí)間:2012年11月20日11時(shí)54分 來(lái)源: while循環(huán) 基本語(yǔ)法結(jié)構(gòu)是 while(循環(huán)條件){

      //循環(huán)體 ,語(yǔ)句 }

      案例: 使用while來(lái)打印 10句”你好北京 ” 代碼:

      //*****while循環(huán)*****

      $i=0;//$i循環(huán)控制變量

      while($i<10){

      echo '
      你好北京'.$i;

      //這里我們對(duì)循環(huán)控制變量,自增.$i++;

      } 流程分析圖:

      do..while循環(huán)控制 基本語(yǔ)法結(jié)構(gòu) do{

      //循環(huán)體 }while(循環(huán)條件);

      快速入門(mén): 循環(huán)的顯示 10句,”你好北京”;$i=0;【1】//循環(huán)控制變量 do{

      echo '
      dowhile你好北京'.$i;【2】 //對(duì)循環(huán)控制變量修改

      $i++;【3】//這里有程序員自己控制步長(zhǎng).}while($i<10【4】);執(zhí)行的流程圖:

      綜合案例: 要求:

      請(qǐng)使用循環(huán)控制語(yǔ)句,輸出一個(gè)空心的菱形->兩個(gè)思想

      1.死去活來(lái) 2.先易后難 3.建立自己的函數(shù)庫(kù)和工具庫(kù)(積累)

      *

      * *

      * *

      * *

      *

      但是這個(gè)菱形的層數(shù)可以靈活的變化.比較困難-------》簡(jiǎn)單化

      <-------->

      案例如下:

      //打印出金字塔的一半

      //死去活來(lái)

      //外層的for循環(huán)控制層數(shù)

      for($i=1;$i<=3;$i++){

      //內(nèi)層控制每層*的個(gè)數(shù)

      for($j=1;$j<=$i;$j++){

      echo '*';

      }

      echo '
      ';

      }

      //打印出整個(gè)金字塔

      //如果打印3層

      // * *-> 1 2個(gè)空格 1個(gè)*(1-1)*2+1=// ** ***-> 2 1個(gè)空格 3個(gè)*(2-1)*2+1=// *** *****-> 3 0個(gè)空格 5個(gè)*(3-1)*2+1=

      5$n=20;

      for($i=1;$i<=$n;$i++){

      //在打印*前,先打印空格

      for($k=1;$k<=$n-$i;$k++){

      echo “ ”;

      }

      //內(nèi)層控制每層*的個(gè)數(shù)

      for($j=1;$j<=($i-1)*2+1;$j++){

      echo '*';

      }

      echo '
      ';

      }

      請(qǐng)大家打印出一個(gè)空心金字塔

      *

      * *

      **** 思路:

      我們可以這樣考慮,在給每行輸出* 號(hào)的時(shí)候,要有判斷,(該給*號(hào)給*號(hào),該給空格給空格)

      思路肯定分析:

      和一個(gè)空心的菱形

      45講 break語(yǔ)句 continue語(yǔ)句 常量

      更新時(shí)間:2012年11月23日15時(shí)22分 來(lái)源:

      循環(huán)相關(guān)的語(yǔ)句-break

      基本的概念: 表示結(jié)束當(dāng)前的 for、while、do..while、switch, 流程, 可以給一個(gè)數(shù)字,表示退出到第幾層.快速入門(mén)案例:

      for($i=0;$i<13;$i++){ echo '$i='.$i.“
      ”;if($i==10){

      break;} }

      快速入門(mén)的案例2: $i=0;while(++$i){ switch($i){ case 5:

      echo “quit at 5
      ”;break;case 10:

      echo “quit at 10
      ”;break 2;default: break;}

      }echo '$i='.$i;結(jié)果是: quit at 5 quit at 10 $i=10 分析圖:

      從上面的案例,我們得到幾個(gè)結(jié)論: 1.break語(yǔ)句 默認(rèn)跳出 1層

      2.break語(yǔ)句 后面帶的數(shù)字,不能超過(guò)實(shí)際可以跳出的循環(huán)層數(shù),否則,會(huì)報(bào)fatal error 循環(huán)相關(guān)語(yǔ)句-continue

      基本概念: continue 用于結(jié)束本次循環(huán)剩余代碼,從新開(kāi)始新的一次循環(huán)(如果條件為真,就繼續(xù)執(zhí)行), continue 后面也可以帶數(shù)字,表示從第幾次循環(huán)重新開(kāi)始 快速入門(mén):

      for($i=0;$i<13;$i++){ if($i==10){ continue;}

      echo '$i='.$i.“
      ”;} 結(jié)果 $i=0 $i=1 $i=2 $i=4 $i=5 $i=6 $i=7 $i=8 $i=9 $i=10 $i=11 $i=12 hello 流程

      goto語(yǔ)句

      基本概念: 通過(guò)goto語(yǔ)句我們可以將程序跳轉(zhuǎn)到指定的地方去執(zhí)行.goto 標(biāo)簽;標(biāo)簽: 語(yǔ)句;快速入門(mén)案例: goto a;echo 'aa';a: echo 'bb';快速入門(mén)案例2

      for($i=0,$j=50;$i<100;$i++){ while($j--){

      if($j==17)goto end;} }

      echo “i = $i”;end:

      echo 'j = 17 '.$i.“||”.$j;結(jié)果: j = 17

      php中常量 說(shuō)明:

      所謂常量,我們可以理解成就是特殊的變量: 體現(xiàn)在 1.定義常量前面不需要 $ 2.常量一旦定義,則不能修改其值 3.常量在定義的時(shí)候,就需要它賦初值.4.常量可以通過(guò) define 或者 const

      5.常量的名稱(chēng),我們一般說(shuō)是 全部大寫(xiě),然后用下劃線(xiàn)間隔

      6.什么時(shí)候需要使用常量: 在程序中我們不希望某個(gè)值變化,則考慮使用常量,比如圓周率,稅率....快速入門(mén)案例:

      //第一種方法

      define(“TAX_RATE”,0.08);

      echo TAX_RATE;

      //第二種方法(php5.3)

      const TAX_RATE2=0.1;

      echo '-'.TAX_RATE2;?>

      46講 函數(shù)基本概念 函數(shù)快速入門(mén)

      函數(shù)講解

      提出一個(gè)問(wèn)題? 請(qǐng)大家完成這樣一個(gè)需求:

      更新時(shí)間:2012年11月25日18時(shí)08分 來(lái)源: ①輸入兩個(gè)數(shù),再輸入一個(gè)運(yùn)算符(+,-,*,/),得到結(jié)果.如果我們不考慮使用新的技術(shù),用我們現(xiàn)在的知識(shí)結(jié)構(gòu),完成

      //請(qǐng)大家完成這樣一個(gè)需求:

      //①輸入兩個(gè)數(shù),再輸入一個(gè)運(yùn)算符(+,-,*,/),得到結(jié)果.$num1=34;

      $num2=90;

      $oper=“-”;

      //$res表示結(jié)果

      $res=0;

      switch($oper){

      case “+”:

      $res=$num1+$num2;

      break;

      case “-”:

      $res=$num1-$num2;

      break;

      case “*”:

      $res=$num1*$num2;

      break;

      case “/”:

      $res=$num1/$num2;

      break;

      default:

      echo '運(yùn)算符號(hào)有誤!';

      }

      echo “計(jì)算結(jié)果是=”.$res;?>

      從該代碼分析,我們發(fā)現(xiàn),如果別的頁(yè)面也需要這樣的功能,則代碼的復(fù)用性不好--->函數(shù)引出 現(xiàn)在我們使用函數(shù),來(lái)快速體驗(yàn)好處,示意圖:

      funcs.php(這個(gè)文件,我們定義了一個(gè)函數(shù))

      //我們一個(gè)計(jì)算,+* / 的代碼集合->函數(shù)

      //1.function 是一個(gè)關(guān)鍵字

      //2.jiSuan 函數(shù)名(由程序員取名)

      //3.$num1,$num2,$oper 是函數(shù)的參數(shù)列表(形參)

      function jiSuan($num1,$num2,$oper){

      //$res 表示計(jì)算的結(jié)果

      $res=0;

      switch($oper){

      case “+”:

      $res=$num1+$num2;

      break;

      case “-”:

      $res=$num1-$num2;

      break;

      case “*”:

      $res=$num1*$num2;

      break;

      case “/”:

      $res=$num1/$num2;

      break;

      default:

      echo '運(yùn)算符號(hào)有誤!';

      }

      //表示返回一個(gè)結(jié)果.return $res;

      }

      $a=12;

      $b=45;

      $type=“+”;

      $res=jiSuan($a,$b,$type);

      echo “res=”.$res;?>

      函數(shù)調(diào)用的流程圖 :

      一個(gè)通俗理解圖:

      為了加深大家對(duì)函數(shù)調(diào)用的理解我們,舉例(自己調(diào)用自己的案例)

      function abc($n){

      if($n>2){

      abc(--$n);

      }else{

      echo '$n='.$n.“
      ”;

      }

      }

      abc(4);?>

      函數(shù)自己調(diào)用自己-》這個(gè)就稱(chēng)為遞歸調(diào)用.函數(shù)的深入使用討論 函數(shù)的基本結(jié)構(gòu)

      function 函數(shù)名(參數(shù)列表){

      //函數(shù)體;

      //return 語(yǔ)句;}

      參數(shù)列表可以是多個(gè)參數(shù)

      參數(shù)可以多個(gè),同時(shí),其數(shù)據(jù)類(lèi)型可以是php語(yǔ)言支持的任意類(lèi)型

      函數(shù)名開(kāi)頭的字母,以_ 或者 A_Z 或者 a-z ,不要用數(shù)字或者特殊字符開(kāi)頭 ④

      函數(shù)名不區(qū)分大小寫(xiě) ,這個(gè)與變量不一樣.function Abc(){} 和 function abc(){} 是同一個(gè)函數(shù).⑤

      一個(gè)自定義函數(shù)中的變量是局部的,函數(shù)外不生效 案例:

      function abc3()

      {

      $a=45;

      echo 'a='.$a;

      }

      abc3();

      echo 'aa='.$a;// 這里會(huì)報(bào)一個(gè)錯(cuò)誤: Undefined variable: a ? 在php中有三種提示 notice : 注意 waring: 警告 error : 錯(cuò)誤

      使用global全局變量的時(shí)候,可使用在函數(shù)外的變量 案例,和分析圖 $a=12;function abc3(){

      //global $a;//我要在abc3中使用到外層 $a;$a+=45;} abc3();echo $a;分析圖:

      49講 函數(shù)使用注意事項(xiàng)② 函數(shù)作業(yè)布置

      更新時(shí)間:2012年11月30日16時(shí)20分 來(lái)源: ⑦

      如果在函數(shù)中,我們不希望使用某個(gè)變量,或者是希望徹底的不再某個(gè)變量,則可以使用 unset(變量名);將該變量徹底刪除.$a=12;

      function abc3($a){

      unset($a);//表示不再abc3函數(shù)范圍內(nèi),不在使用$a,后面需要全新定義;

      $a=45;

      }

      abc3($a);

      echo $a;

      在php函數(shù)中,我們可以給某些參數(shù),賦一個(gè)默認(rèn)的值.案例說(shuō)明:

      function abc($b,$a=2){

      $res=$a+$b;

      return $res;

      }

      $e=70;

      echo abc($e).' ||';

      echo abc($e,90);

      $f=70;

      echo abc($e,$f);

      php傳遞變量的時(shí)候,默認(rèn)是值傳遞,如果需要引用(地址)傳遞,可以使用 &變量名;舉例說(shuō)明:

      50講 函數(shù)再回顧 自定義函數(shù)

      更新時(shí)間:2012年12月03日15時(shí)01分 來(lái)源: 回顧45講49講函數(shù)內(nèi)容,請(qǐng)參考45講到49講筆記內(nèi)容。

      函數(shù)分為兩大類(lèi) ①

      自定義函數(shù) 自己寫(xiě)的函數(shù) ②

      系統(tǒng)函數(shù) php語(yǔ)句本身給你提供,讓你直接使用的函數(shù), php設(shè)計(jì)者認(rèn)為,在項(xiàng)目開(kāi)發(fā)的過(guò)程,很多人都會(huì)用的一下功能,則就直接提供給你?

      比如: 我要取一個(gè)數(shù)的絕對(duì)值?

      funct myAbs($num){

      if($num<0){

      return-$num;}else{

      return $num;} } ?>

      由系統(tǒng)提供.51講 位運(yùn)算①

      更新時(shí)間:2012年12月04日17時(shí)47分 來(lái)源:

      位(bit)運(yùn)算

      二進(jìn)制

      所謂二進(jìn)制就是逢二進(jìn)一(0,1), 因?yàn)槭褂枚M(jìn)制只有 0, 1 兩個(gè)數(shù),簡(jiǎn)單,易于電子方式實(shí)現(xiàn),同時(shí),通過(guò)0,1 組合可以表示任意一個(gè)數(shù).? 二進(jìn)制有三個(gè)重要的概念 1.原碼

      用二進(jìn)制來(lái)表示一個(gè)數(shù),這個(gè)碼就是原碼.------> 原碼 00000000 0000000 0000000 00000101 = 1*2的零次方+0*2的一次方+1* 2的二次方=1+0+4=5 2.負(fù)數(shù)的反碼=它的原碼符號(hào)位不變,其它位取反(0->1,1->0)反碼(正數(shù)的反碼和它的原碼一樣 , 負(fù)數(shù)反碼 是 符號(hào)位不變其它位取反)補(bǔ)碼(正數(shù)的補(bǔ)碼和它的原碼一樣,負(fù)數(shù)的補(bǔ)碼是 它的反碼+1)舉例-1

      -1的原碼 10000000 00000000 00000000 00000001-1的反碼 11111111 11111111 11111111 11111110-1 的補(bǔ)碼 11111111 11111111 111111111 11111111 3.在計(jì)算機(jī)運(yùn)算的時(shí)候,都是以補(bǔ)碼的方式來(lái)運(yùn)算的 4+5=>計(jì)算機(jī) 4-5=4+(-5)

      這句話(huà)意思就是,不管一個(gè)數(shù)是正數(shù)還是負(fù)數(shù),都要被轉(zhuǎn)成補(bǔ)碼,然后進(jìn)行運(yùn)算.位運(yùn)算一覽表

      該圖的前面四個(gè)是位運(yùn)算 其運(yùn)算規(guī)則是:

      按位與& : 兩位全為1,結(jié)果為按位或| : 兩位有一個(gè)為1,結(jié)果為1

      按位異或 ^ : 兩位一個(gè)為0,一個(gè)為1,結(jié)果為1

      按位取反 : 0->1 ,1->0 看看前面給出的題,是否完成 ~2=?

      步驟 : 首先要求出 2的補(bǔ)碼 2是正數(shù) 所以 原碼=反碼=補(bǔ)碼 2 原碼

      00000000 00000000 00000000 00000010 ~2

      11111111 11111111 11111111 11111101(補(bǔ)碼)->原碼 ? 負(fù)數(shù)的 原碼-》反碼-》補(bǔ)碼

      11111111 11111111 11111111 11111101-> 推出其反碼(對(duì)補(bǔ)碼-1)

      11111111 11111111 11111111 11111100 推出原碼

      52講 位運(yùn)算②

      更新時(shí)間:2012年12月06日10時(shí)57分 來(lái)源: 10000000 00000000 00000000 0000011->-~-5=?

      -5 的 補(bǔ)碼找出來(lái).-5 原碼 10000000 00000000 00000000 00000101-5 反碼 11111111 11111111 11111111 11111010-5 補(bǔ)碼 11111111 11111111 11111111 11111011

      ~-5取反 00000000 00000000 00000000 00000100(補(bǔ)碼)4

      2&3=?

      2&3 首先要找到 2 和 3的補(bǔ)碼

      的補(bǔ)碼 00000000 00000000 00000000 00000010

      的補(bǔ)碼 00000000 00000000 00000000 00000011

      2&3 00000000 00000000 00000000 00000010 [補(bǔ)碼

      2|3=?的補(bǔ)碼 00000000 00000000 00000000 00000010

      的補(bǔ)碼 00000000 00000000 00000000 00000011

      2|3

      00000000 00000000 00000000 00000011

      2^3的補(bǔ)碼 00000000 00000000 00000000 00000010

      的補(bǔ)碼 00000000 00000000 00000000 00000011

      2^3 00000000 00000000 00000000 00000001

      13&7=?

      5|4=?

      -3^3=?

      位移運(yùn)算

      在php 中位運(yùn)算有兩種 >>(右移)<<(左移)運(yùn)算的規(guī)則是 :

      算術(shù)右移:低位溢出,符號(hào)位不變,并用符號(hào)位補(bǔ)溢出的高位

      算術(shù)左移: 符號(hào)位不變,低位補(bǔ)0 根據(jù)我們前面的規(guī)范,來(lái)完成幾個(gè)案例 $a=1>>2;1 的補(bǔ)碼

      00000000 00000000 00000000 00000001 1>>2

      00000000 00000000 00000000 00000000

      $b=-1>>2;

      步驟-1 的補(bǔ)碼

      -1 的原碼 10000000 00000000 00000000 00000001

      -1 的反碼 11111111 11111111 11111111 11111110

      -1 的補(bǔ)碼 11111111 11111111 11111111 11111111

      -1 >> 2

      11111111 11111111 11111111 11111111 補(bǔ)碼

      結(jié)果

      補(bǔ)碼->原碼

      反碼 11111111 11111111 11111111 11111110

      原碼 10000000 0000000 00000000 00000001 $c=1<<2;1<<2 1的補(bǔ)碼

      00000000 00000000 00000000 00000001 00000000 00000000 00000000 00000100

      $d=-1<<2;

      53講 數(shù)組介紹 數(shù)組的創(chuàng)建 數(shù)組的遍歷

      更新時(shí)間:2012年12月07日17時(shí)49分 來(lái)源: 10進(jìn)制->2進(jìn)制 7 對(duì) 除

      2數(shù)組(重點(diǎn))提出一個(gè)問(wèn)題?

      一個(gè)養(yǎng)雞場(chǎng)有6只雞,它們的體重分別是3kg,5kg,1kg,3.4kg,2kg,50kg。請(qǐng)問(wèn)這六只雞的總體重是多少?平均體重是多少? 請(qǐng)你用現(xiàn)在掌握的技術(shù)編一個(gè)程序。現(xiàn)在我們使用現(xiàn)有的技術(shù)來(lái)解決問(wèn)題 array01.php $hen1=3;

      $hen2=5;

      $hen3=1;

      $hen4=3.4;

      $hen5=2;

      $hen6=50;

      如果我們的變量很多,如果我們分別取變量名,顯示程序無(wú)法控制.怎么辦?

      我們可以使用一個(gè)新的數(shù)據(jù)類(lèi)型array 數(shù)組,來(lái)統(tǒng)一個(gè)管理這一組數(shù)

      什么是數(shù)組

      可以用于存放多個(gè)數(shù)據(jù)的數(shù)據(jù)類(lèi)型,我們稱(chēng)為數(shù)組 快速體驗(yàn)案例: 用數(shù)組來(lái)解決養(yǎng)雞場(chǎng)的問(wèn)題 //使用數(shù)組來(lái)完成案例

      $hens[0]=3;

      $hens[1]=5;

      $hens[2]=1;

      $hens[3]=3.4;

      $hens[4]=2;

      $hens[5]=50;

      $hens[6]=30;

      $allWeight=0;

      //遍歷整個(gè)數(shù)組

      //有時(shí)為了知道某個(gè)數(shù)組共有多少個(gè)元素,可以使用系統(tǒng)函數(shù)count

      echo “共有”.count($hens).“只雞
      ”;

      for($i=0;$i

      echo “第”.($i+1).“只雞體重=”.$hens[$i].“
      ”;

      $allWeight+=$hens[$i];

      }

      echo '
      總體重是='.$allWeight.'平均體重='.$allWeight/count($hens);小結(jié): 該案例重點(diǎn)說(shuō)明數(shù)組基本使用,細(xì)節(jié)后面說(shuō)

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

      在php中,數(shù)組就是關(guān)鍵字和值的集合,我們可以這樣創(chuàng)建 ①

      創(chuàng)建數(shù)組 $arr[0]=123;$arr[1]=90;$arr[2]=8;幾個(gè)概念:

      [0]-> 這個(gè)我們稱(chēng)為下標(biāo),或者稱(chēng)為 關(guān)鍵字 $arr[0]-> 這個(gè)稱(chēng)為數(shù)組的一個(gè)元素.$arr[0]=123;123 表示該$arr[0]元素對(duì)應(yīng)的值 $arr –》這個(gè)是該數(shù)組的名稱(chēng).在php數(shù)組中,元素存放的值可以是任意數(shù)據(jù)數(shù)據(jù)類(lèi)型 , 舉例說(shuō)明:

      $arr[0]=123;

      $arr[1]=“hello”;

      $arr[2]=45.6;

      $arr[3]=true;

      $arr[4]=null;//即使放入了一個(gè)null,也要占一個(gè)空間

      echo “數(shù)組大小”.count($arr);

      //遍歷一下

      for($i=0;$i

      echo '
      '.$arr[$i];

      } ?>

      創(chuàng)建數(shù)組的第二種方法 基本語(yǔ)法

      $數(shù)組名=array(值,.......);舉例說(shuō)明:

      $arr=array(1,90,“helllo”,89.5);

      //遍歷一把

      for($i=0;$i

      echo “
      ”.$arr[$i];

      }

      第三種方式創(chuàng)建數(shù)組(在默認(rèn)情況下,我們的元素的下標(biāo),是從0開(kāi)始給你編號(hào),但是實(shí)際上,也可以自己指定)基本語(yǔ)法

      $arr[?logo?]=”北京”;$arr[?hsp?]=123;....或者 $arr=array(”logo”=>”北京”,”hsp”=>123,4=>678);案例演示:

      $arr[0]=123;

      $arr[1]=90;

      //遍歷

      /* for($i=0;$i

      echo '
      '.$arr[$i];

      }*/

      //這個(gè)foreach適用范圍更廣

      foreach($arr as $key2=>$val2){

      echo $key2.“=”.$val2.“
      ”;

      }

      54講 數(shù)組的引用 數(shù)組使用細(xì)節(jié)①

      更新時(shí)間:2012年12月09日20時(shí)22分 來(lái)源: ? 注意事項(xiàng)

      ①如果我們創(chuàng)建一個(gè)數(shù)組的時(shí)候,沒(méi)有給某個(gè)元素指定下標(biāo),php就會(huì)自動(dòng)的用目前最大的那個(gè)個(gè)下標(biāo)值(整數(shù)),加上一作為該元素的下標(biāo)(關(guān)鍵字)

      $arr=array(5=>“l(fā)ogo”,567,90);

      //我要訪(fǎng)問(wèn)“l(fā)ogo”這個(gè)值

      echo $arr[5];

      echo “
      ”.$arr[6];

      ②如果我們給某個(gè)元素的下標(biāo)一樣,則會(huì)覆蓋原來(lái)的值: $arr=array(5=>“l(fā)ogo”,567,90);

      //我要訪(fǎng)問(wèn)“l(fā)ogo”這個(gè)值

      $arr[5]=“yes”;//替換某個(gè)元素值

      echo $arr[5];

      echo “
      ”.$arr[6];

      如果我們使用true ,false null 作為key, 則應(yīng)當(dāng)怎樣訪(fǎng)問(wèn) $arr[true]=“hello”;//==> $arr[1]

      $arr[false]=“world”;//==> $arr[0]

      $arr[null]=“北京”;//==> $arr[null] 或者 $arr[“"];

      //null<==>”“

      echo $arr[0];

      echo ”
      “.$arr[null];⑤

      //我們通??梢允褂胮rint_r來(lái)顯示這個(gè)數(shù)組情況

      print_r($arr);

      echo ”
      “;

      //var_dump可以更加詳細(xì)的顯示數(shù)組的信息

      var_dump($arr);

      訪(fǎng)問(wèn)數(shù)組的時(shí)候,不要越界比如: $arr=array(56,100,101);

      echo $arr[2];//數(shù)組越界

      echo ”hello“;

      一維數(shù)組的引用 基本語(yǔ)法: $數(shù)組名[鍵值];

      如果你寫(xiě)的鍵值不存在,則會(huì)報(bào)告: Notice: Undefined offset

      一維數(shù)組使用陷阱 //*****一維數(shù)組引用陷阱

      $arr[bar]=”hello,world“;echo $arr[bar];這樣使用時(shí)危險(xiǎn)??!

      php的數(shù)組可以動(dòng)態(tài)的增長(zhǎng) $a=array(2,3);

      //這里說(shuō)明php的數(shù)組是可以動(dòng)態(tài)增長(zhǎng).$a[3]=56;

      echo $a[2];

      php的數(shù)組相關(guān)的函數(shù)說(shuō)明 ①

      count 函數(shù) 基本用法是

      count($數(shù)組名);可以統(tǒng)計(jì)該數(shù)組共有多少元素.②

      is_array

      print_r 和 var_dump ④

      explode 對(duì)字符串進(jìn)行分割 案例:

      $str=”北京&順平&天津&宋江&林沖“;

      //在實(shí)際開(kāi)發(fā)中,涉及到字符串的拆分,可以考慮

      $arr=explode(”&“,$str);

      print_r($arr);

      php數(shù)組遍歷的四個(gè)方法

      ? 如果使用 for while do..while 要確定該數(shù)組的下標(biāo)是從 0開(kāi)始順序排放 $colors = array('red', 'blue', 'green', 'yellow');

      //for while do_while

      //for

      for($i=0;$i

      echo ”
      “.$colors[$i];

      }

      //while

      $i=0;//循環(huán)控制變量

      while($i

      echo ”
      “.$colors[$i];

      $i++;

      }

      //do..while

      $i=0;//循環(huán)控制變量

      do{

      echo ”
      “.$colors[$i];

      $i++;

      }while($i

      //foreach

      echo ”
      *********“;

      foreach($colors as $k=>$v){

      echo ”
      $k=$v“;

      }

      55講 數(shù)組使用細(xì)節(jié)② 數(shù)組運(yùn)算符 數(shù)組作業(yè)評(píng)講① 數(shù)組小結(jié)

      更新時(shí)間:2012年12月11日16時(shí)58分 來(lái)源:

      使用unset函數(shù)可以銷(xiāo)毀某個(gè)元素,也可以銷(xiāo)毀某個(gè)變量,銷(xiāo)毀該元素后,關(guān)鍵字不會(huì)重新組合.$arr[0]=123;

      $arr[1]=456;

      $arr[2]=”hello“;

      //比如現(xiàn)在我要?jiǎng)h除 $arr[1] 元素

      echo ”
      **刪除前****“;

      echo $arr[1];

      unset($arr[1]);

      echo ”
      **刪除后****“;

      echo $arr[1];

      echo print_r($arr);

      數(shù)組運(yùn)算符(了解即可)

      $a = array(”a“ => ”apple“, ”b“ => ”banana“);

      $b = array(”a“ => ”pear“, ”b“ => ”strawberry“, ”c“ => ”cherry“);

      $c = $a + $b;//$b數(shù)組的鍵和值加到$a

      echo ”$a + $b result
      “;

      var_dump($c);// ”a“ => ”apple“, ”b“ => ”banana“ ”c“ => ”cherry“

      echo ”
      “;

      $c = $b + $a;//”a“ => ”pear“, ”b“ => ”strawberry“, ”c“ => ”cherry“

      echo ”$b + $a result
      “;

      var_dump($c);

      數(shù)組的案例:

      為加強(qiáng)大家對(duì)數(shù)組的理解,我們?cè)俳o大家出一個(gè)題,我們一起完成.在運(yùn)動(dòng)會(huì)上,五個(gè)小孩比賽滑輪,他們的滑完100米,分別用了10s、12s、5.7s、9s、14s,請(qǐng)編寫(xiě)一個(gè)程序,計(jì)算他們的平均時(shí)間?[array03.php] 時(shí)間保留到小數(shù)點(diǎn)后兩位.

      請(qǐng)輸入五個(gè)小孩的成績(jī),用空格隔開(kāi)

      第四篇:廣州傳智播客分析2014IT軟件工程師的發(fā)展

      廣州傳智播客分析2014IT軟件工程師的發(fā)展

      戲劇化的2013年還未結(jié)束,我們已迫不及待要把自己對(duì)于這么多新興發(fā)展趨勢(shì)的感受與大家分享

      預(yù)測(cè)大數(shù)據(jù)在2013年將帶來(lái)了340億美元的IT開(kāi)支,預(yù)計(jì)到2018年這一數(shù)據(jù)將增長(zhǎng)三倍。可見(jiàn)IT行業(yè)在市場(chǎng)價(jià)值魅力空前。2014年IT業(yè)務(wù)的發(fā)展趨勢(shì)也會(huì)將大幅度提升。盡管在各大IT培訓(xùn)機(jī)構(gòu)的努力下,我國(guó)具備軟件開(kāi)發(fā)技能的人越來(lái)越多,但與軟件行業(yè)的發(fā)展速度相比,軟件人才顯然仍存在較大缺口。

      我國(guó)信息化建設(shè)步伐正在不斷持續(xù)前進(jìn),IT界的發(fā)展迅速是眾所周知的,單單從這幾年,回顧手機(jī)方面的發(fā)展,誰(shuí)會(huì)想到橫行了幾年的塞班系統(tǒng)在安卓,蘋(píng)果的競(jìng)爭(zhēng)下黯然退場(chǎng)??杉夹g(shù)科發(fā)展的大潮流里,套用一句詩(shī)詞的話(huà)就是“長(zhǎng)江后浪推前浪,前浪死在沙灘上”。IT行業(yè)應(yīng)該是如今最火行業(yè)之一,且沒(méi)有定義和壟斷的行業(yè)!

      第五篇:傳智播客 韓順平php從入門(mén)到精通 61-78講面向?qū)ο笳n堂筆記

      php面向?qū)ο缶幊?提出一個(gè)問(wèn)題?

      張老太養(yǎng)了兩只貓貓:一只名字叫小白,今年3歲,白色。還有一只叫小花,今年100歲,花色。請(qǐng)編寫(xiě)一個(gè)程序,當(dāng)用戶(hù)輸入小貓的名字時(shí),就顯示該貓的名字,年齡,顏色。如果用戶(hù)輸入的小貓名錯(cuò)誤,則顯示張老太沒(méi)有這只貓貓。數(shù)組<--->對(duì)象

      array(1,56,90,100)->隱藏問(wèn)題array(對(duì)象,對(duì)象。。)【數(shù)組對(duì)象】 首先我們用現(xiàn)有的知識(shí)來(lái)完成這個(gè)案例:

      $cat1_name=”小白”;

      $cat1_age=3;

      $cat1_color=”白色”;

      //變量是分開(kāi).$cat2_name=”小花”;

      $cat2_age=100;

      $cat2_color=”花色”;?>

      我們能不能把屬于同一事物的變量,統(tǒng)一管理? 解決之道->對(duì)象 快速體驗(yàn)案例:

      //這就是一個(gè)類(lèi)(貓類(lèi))class Cat{

      //屬性

      public $name;

      public $age;

      public $color;}

      //創(chuàng)建一只貓 $cat1=new Cat();//給這只貓賦值.(具體各個(gè))$cat1->name=“小白”;$cat1->age=3;$cat1->color=“白色”;$cat2=new Cat();$cat2->name=“小花”;$cat2->age=100;$cat2->color=“顏色”;//如果我們找到一只貓,只要找到 $cat1, 那么該變量所有相關(guān)的屬性都通通的找到 $findCatName=“小花”;

      if($cat2->name==$findCatName){

      echo $cat2->name.“||”.$cat2->age.“||”.$cat2->color;} ?>

      我們這里說(shuō)明一下類(lèi)和對(duì)象的關(guān)系(細(xì)節(jié)后面逐步展開(kāi))

      總結(jié)幾句話(huà):

      類(lèi)是抽象的,代表一類(lèi)事物 ②

      對(duì)象是具體,是類(lèi)的一個(gè)具體實(shí)例 ③

      類(lèi)是對(duì)象的模板, 對(duì)象是類(lèi)的一個(gè)個(gè)體實(shí)例

      php面向?qū)ο缶幊?/p>

      成員屬性的說(shuō)明

      1.成員屬性是從某個(gè)事物提取出的,它可以是基本數(shù)據(jù)類(lèi)型(整數(shù)、小數(shù)、字符、布爾),也可以是復(fù)合數(shù)據(jù)類(lèi)型(數(shù)組、對(duì)象)

      class Cat{ public $name;public $age;}

      //創(chuàng)建對(duì)象

      $cat1=new Cat;

      $cat1=new Cat();?>

      2.怎樣訪(fǎng)問(wèn)一個(gè)成員屬性(其它成員屬性是public)基本語(yǔ)法是 $對(duì)象名->屬性名;

      ?如果一個(gè)文件,專(zhuān)門(mén)用于定義類(lèi),則命名規(guī)范應(yīng)當(dāng)這樣

      類(lèi)名.class.php 分析對(duì)象在內(nèi)存中存在的形式 //定義一個(gè)人類(lèi) class Person{ public $name;public $age;} $a=new Person();$a->name=“小明”;$a->age=20;//把a(bǔ)變量(對(duì)象),賦給$b $b=$a;echo $a->name.“
      ”;echo $b->name.“
      ”;

      再次說(shuō)明: $a=78;//$b=$a;$b=&$a;$b=$b+8;echo $a.“||”.$b;

      如果給一個(gè)函數(shù)傳遞一個(gè)對(duì)象,實(shí)際上是傳遞的一個(gè)地址.//看下面的一段代碼: class Person{

      public $name;public $age;} $p1=new Person();$p1->name=“韓順平”;$p1->age=33;//函數(shù)接收對(duì)象時(shí)候,究竟是傳入值,還是地址(?。?

      function test1($p){ $p->name=“小明”;} test1($p1);echo $p1->name;分析圖

      如果給函數(shù)傳遞的是基本數(shù)據(jù)類(lèi)型(整數(shù)、小數(shù)、布爾、字符),究竟傳遞的是什么? 結(jié)論 : 在默認(rèn)的情況下是傳遞的值,如果你希望傳入地址 function test(&$變量....){ }

      在php中如果,給一個(gè)函數(shù)傳遞的是數(shù)組,則默認(rèn)情況下是傳值(拷貝了新的數(shù)組),如果希望傳入地址,則應(yīng)當(dāng),&$數(shù)組名 學(xué)生問(wèn)題?

      $a1=array(1,3,900);$a2=array(56,90,100);

      $arr=array($a1,$a2);

      foreach($arr as $k=>$v){

      echo “$k=$v”;} ?>

      成員方法的講解 函數(shù)和成員方法關(guān)系:

      當(dāng)我們把一個(gè)函數(shù)寫(xiě)到某個(gè)類(lèi)中,則該函數(shù)可以稱(chēng)成員方法:

      我們有這樣一個(gè)需求;希望人可以說(shuō)話(huà), 做算術(shù)題.......,這樣就需要使用到成員方法: ①添加speak 成員方法,輸出我是一個(gè)好人

      ②添加jisuan成員方法,可以計(jì)算從 1+..+1000的結(jié)果

      ③修改jisuan成員方法,該方法可以接收一個(gè)數(shù)n,計(jì)算 1+..+n 的結(jié)果

      ④添加add 成員方法,可以計(jì)算兩個(gè)數(shù)的和 成員方法的基本語(yǔ)法:

      訪(fǎng)問(wèn)修飾符號(hào) function 函數(shù)名(參數(shù)列表){

      //函數(shù)體

      //return 語(yǔ)句;}

      class Person{

      public $name;

      public $age;

      public function speak(){

      echo “我是一個(gè)好人!”;

      }

      public function count1(){

      $res=0;

      for($i=1;$i<=1000;$i++){

      $res+=$i;

      }

      //return 究竟到什么地方去?誰(shuí)調(diào)用,就返回給誰(shuí)

      return $res;

      }

      //修改jisuan成員方法,該方法可以接收一個(gè)數(shù)n,計(jì)算 1+..+n 的結(jié)果

      public function count2($n){

      $res=0;

      for($i=0;$i<=$n;$i++){

      $res+=$i;

      }

      return $res;

      }

      //添加add 成員方法,可以計(jì)算兩個(gè)數(shù)的和

      public function add($num1,$num2){

      return $num1+$num2;

      }

      }

      //如何使用函數(shù)

      //1.創(chuàng)建一個(gè)人

      $p1=new Person();

      //通過(guò)對(duì)象去訪(fǎng)問(wèn),調(diào)用成員方法.//這里強(qiáng)調(diào),調(diào)用成員方法和調(diào)用普通函數(shù)的機(jī)制,仍然不變

      $p1->speak();

      //讓這個(gè)人做算術(shù)題

      $res=$p1->count1();

      echo '計(jì)算結(jié)果是='.$res;

      //讓這個(gè)人可以接收一個(gè)數(shù),然后計(jì)算

      echo “計(jì)算結(jié)果是=”.$p1->count2(100);

      echo “計(jì)算結(jié)果是=”.$p1->count2(100);

      echo “計(jì)算結(jié)果是=”.$p1->count2(100);

      echo “23+89=”.$p1->add(23,89);?>

      成員方法的細(xì)節(jié)

      我們?cè)趯?shí)際開(kāi)發(fā),其實(shí)通常是這樣來(lái)使用類(lèi)

      Person.class.php < ?php

      class Person{

      //成員屬性

      public $name;

      public $age;

      //成員方法

      public function speak(){

      echo “我是一個(gè)好人!”;

      }

      public function count1(){

      $res=0;

      for($i=1;$i<=1000;$i++){

      $res+=$i;

      }

      //return 究竟到什么地方去?誰(shuí)調(diào)用,就返回給誰(shuí)

      return $res;

      }

      //修改jisuan成員方法,該方法可以接收一個(gè)數(shù)n,計(jì)算 1+..+n 的結(jié)果

      public function count2($n){

      $res=0;

      for($i=0;$i<=$n;$i++){

      $res+=$i;

      }

      return $res;

      }

      //添加add 成員方法,可以計(jì)算兩個(gè)數(shù)的和

      public function add($num1,$num2){

      return $num1+$num2;

      }

      //添加一個(gè)新的方法,可以判斷三個(gè)數(shù)最大的數(shù)

      public function findMax($arr){

      //這里仍然可以寫(xiě)算法

      //從$arr數(shù)組中,找到最大的數(shù).//1.假設(shè)數(shù)組的第一個(gè)數(shù)就是最大的數(shù)

      $maxVal=$arr[0];

      //2.最大數(shù)的下標(biāo)是

      $maxIndex=0;

      //開(kāi)始循環(huán)的比較

      for($i=1;$i

      //這個(gè)條件說(shuō)明,maxVal不是最大

      if($maxVal<$arr[$i]){

      //調(diào)整

      $maxVal=$arr[$i];

      $maxIndex=$i;

      }

      }

      return $maxVal;

      }

      }

      ?>

      Exercise01.php < ?php

      //引入類(lèi)文件

      require_once ?Person.class.php?;

      //創(chuàng)建對(duì)象

      $p1=new Person();

      //調(diào)用$p1的各個(gè)方法

      $p1->speack();

      $p1->count1();..?>

      案例:編寫(xiě)一個(gè)函數(shù)(以面向?qū)ο蟮姆绞介_(kāi)發(fā)),從網(wǎng)頁(yè)輸入一個(gè)整數(shù)打印出對(duì)應(yīng)的金子塔:

      當(dāng)我們學(xué)習(xí)完成員方法后,我們的類(lèi)定義就完善一步了:

      1.設(shè)計(jì)計(jì)算機(jī)類(lèi),要求如下: 屬性:品牌,顏色,cpu型號(hào),內(nèi)存容量,硬盤(pán)大小,價(jià)格,工作狀態(tài)

      方法: 打開(kāi),關(guān)閉,休眠(表示)創(chuàng)建一個(gè)計(jì)算機(jī)對(duì)象,調(diào)用打開(kāi),關(guān)閉方法.php面向?qū)ο缶幊?/p>

      構(gòu)造方法 class Person{

      public $name;

      public $age;}

      $p1=new Person();//再給屬性賦值 $p1->name=”宋江”;$p1->age=33;

      //需求在創(chuàng)建一個(gè)人對(duì)象時(shí)候,我就初始化 name 和 age;->構(gòu)造方法 我們快速入門(mén): class Person{

      public $name;

      public $age;

      public function __construct(){

      echo “我是構(gòu)造方法”;

      }

      //業(yè)務(wù)代碼要放在成員方法 public function findPerson(){ } }

      $p1=new Person();?構(gòu)造方法沒(méi)有返回值, 它是自動(dòng)被調(diào)用

      2.在php 5 中一個(gè)類(lèi)可以同時(shí)有兩種形式的構(gòu)造方法

      __construct()和類(lèi)名(), 當(dāng)兩個(gè)同時(shí)存在的時(shí)候,優(yōu)先調(diào)用__construct(), 請(qǐng)大家以后使用__construct()

      this的理解 class Person{ public $name;public $age;

      //這個(gè)就是構(gòu)造方法,php5獨(dú)有

      public function __construct($iname,$iage){

      //$name認(rèn)為$name是一個(gè)新的變量

      //$name=$iname;

      //$age=$iage;

      $this->name=$iname;

      $this->age=$iage;

      echo “我是構(gòu)造方法”;} }

      $p1=new Person(“張清”,90);echo “hello-”.$p1->name;$p2=new Person(“宋江”,33);echo “aa-”.$p2->name;$this 理解圖:

      ? 1.$this 本質(zhì)可以理解就是這個(gè)對(duì)象的地址

      2.哪個(gè)對(duì)象使用到$this, 就是哪個(gè)對(duì)象地址

      3.$this不能在類(lèi)外部使用.構(gòu)造方法的注意事項(xiàng)

      (1)一旦自定義了一個(gè)構(gòu)造函數(shù),默認(rèn)的

      構(gòu)造函數(shù)就被覆蓋了,這時(shí)在創(chuàng)建對(duì)象的時(shí)候就要使用自定義的構(gòu)造函數(shù).(2)一個(gè)類(lèi)只能有一個(gè)構(gòu)造函數(shù).(不能重載)構(gòu)造方法的8點(diǎn)說(shuō)明:

      ①構(gòu)造方法名和類(lèi)名相同(php4版),php5版的構(gòu)造方法 名可以和類(lèi)名相同,也可以是__construct()②構(gòu)造方法沒(méi)有返回值

      ③主要作用是完成對(duì)新對(duì)象的初始化,并不是創(chuàng)建對(duì)象本身。④在創(chuàng)建新對(duì)象后,系統(tǒng)自動(dòng)的調(diào)用該類(lèi)的構(gòu)造方法

      ⑤一個(gè)類(lèi)有且只有一個(gè)構(gòu)造方法,在php5后雖然__construct()和類(lèi)名()可以共存,但是實(shí)際上也只能使用一個(gè)。

      ⑥如果沒(méi)有給類(lèi)自定義構(gòu)造方法,則該類(lèi)使用系統(tǒng)默認(rèn)的構(gòu)造方法。class Cat{

      funciton __construt($name){

      echo “ok”;}

      }

      $cat1=new Cat();

      ⑦如果給類(lèi)自定義了構(gòu)造方法,則該類(lèi)的默認(rèn)構(gòu)造方法被覆蓋。⑧構(gòu)造方法的默認(rèn)訪(fǎng)問(wèn)修飾符是public

      析構(gòu)方法

      析構(gòu)方法的作用主要用于,釋放資源(比如釋放數(shù)據(jù)庫(kù)的鏈接,圖片資源...銷(xiāo)毀某個(gè)對(duì)象..)快速入門(mén)

      class Person{

      public $name;

      public $age;

      public $conn;

      //構(gòu)造方法

      public function __construct($name,$age){

      $this->name=$name;

      $this->age=$age;

      //打開(kāi)一個(gè)$conn鏈接數(shù)據(jù)庫(kù)的資源

      }

      //寫(xiě)一個(gè)析構(gòu)方法 __ 是兩個(gè)下劃線(xiàn)

      function __destruct(){

      echo $this->name.“銷(xiāo)毀資源關(guān)閉數(shù)據(jù)庫(kù)..
      ”;

      }

      }

      $p1=new Person(“賈寶玉”,16);

      $p2=new Person(“林黛玉”,14);?>

      運(yùn)行代碼我們得出: 1.析構(gòu)方法會(huì)自動(dòng)調(diào)用 2.析構(gòu)方法主要用于銷(xiāo)毀資源

      3.析構(gòu)方法調(diào)用順序是,先創(chuàng)建的對(duì)象后被銷(xiāo)毀 4.析構(gòu)方法什么時(shí)候被調(diào)用(1)當(dāng)程序(進(jìn)程結(jié)束)退出時(shí)

      (2)當(dāng)一個(gè)對(duì)象稱(chēng)為垃圾對(duì)象的時(shí)候,該對(duì)象的析構(gòu)方法也會(huì)被調(diào)用,(3)所謂垃圾對(duì)象,就是指,沒(méi)有任何變量再引用它.(4)一旦一個(gè)對(duì)象成為垃圾對(duì)象,析構(gòu)方法就會(huì)立即調(diào)用 示意圖:

      小結(jié):

      ①php5加入的的析構(gòu)方法function __destruct()②析構(gòu)方法沒(méi)有返回值

      ③主要作用是釋放資源的操作,并不是銷(xiāo)毀對(duì)象本身。④在銷(xiāo)毀對(duì)象前,系統(tǒng)自動(dòng)的調(diào)用該類(lèi)的析構(gòu)方法

      ⑤一個(gè)類(lèi)最多只有一個(gè)析構(gòu)方法。

      更新時(shí)間:2013年01月03日17時(shí)03分 來(lái)源: 靜態(tài)變量 提出一個(gè)問(wèn)題:

      說(shuō),有一群小孩在玩堆雪人,不時(shí)有新的小孩加入, 請(qǐng)問(wèn)如何知道現(xiàn)在共有多少人在玩?請(qǐng)使用面向 對(duì)象的思想,編寫(xiě)程序解決。思路:

      1.使用全局變量

      * 什么是全局變量, 在程序中,都可以使用的變量稱(chēng)為全局變量.當(dāng)我們了解全局變量后,我們來(lái)看看如何解決問(wèn)題?

      //定義,完游戲的全局變量

      global $global_nums;

      //賦值

      $global_nums=0;

      class Child{

      public $name;

      function __construct($name){

      $this->name=$name;

      }

      public function join_game(){

      //聲明一下使用全局變量

      global $global_nums;

      $global_nums+=1;

      echo $this->name.“加入堆雪人游戲”;

      }

      }

      //創(chuàng)建三個(gè)小孩

      $child1=new Child(“李逵”);

      $child1->join_game();

      $child2=new Child(“張飛”);

      $child2->join_game();

      $child3=new Child(“唐僧”);

      $child3->join_game();

      //看看有多少人玩游戲

      echo “
      有”.$global_nums;?>

      2.使用靜態(tài)變量 靜態(tài)的變量的基本用法 1.在類(lèi)中定義靜態(tài)變量 [訪(fǎng)問(wèn)修飾符] static $變量名;2.如何訪(fǎng)問(wèn)靜態(tài)變量

      如果在類(lèi)中訪(fǎng)問(wèn) 有兩種方法self::$靜態(tài)變量名 , 類(lèi)名::$靜態(tài)變量名 如果在類(lèi)外訪(fǎng)問(wèn): 有一種方法類(lèi)名::$靜態(tài)變量名 3.靜態(tài)變量存在方式

      解法: class Child{

      public $name;

      //這里定義并初始化一個(gè)靜態(tài)變量 $nums

      public static $nums=0;

      function __construct($name){

      $this->name=$name;

      }

      public function join_game(){

      //self::$nums使用靜態(tài)變量

      self::$nums+=1;

      echo $this->name.“加入堆雪人游戲”;

      }

      }

      //創(chuàng)建三個(gè)小孩

      $child1=new Child(“李逵”);

      $child1->join_game();

      $child2=new Child(“張飛”);

      $child2->join_game();

      $child3=new Child(“唐僧”);

      $child3->join_game();

      //看看有多少人玩游戲

      echo “
      有這”.Child::$nums;

      ?

      靜態(tài)方法

      需求: 當(dāng)我們操作靜態(tài)變量的時(shí)候,我們可以考慮使用靜態(tài)方法,比如統(tǒng)計(jì)所有學(xué)生交的學(xué)費(fèi)

      在我們編程中,我們往往使用靜態(tài)方法去操作靜態(tài)變量.靜態(tài)方法的特點(diǎn)

      1.靜態(tài)方法去操作靜態(tài)變量

      2.靜態(tài)方法不能操作非靜態(tài)變量.這里請(qǐng)注意 : 普通的成員方法,既可以操作非靜態(tài)變量,也可以操作靜態(tài)變量

      ?

      php面向?qū)ο缶幊痰娜筇卣?/p>

      封裝 ②

      繼承 ③

      多態(tài)

      抽象

      class Account {

      public $blance;

      public $no;

      public function qun(){ } public function cun(){ } }

      ?

      封裝

      那么在php中如何實(shí)現(xiàn)這種類(lèi)似的控制呢?請(qǐng)大家看一個(gè)小程序.(visit1.php),不能隨便查看人的年齡,工資等隱私...class Person{

      public $name;

      private $age;

      private $salary;

      function __construc($name,$age,$salary){

      $this->name=$name;

      $this->age=$age;

      $this->salary=$salary } }

      php提供了三種訪(fǎng)問(wèn)控制符號(hào).有三種

      1.public 表示全局,可以在本類(lèi),類(lèi)外部,子類(lèi)中使用 2.protected 表示受到保護(hù),可以在本類(lèi), 子類(lèi)中使用 3.private 表示私有, 只能在本類(lèi)使用

      這三個(gè)控制修飾符號(hào)可以對(duì)屬性和方法修飾

      1.如果一個(gè)方法沒(méi)有訪(fǎng)問(wèn)修飾符,則默認(rèn)是public 2.屬性必須指定訪(fǎng)問(wèn)修飾符

      ?方法之間可以互相調(diào)用.但是需要使用 $this引用 function test11(){

      $this->test12();

      }

      protected function test12(){

      echo “test12 hello”;

      }

      舉例說(shuō)明: class Person{

      public $name;

      protected $age;

      private $salary;

      function __construct($name,$age,$salary){

      $this->name=$name;

      $this->age=$age;

      $this->salary=$salary;

      }

      //成員方法

      function showInfo(){

      //這里說(shuō)明在本類(lèi)中可以使用 public protected 和private 修飾的變量.echo $this->name.“||”.$this->age.“||”.$this->salary;

      }

      }

      //創(chuàng)建一個(gè)人

      $p1=new Person(“孫悟空”,30,1000);

      echo $p1->name;//可以

      echo $p1->age;//報(bào)錯(cuò)

      echo $p1->salary;//報(bào)錯(cuò).?我們現(xiàn)在就想去訪(fǎng)問(wèn)protected 變量或者 private 變量, 通常的做法是提供 public 函數(shù)去訪(fǎng)問(wèn)這些變量.形式是

      public function setXxx($val){ } public function getXxx(){ } public function showInfo(){ }

      public protected private 可以修飾屬性和方法

      (1)查看薪水(private)//獲取這個(gè)人的薪水

      public function getSalary($user,$pass){

      if($user==“shunping” && $pass=“123”){

      return $this->salary;

      }else{

      return “sorry,你無(wú)法看”;

      }

      }(2)修改人的年齡

      提供了兩個(gè)函數(shù).//修改年齡,對(duì)輸入的值,進(jìn)行校驗(yàn).public function setAge($age){

      if($age>1 && $age<120){

      $this->age=$age;

      }else {

      echo “年齡范圍不對(duì)”;

      }

      }

      //查看年齡

      public function getAge(){

      return $this->age;

      }

      還有一種形式, 通過(guò)一對(duì) __set 和 __get方法來(lái)操作我們的變量,不推薦.class A{

      private $n1;

      private $n2;

      private $n3;

      //使用__set 方法來(lái)管理所有的屬性

      public function __set($pro_name,$pro_val){

      $this->pro_name=$pro_val;

      }

      //使用__get 可以獲取所有的屬性值

      public function __get($pro_name){

      if(isset($pro_name)){

      return $this->pro_name;

      }else{

      return null;

      }

      }

      }

      $a1=new A();

      $a1->n1=“hello”;

      echo $a1->n1;

      $a1->n2=890;

      echo “||”.$a1->n2;

      可以直接寫(xiě)一個(gè)方法了操作變量 class Peron{

      protected n1;

      private $n2;

      function showInfo($n1){

      $this->n1=$n1;

      echo $this->n1.”||”$this->n2;} }

      ?

      為什么需要繼承

      //應(yīng)用場(chǎng)景開(kāi)發(fā)一套學(xué)生管理系統(tǒng)(Pupil, Graduate ,...)

      //小學(xué)生類(lèi)

      class Pupil{

      public $name;

      protected $age;

      protected $grade;

      public function showInfo(){

      echo $this->name.“||”.$this->age;

      }

      public function tesing(){

      echo “ 小學(xué)生考試..”;

      }

      }

      //研究生類(lèi)

      class Graduate{

      public $name;

      protected $age;

      protected $grade;

      public function showInfo(){

      echo $this->name.“||”.$this->age;

      }

      public function tesing(){

      echo “研究生考試..”;

      }

      }

      從上面的代碼我們看出,代碼的復(fù)用性不高,同時(shí)也會(huì)讓管理代碼成本增高.?

      解決之道(繼承);

      現(xiàn)在我們使用繼承對(duì)上面的代碼,進(jìn)行改寫(xiě).代碼:

      //應(yīng)用場(chǎng)景開(kāi)發(fā)一套學(xué)生管理系統(tǒng)(Pupil, Graduate ,...)

      //父類(lèi)

      class Stu{

      public $name;

      protected $age;

      protected $grade;

      public function showInfo(){

      echo $this->name;

      }

      }

      //子類(lèi)

      class Pupil extends Stu{

      public function testing(){

      echo “ 小學(xué)生考試..”;

      }

      }

      class Graduate extends Stu{

      public function testing(){

      echo “研究生考試..”;

      }

      }

      //創(chuàng)建學(xué)生

      $stu1=new Pupil();

      $stu1->name=“小明”;

      $stu1->testing();

      $stu1->showInfo();

      //創(chuàng)建一個(gè)研究生

      $stu2=new Graduate();

      $stu2->name=“老明”;

      $stu2->testing();

      $stu2->showInfo();

      ?從上面的代碼我們可以看出: 所謂繼承就是一個(gè)子類(lèi)通過(guò) extends 父類(lèi) 把父類(lèi)的(public / protected)屬性和(public / protected)方法繼承下來(lái).繼承的基本語(yǔ)法是:

      class 類(lèi)名 extends 父類(lèi)名{

      //在寫(xiě)自己需要的屬性和方法.}

      討論繼承細(xì)節(jié):

      討論繼承細(xì)節(jié):

      1.父類(lèi)的 public、protected 的屬性和方法被繼承.private 的屬性和方法沒(méi)有被繼承.2.一個(gè)類(lèi)只能繼承一個(gè)父類(lèi),(直接繼承).如果你希望繼承多個(gè)類(lèi)的屬性和方法,則使用多層繼承 class A{

      public $n1=90;}

      class B extends A{

      public $n2=“hello”;}

      class C extends B{

      }

      $c=new C();echo $c->n1;

      3.當(dāng)創(chuàng)建子類(lèi)對(duì)象的時(shí)候,默認(rèn)情況下,不會(huì)自動(dòng)調(diào)用父類(lèi)的構(gòu)造方法.class A{

      public $n1=90;

      //構(gòu)造方法

      public function __construct(){

      echo “A __construct”;

      }

      }

      class B extends A{

      function __construct(){

      echo “B __construct”;

      }

      }

      //創(chuàng)建B對(duì)象實(shí)例

      $b=new B();

      4.如果我們希望去調(diào)用父類(lèi)的構(gòu)造方法,或者其它的方法(public / protected),可以這樣處理(了解)

      4.1 類(lèi)名::方法名()4.2 parent::方法名()舉例

      class A{

      public $n1=90;

      //構(gòu)造方法

      public function __construct(){

      echo “A __construct”;

      }

      }

      class B extends A{

      function __construct(){

      echo “B __construct”;

      //顯式的調(diào)用父類(lèi)的方法

      //A::__construct();

      parent::__construct();

      } }

      //創(chuàng)建B對(duì)象實(shí)例 $b=new B();

      5.當(dāng)一個(gè)子類(lèi)的方法和父類(lèi)的方法完全一樣(public protected), 我們稱(chēng)為方法的覆蓋(方法重寫(xiě))

      重載

      基本概念: 函數(shù)名一樣,通過(guò)函數(shù)的參數(shù)個(gè)數(shù)或者是參數(shù)類(lèi)型不同,達(dá)到調(diào)用同一個(gè)函數(shù)名,但是可以區(qū)分不同的函數(shù) class A{

      public function test1(){

      echo “test1”;} public function test1($a){

      echo “test1 hello”;} } 重載

      $a =new A();$a->test1();$a->test1(456);上面的這用用法是不對(duì).PHP5 中如何通過(guò)魔術(shù)函數(shù)來(lái)實(shí)現(xiàn)方法重載的效果 代碼說(shuō)明

      class A{

      public function test1($p){

      echo “接收一個(gè)參數(shù)”;

      echo “
      接收到參數(shù)是”;

      var_dump($p);

      }

      public function test2($p){

      echo “接收兩個(gè)參數(shù)
      ”;

      var_dump($p);

      }

      //這些提供一個(gè)__call

      //__call 是它一個(gè)對(duì)象調(diào)用某個(gè)方法,而該方法不存在,則

      //系統(tǒng)會(huì)自動(dòng)調(diào)用__call

      function __call($method,$p){

      var_dump($p);

      if($method==“test”){

      if(count($p)==1){

      $this->test1($p);

      }else if(count($p)==2){

      $this->test2($p);

      }

      }

      }

      }

      $a=new A();

      $a->test(1);

      $a->test(56,90);

      ?> 小結(jié): 關(guān)于重載

      ① php5 默認(rèn)情況下不直接支持方法重載 ② php5 可以同__call魔術(shù)方法,模擬一個(gè)方法效果的效果

      方法的重寫(xiě)/方法的覆蓋(override)①

      先看一個(gè)問(wèn)題

      當(dāng)一個(gè)父類(lèi)知道所有的子類(lèi)都有一個(gè)方法,但是父類(lèi)不能確定該方法究竟如何寫(xiě),可以讓子類(lèi)去覆蓋這個(gè)方法,具體用法如下:

      //抽象一個(gè)Animal類(lèi)

      class Animal{

      public $name;

      protected $price;

      function cry(){

      echo “不知道動(dòng)物怎么叫..”;

      }

      }

      class Dog extends Animal{

      //覆蓋

      function cry(){

      echo “小狗汪汪叫..”;

      }

      }

      class Pig extends Animal{

      //覆蓋.function cry(){

      echo “哼哼叫..”;

      }

      }

      //創(chuàng)建一個(gè)只狗

      $dog1=new Dog();

      $dog1->cry();

      $pig1=new Pig();

      $pig1->cry();?> 關(guān)于方法重寫(xiě)細(xì)節(jié)討論

      1.要實(shí)現(xiàn)重寫(xiě),要求子類(lèi)的那個(gè)方法的名字和參數(shù)列表個(gè)數(shù)一摸一樣,但是并不要求參數(shù)的名稱(chēng)一樣.2.如果子類(lèi)要去調(diào)用父類(lèi)的某個(gè)方法(public / protected)則可以使用 parent::方法名(參數(shù)..), 父類(lèi)名::方法名(參數(shù)...)3.在實(shí)現(xiàn)方法覆蓋的時(shí)候,訪(fǎng)問(wèn)修飾符可以不一樣

      //但是必須滿(mǎn)足: 子類(lèi)的訪(fǎng)問(wèn)范圍>=父類(lèi)的訪(fǎng)問(wèn)范圍 多態(tài)體現(xiàn)在什么地方? class Animal{

      public function cry(){

      echo '動(dòng)物叫喚..';

      }

      }

      class Cat extends Animal{

      public function cry(){

      echo “abc”;

      }

      }

      $cat1=new Cat();

      $cat1->cry();當(dāng)子類(lèi)沒(méi)有覆蓋父類(lèi)的方法則 $cat1->cry()調(diào)用的是父類(lèi),當(dāng)子類(lèi)覆蓋了父類(lèi)的方法,則調(diào)用自己的cry()

      抽象類(lèi)

      為什么設(shè)計(jì)抽象類(lèi)這個(gè)技術(shù)?

      1.在實(shí)際開(kāi)發(fā)中,我們可能有這樣一種類(lèi),是其它類(lèi)的父類(lèi),但是它本身并不需要實(shí)例化,主要用途是用于讓子類(lèi)來(lái)繼承,這樣可以到達(dá)代碼復(fù)用.同時(shí)利于項(xiàng)目設(shè)計(jì)者,設(shè)計(jì)類(lèi).快速入門(mén)

      //在實(shí)現(xiàn)方法覆蓋的時(shí)候,訪(fǎng)問(wèn)修飾符可以不一樣

      //但是必須滿(mǎn)足: 子類(lèi)的訪(fǎng)問(wèn)范圍>=父類(lèi)的訪(fǎng)問(wèn)范圍

      abstract class Animal{

      public $name;

      protected $age;

      //這個(gè)方法沒(méi)有方法體,這個(gè)方法主要是為了讓子類(lèi)去實(shí)現(xiàn).abstract public function cry();

      }

      class Cat extends Animal{

      public function cry(){

      echo “貓貓叫喚..”;

      }

      }

      //創(chuàng)建一個(gè)子類(lèi)實(shí)例

      $cat1=new Cat();

      $cat1->cry();使用抽象類(lèi)的注意事項(xiàng): 1.基本用法 abstract class 類(lèi)名{

      //方法

      //屬性 }

      2.如果一個(gè)類(lèi)使用abstract 來(lái)修飾,則該類(lèi)就是抽象類(lèi), 如果一個(gè)方法被abstract修飾,則該方法就是抽象方法【抽象方法就不能有方法體.】

      3.抽象類(lèi)可以沒(méi)有抽象方法.同時(shí)還可以有實(shí)現(xiàn)了的方法.

      //在實(shí)現(xiàn)方法覆蓋的時(shí)候,訪(fǎng)問(wèn)修飾符可以不一樣

      //但是必須滿(mǎn)足: 子類(lèi)的訪(fǎng)問(wèn)范圍>=父類(lèi)的訪(fǎng)問(wèn)范圍

      abstract class Animal{

      public $name=“abc”;

      protected $age;

      //這個(gè)方法沒(méi)有方法體,這個(gè)方法主要是為了讓子類(lèi)去實(shí)現(xiàn).abstract public function cry();

      public function getName(){

      return $this->name;

      }

      }

      class Cat extends Animal{

      public function cry(){

      echo “貓貓叫喚..”;

      }

      }

      //創(chuàng)建一個(gè)子類(lèi)實(shí)例

      $cat1=new Cat();

      $cat1->cry();

      echo $cat1->getName();

      ?>

      4.如果一個(gè)類(lèi)中,只要有抽象方法,則該類(lèi)必須聲明為abstract abstract class A{

      abstract function test();

      }

      echo “ok”;

      5.如果A類(lèi)繼承了一個(gè)抽象類(lèi) B,則要求A類(lèi)實(shí)現(xiàn)從B類(lèi)繼承的所有抽象方法 案例:

      //這是一個(gè)抽象類(lèi)

      abstract class A{

      abstract function test();

      }

      //B類(lèi)要么自己抽象,或者實(shí)現(xiàn)從A類(lèi)繼承的抽象方法.class B extends A{

      function test(){

      echo “我實(shí)現(xiàn)A:test()”;

      }

      }

      echo “hello”

      接口 快速入門(mén):

      //使用程序模擬現(xiàn)實(shí)情況

      //定義規(guī)范(方法/屬性)

      interfaceiUsb{

      public function start();

      public function stop();

      }

      //編寫(xiě)相機(jī)類(lèi),讓它去實(shí)現(xiàn)接口

      //1.當(dāng)一個(gè)類(lèi)實(shí)現(xiàn)了某個(gè)接口,則要求該類(lèi)必須實(shí)現(xiàn)這個(gè)接口的所有方法

      class Camera implements iUsb{

      public function start(){

      echo “相機(jī)開(kāi)始工作”;

      }

      public function stop(){

      echo “相機(jī)停止工作...”;

      }

      }

      //編寫(xiě)手機(jī)類(lèi)

      class Phone implements iUsb{

      public function start(){

      echo “手機(jī)開(kāi)始工作”;

      }

      public function stop(){

      echo “手機(jī)停止工作...”;

      }

      }

      //如何使用

      $camera1=new Camera();

      $camera1->start();

      $camera1->stop();

      echo “
      ”;

      //手機(jī)對(duì)象

      $phone1=new Phone();

      $phone1->start();

      $phone1->stop();?>

      1.接口的使用基本語(yǔ)法 interface 接口名{

      //屬性

      //方法 }

      接口的方法都不能有方法體 如何去實(shí)現(xiàn)接口

      class 類(lèi)名 implements 接口名1,接口2.{ }

      接口它的作用就是聲明一些方法,供其它類(lèi)來(lái)實(shí)現(xiàn).接口還體現(xiàn)編程中我們希望的效果高內(nèi)聚低耦合的特點(diǎn):

      繼承是實(shí)現(xiàn)接口的關(guān)系一覽圖

      深入討論接口-interface 什么情況下可以考慮使用接口 1.定規(guī)范

      2.定下規(guī)范,讓別的程序員來(lái)實(shí)現(xiàn),比如: //韓是項(xiàng)目經(jīng)理

      //學(xué)生管理系統(tǒng)(students)

      //定義接口

      interfaceStuManageInterface{

      public function addStudent($stu);

      public function delStudent($id);

      public function updStudent($stu);

      }

      //給三

      classStuManage {

      public function tianjiaxuesheng(){

      }

      }

      //四

      3.當(dāng)多個(gè)類(lèi),他們之間是平級(jí)的關(guān)系.這些類(lèi)都會(huì)去實(shí)現(xiàn)某個(gè)功能,只是實(shí)現(xiàn)的方式不一樣.接口的細(xì)節(jié)

      1.不能去實(shí)例化一個(gè)接口 interfaceiUsb{ }

      $a=new iUsb();(錯(cuò)誤!!)

      2.接口中的所有方法,都不能有方法體 3.一個(gè)類(lèi)可以去實(shí)現(xiàn)多個(gè)接口 語(yǔ)法:

      class 類(lèi)名 implements 接口1,接口2{ }

      4.接口中可以有屬性,但是必須是常量,并且是public interfaceiUsb{

      const A=90;

      }

      echo “ok”.iUsb::A;

      5.接口的方法是public 【默認(rèn)就是public 】 ,不能是 protected 和private 舉例: interfaceiUsb{

      const A=90;

      function test();

      }

      echo “ok”.iUsb::A;6.類(lèi)和接口之間關(guān)系一覽圖

      代碼:

      interface iUsb2{

      public function a();

      }

      interface iUsb3{

      public function b();

      }

      interfaceiUsb extends iUsb2,iUsb3{

      const A=90;

      function test();

      }

      class Class1 implements iUsb{

      public function a(){

      }

      public function b(){

      }

      public function test(){

      }

      }

      echo “ok”.iUsb::A;?>

      從上面我們看出 ① 一個(gè)接口可以繼承多個(gè)其它的接口.當(dāng)一個(gè)類(lèi)去實(shí)現(xiàn)了某些接口,則必須把所有接口的方法,都實(shí)現(xiàn)

      繼承和實(shí)現(xiàn)接口的比較:(1)可以認(rèn)為實(shí)現(xiàn)接口是對(duì)單一繼承的補(bǔ)充.(2)可以在不破壞類(lèi)層級(jí)關(guān)系的前提下,對(duì)某個(gè)類(lèi)功能擴(kuò)展.final關(guān)鍵字

      1.如果我們希望某個(gè)類(lèi)不被其它的類(lèi)來(lái)繼承(可能因?yàn)榘踩紤]...), 可以使用final

      final class A{

      }

      class B extends A{

      }

      echo “ok”;?> 2.如果我們希望某個(gè)方法,比如計(jì)算個(gè)人所得稅的方法,不能子類(lèi)改寫(xiě),可以使用fianl來(lái)修飾方法 class A{

      final public function getRate($salary){

      return $salary*0.08;

      }

      }

      class B extends A{

      //不能去覆蓋父類(lèi)的getRate方法./*public function getRate($sal){

      return $sal*0.01;

      }*/

      }

      $b=new B();

      echo $b->getRate(100);3.final關(guān)鍵字不能去修飾屬性.const關(guān)鍵字的講解

      //當(dāng)你有一個(gè)屬性,不希望被修改,則考慮使用const做成常量 基本用法是 class A{

      const常量名=賦初值;} interface 接口名{

      const常量名=賦初值;} 常量是public

      使用類(lèi)名::常量名;接口名::常量

      class A{

      //常量在定義的時(shí)候,必須給初值.//const關(guān)鍵字前面不要帶修飾符號(hào).const TAX_RATE=0.08;

      public function payTax($val){

      //常量不能修改.//A::TAX_RATE=0.01;

      //return $val*self::TAX_RATE;【ok】

      return $val*A::TAX_RATE;//【ok】

      }

      }

      $a=new A();

      echo $a->payTax(200);?> 1.常量在定義的時(shí)候需要賦初值 2.常量不能修改.3.常量名不能有 $, 一般是大寫(xiě), 默認(rèn)是public

      4.常量在類(lèi)的內(nèi)部使用 self::常量的名稱(chēng)類(lèi)名::常量的名稱(chēng) 在類(lèi)的外部使用類(lèi)名::常量的名稱(chēng).面向?qū)ο缶幊痰木C合案例

      現(xiàn)在我們一起來(lái)完成一個(gè)稍微綜合的案例---php版本的計(jì)算器,從而加深對(duì)php的認(rèn)識(shí),為下一步學(xué)習(xí)做準(zhǔn)備。先用兩個(gè)頁(yè)面來(lái)完該計(jì)算器: myCal.php(界面)myResult.php(計(jì)算)知識(shí)點(diǎn):

      1.如何接收php頁(yè)面提交的數(shù)據(jù),并處理

      2.php中如何使用javascript完成對(duì)數(shù)據(jù)合法性的校驗(yàn)

      我們一起來(lái)開(kāi)發(fā).5.畫(huà)出程序框架圖: 6.編寫(xiě)代碼: 現(xiàn)在我們分析如果要求把 xml 的作業(yè)改成面向?qū)ο蟮姆绞?怎么該?

      下載傳智播客PHP教程.zend.framework視頻教程簡(jiǎn)介word格式文檔
      下載傳智播客PHP教程.zend.framework視頻教程簡(jiǎn)介.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦