久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

傳智播客PHP教程.zend.framework視頻教程簡介

時間:2019-05-15 10:53:36下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《傳智播客PHP教程.zend.framework視頻教程簡介》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《傳智播客PHP教程.zend.framework視頻教程簡介》。

第一篇:傳智播客PHP教程.zend.framework視頻教程簡介

[視頻簡介:]

本教程貫穿了兩個軟件公司常用的兩個項目,數據采集系統和購物車,共分20講,全面細致的講解了如何正確的使用zend framework框架到網站開發中,zend framework 是官方推薦的PHP mvc框架,功能強大,后勁十足,也正是它太強大了,所以很多PHP程序員對它望而生畏,不敢去學習掌握它,真的有那么難嗎? 呵呵,看完本教程你就會發現,喔!不過如此。

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

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

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

[聲明:]

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

[聯系我們:]

在學習過程中如果遇到問題可以通過以下聯系方式與我們取得聯系,另外還有更多傳智播客PHP內部視頻見:

網址:http://php.itcast.cn 或者 http://

電話:010-51552111E-mail:hsp@itcast.cn

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

做網站 Web程序。

需要制作一臺可以在網絡上被別人訪問到的機器。

安裝了瀏覽器的計算機:

browser端 能夠提供網絡資源的計算機:(網站在這臺計算機上),能夠提供某種服務。Server端。

B/S是什么意思? 瀏覽器/服務器的架構:

請求:瀏覽器端向服務器端發送數據。Request 響應:服務器向瀏覽器端發送數據。回應,Response

什么樣的計算機叫做服務器端? 安裝了服務器軟件的計算機。

Web服務器軟件:iis,nginx,apache。

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

安裝apache這個軟件,使jsj成為一臺web服務器。

http:// Apache的默認的文檔目錄 apache的安裝目錄下/htdocs/

什么是靜態網站,動態網站?

靜態,網站上所有的內容,都是由靜態頁面提供的。

動態:網站的內容,是來源于某個數據源(數據庫,互聯網),而,在需要展示某些數據時,通過某種語言,將數據從數據源內提取,然后再展示到頁面上。

如果需要做動態網站,需要

1,數據源(數據庫)mysql數據庫

2,某種語言(用于提取和展示數據之用)PHP

Amp開發:

利用apache作為web服務器,使別人可以訪問到我們的網站 利用mysql作為數據源,可以保存動態網站所需要的數據 利用php來獲得某個操作所需要的數據。

小測試: 輸出1-100 編寫php文件:

訪問這個php文件:

發現,可以訪問到,但是不能解析。

Apache只有提供被訪問的功能,而不能提供解析php代碼的功能。

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

安裝PHP:

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

將php安裝成apache模塊:

使用一個apache的指令,loadModule來完成:

解壓php的安裝包:

不需要安裝可以直接執行 將php軟件復制到相應的目錄: E:/amp/php

由于不需要安裝,目錄內的可執行文件直接可以使用:

在php目錄內,有個文件,就是php為apache提供的apache模塊:

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

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

增加如下指令即可:

修改配置文件后,需要重啟動apache服務才可以:

配置apache,告知apache,哪樣的前請求需要調用php來解析,而哪些不需要: 通過請求的資源的后綴名

使用apache的FilesMatch指令來完成: 當匹配到php后綴時,調用php來處理: Apache的配置文件內:

請求php文件時,php代碼可以執行:

大家可以使用phpinfo()函數來測試以下,當前的php運行的環境:

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

根據需要,將相應的更改成php.ini即可:

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

修改配置文件,達到某些目的:

1,時區

2, php擴展文件的目錄。Php的很多功能,并不是內置到php的軟件內的。在需要使用某個功能時,再載入即可。這個擴展的功能文件是被保存到某個目錄內的,稱之為php的擴展目錄: Extension_dir:

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

如果我們的php需要操作數據的話,需要利用數據軟件了。安裝Mysql。

1,安裝 2,配置

配置mysql的安裝目錄,和mysql數據的保存目錄:

安裝完成時,勾選運行配置向導,完成配置的過程:

配置字符集:

簡單介紹Mysql: 數據庫服務器:

屬于server端。因此,需要等待某個程序請求他才可以運行。

能夠對mysql數據庫服務器發出請求的我們稱之為mysql客戶端。

C/S Client客戶端

Server服務器

在安裝完mysql后,其實安裝了2個軟件1,mysql的服務器端,2,mysql的客戶端。

我們需要使用php來操作mysql。

其實 在php操作mysql的過程中,php就變成了 mysql的客戶端。

Php能夠作為mysql的客戶端,使用php的php_mysql.dll這個擴展完成,而且,這個擴展不是默認開啟的。

開啟相應的mysql的操作擴展,利用php的指令extension來完成。Php.ini:

B/S C/S

1,服務器在監聽(運行),提供某個服務

2,瀏覽器或者客戶端,對服務器發出請求。在發送請求時,請求的數據一定要按照某種數據格式才可以。數據格式在網絡數據傳輸時稱之為網絡協議。3,服務器接收到請求后,會根據請求數據,進行相應的操作。4,將處理好的結果返回給瀏覽器(客戶端),回應。Response 5,瀏覽器端(客戶端)對回應的數據進行展示輸出,b/s 都是用瀏覽器發出請求的。

http https c/s架構,都是采用某個服務專用的客戶端發出的請求。

Bs架構通常,任何兩次請求回應周期是沒有任何聯系的。在發出請求時,都需要先建連接。

Cs通常,在連接一次之后,通常就會保持住這個連接,后續的操作,就不需要再次建立連接了。

PHP與apache聯系:

1,php作為apache的模塊而存在。loadModule 2,web服務器與php之間通過 CGI方式產生聯系。CGI(通用網關接口),IIS+PHP。現在CGI被fastCGI。Nginx+PHP

apache的虛擬主機:

通常一個web服務器,代理的是一個網站。

有時我們需要利用一個web服務器,管理多個站點。不同的站點擁有獨立的域名。

通過配置apache服務器,達到,訪問

Test.kang.com時,看到的是test目錄的內容。Shop.kang.com時,看到的是shop目錄的內容

Apache的基于域名的虛擬主機技術:

主機:一個網站,就是一些php文件的集合,一個保存php文件的目錄 域名:指向某個網站的名稱。

通過修改apache配置文件達到效果:

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

虛擬主機的專門的配置文件:

編輯這個虛擬主機文件,增加虛擬主機:

在配置文件內,每一個指令段就配置了一個虛擬主機。增加一個虛擬主機,就是:增加一個VirualHost指令段即可:

域名和目錄是一個虛擬虛擬主機最基本的必備元素。

完成以上的操作,apache配置已經完成,apache上已經存在兩個虛擬主機了:

在配置了虛擬主機之后,我們對web服務器的默認訪問(沒有使用配置的虛擬主機域名的訪問),都會訪問到默認的主機上。

默認的主機:

1,在配置了虛擬主機后:默認的主機就是 第一個配置的虛擬主機 2,在沒有配置虛擬主機時,是htdocs目錄。

那么怎么才能在使用虛擬主機的前提下,讓localhost訪問到原來的htdocs?

如何能夠通過在瀏覽器上輸入相應的虛擬主機域名訪問到我們的虛擬主機呢? 在瀏覽器端,需要通過相應的域名,解析成目標服務器的ip地址才可以。

可以通過過瀏覽器端操作系統上自帶的 域名解析文件完成。Hosts

配置虛擬主機時,常用的配置:

目錄的權限的配置

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

目錄級別的配置,對當前目錄,及其后代目錄有效果。

如果在apache的配置文件內,沒有對某個目錄進行配置,則采用默認的目錄配置

可以通過修改默認的配置達到目的,但是通常是針對目錄進行單獨配置: 增加一個 Directory指令段:

為了將目錄與虛擬主機聯系起來,通常在VirtualHost內,使用Directory指令 Conf/extra/httpd-vhosts.conf

直接訪問目錄的配置:

在訪問目錄時,先檢測當前目錄是否配置了目錄索引頁,如果配置了索引頁,則展示索引頁的內容。目錄的索引頁使用apache的指令 directoryIndex完成配置。這個指令是可以寫到directory段內。

如果沒有配置目錄索引頁:則需要將目錄的的內容以列表的形式顯示出來,但是是通過配置apache的指令options加以配置,是否可以顯示目錄的索引列表。

可以在配置 options時 增加上允許符號連接的配置:

Apache的配置文件系統:

Apache程序,只會在apache服務器啟動時,讀取apache配置文件的內容,稱之為apache主配置文件。

一旦配置文件的語法出錯,就會導致apache服務器啟動失敗,提示:

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

也可以通過 cmd,命令行運行:

Apache還有一個配置文件,稱之為apache的分布式配置文件,apache允許在某個目錄內部,使用獨立的配置文件,來配置當前目錄及其后代目錄的中的一些設置。但是此時配置文件名稱,就不是httpd.conf了 而是.htaccess

在這個.htaccess配置文件中配置的內容,只能是目錄級別的配置。

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

分布式與主配置文件的區別:

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

2,主配置文件只要在apache啟動時,才讀取,而分布式配置文件,在apache訪問到某個目錄時都會讀取一次。

作業

1,每個人配置一個虛擬主機: 域名是 test.ip.com Test.100.com

2,在test.ip.com上增加一個表單頁面 Welcome.html頁面

最好在表單提交時,驗證姓名不能為空,為空給出提示,不能提交。

分析上面的例子:

發生了幾次請求和回應的過程。

第三篇:傳智播客PHP教學之PHP基本語法

PHP基本語法

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

36講 PHP基本語法介紹 PHP數據類型介紹

更新時間:2012年11月02日16時44分 來源: 1.1

單行注釋 // #

php的基本語法加強 Parse : 解析 error : 錯誤 syntax : 語法

php 可以和 html 混合使用 ②

php 的變量的定義使用

//php中,定義一個變量要以$符號打頭

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

php 的變量的數據類型,是變化的,php變量的數據類型是由運行時的上下文決定 ④

php區分大小寫 $i = 89;$I=90;$abc=90;$Abc=900;

php 的變量的名稱,應當以字母或者下劃線開頭,不要用數字開頭,也不要用特殊字符開頭.$3abc=89;

php 數據類型有哪些? 有三大類

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

3.2 資源類型(resource)

37講 整型細節說明

更新時間:2012年11月04日19時18分 來源: 基本數據類型的入門案例: ■ 整型

整數類型可以表示一個整數,比如:

$ts=1;$ts=-12;■ 布爾類型

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

$ts=true;$ts=false;■ 小數類型

小數類型可以表示一個小數(float,double)

$ts=1.12 $ts=3.1415926 ■ 字符串類型

字符串類型可以表示一個字符串

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

$a=90;//相當于我們定義了一個變量 $a,并賦值90 ?>

什么叫給變量賦值

$a=78;

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

$a=”hello”;//表示$a 的類型變化.?>

整型的細節討論

①在php中一個整型數據可以用十進制,也可以用八進制和十六進制 比如 :

$a = 0123;// 八進制數(是以0開頭)$a = 0x1A;// 十六進制數

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的整數都是有符號數.通過該圖,我們可以看出,php的整數的二進制的最高位表示符號 ③ 通過 PHP_INT_SIZE

可以顯示我們自己的機器,一個整數用幾個字節表示 echo PHP_INT_SIZE;

通過PHP_INT_MAX 可以顯示int 最大的數有多少 echo PHP_INT_MAX;

請問? 為什么 PHP_INT_MAX是 2147483647 我們一起推一下

請問? php 的int 型,負數最大表示多少? 負數和正數一樣大 2的31次方減一

④ 如果一個整數的范圍超過了最大范圍,則自動變成float

38講 布爾細節 浮點數細節 字符串細節 算術運算符①

更新時間:2012年11月06日13時53分 來源: 學生的問題?

$a=2;問在內存中 2是怎樣存在的

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

布爾類型

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

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

$conn=mysql_connect(“localhost”,”root”,”root”);if($conn){

echo ?ok?;}else{

echo ?沒有ok?;}

浮點數的細節

1.浮點數(也叫雙精度數或實數)

2.浮點數的字長和平臺相關,通常最大值是 1.8e308 并具有 14 位十進制數字的精度(這個限制很重要)? 精度要從左邊開始的第一個非0的數字計算.字符串的細節 $a=”hello”;

請問 $a 占用了多個是字節 5個字節 一個字符串類型可以表示多大的串?

①理論上,我們對字符串大小沒有限制,即只有不超過內存就可.②我們定義字符串的時候,可以用單引號,也可以使用雙引號 區別如下: $i=90;

$user1=“hello$i”;

$user2='hello$i';

echo '
user1='.$user1;

echo '
user2='.$user2;

從上面案例我們看出, 當一個變量包含在 “”號中時,會輸出它的值,而包含在?? 中是輸出其字符本身.案例2

如果字符串是包圍在單引號(?)中, 除了來處理 ” 時,會輸出 ” 外,其它規則都一樣

php數據類型的自動轉換

php的表達式

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

php的算術運算符 +、-、*、/、%

39講 算術運算符② 比較運算符 邏輯運算符

php的算術運算符

更新時間:2012年11月08日17時42分 來源: +、-、*、/、% $a=90;

$b=7;

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

echo '能整除';

}else{

echo '不能整除!';

}

++ 和 – 快速入門: $a=90;

$a++;//等價于 $a=$a+1;

echo $a;

$b=89;

$b--;//等價于$b=$b-1;

echo '
'.$b;

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

//$b=$a++;//等價于 $b=$a;$a=$a+1;

$b=++$a;//等價于 $a=$a+1;$b=$a;

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

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

左加 += 左減-=

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

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

比較運算符

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

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

echo ?$a==$b?;}

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

對!=!= = 說明 //只有值不相等,則為true

if($a!=$b){

echo '$a!=$b';

}

//只要值不相等,或者類型不相等,則為true

if($a!==$b){

echo '$a!==$b';

}

請編寫一個程序,該程序可以接收兩個數(可以是整數,也可是小 數),并判斷兩個數是大于?小于?還是等于? 對應的案例:

$b=90;

if($a>$b){

echo '$a>$b';

}

if($a<$b)

{

echo '$a<$b';

}

if($a==$b){

echo '$a==$b';

} ?> 邏輯運算符

要求大家掌握的知識點有: 搞清每個邏輯運算的規則 案例 $a=10;$b=7;

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

echo 'ok!';

}

echo 'a='.$a.'b='.$b;//把結果填寫 $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 && 都表示邏輯與,他們的區別在什么地方 主要體現在優先級上面 and 的優先級 and< = <&& or < = < || 配合案例: $e = false || true;$f = false or true;var_dump($e, $f);$e 是 true $f 是 false;.....40講 三元運算符 類型運算符 運算符優先級

php基本語法-三元運算符 基本語法

表達式1 ? 表達式2 : 表達式3 規則:

更新時間:2012年11月11日18時53分 來源: 如果表達式1 的運算結果是 true, 則取 表達式2 的值,否則,取表達式3的值.舉例 :

$a=90;

$b=180;

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

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

php 的字符串運算符 案例:

$a=“hello,world”;

$b=123;

$c=$b.$a;//$a 具體表示內容和 $b 表示內容拼接

echo $c;

從上面案例我們看出,當兩個變量(基本數據類型)用.連接的時候,就表示把他們的內容拼接

類型運算符(了解)

基本語法是: instanceof 用于確定一個 PHP 變量是否屬于某一類 class 的實例,通常在面向對象開發中可能用的.class Dog{}

class Cat{}

//創建一個對象

$cat1=new Cat;

//var_dump($cat1 instanceof Dog);

//在實際開發中,我們可能需要去判斷某個變量是否是某個類型

if($cat1 instanceof Cat){

echo '$cat1 是一只貓';

}

運算符優先級的說明: //****運算優先級*****

? 如果將來你們有一個表達式很復雜,建議使用()來指定其運算優先級

$a=3;

$b=++$a*3;

echo $b;

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

更新時間:2012年11月16日10時30分 來源:

php程序的三大流程控制 ①

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

echo “a=”.a;

echo “hello!”;

$a++;

echo “a=”.a;

echo “O(∩_∩)O”;

$a++;

echo “a=”+a;

所謂順序控制流程,就是不加控制的流程,默認情況,會按照,順序來執行你編寫的代碼 ②

分支控制

一個簡單的定義: 有選擇的來執行我們的代碼.分為 1.單分支 2.雙分支 3 多分支 1.單分支的基本語法結構 if(條件表達式){

語句;

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

這里我們,這里的條件表達式不管多復雜,最總運算的結果就是 true 或者 false;快速入門:

編寫一個程序,可以輸入人的年齡,如果該同志 的年齡大于18歲,則輸出 “你年齡大于18,要對 自己的行為負責!” $age=7;

if($age>18){

echo '你的年齡大于18';

} 2.雙分支 基本語法結構 if(條件表達式){

//n多語句;}else{

//n多語句;}

編寫一個程序,可以輸入人的年齡,如果該同志 的年齡大于18歲,則輸出 “你年齡大于18,要對

自己的行為負責!”。否則 ,輸出”你的年齡不大

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

if($age>18){

echo '你的年齡大于18';

}else{

echo '你的年齡小于18';

}

echo '
程序結束!';

3.多重分支 基本語法結構是 if(條件表達式){ //n多語句

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

? 對上面的結構請注意:

(1)else if 可以有一個,也可以有多個(2)else 可以沒有 快速入門案例:

編寫一個程序,可以輸入人的年齡,如果該同志 的年齡大于18歲,則輸出 “你年齡大于18,要對

自己的行為負責,送入監獄”。如果該同志的年

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

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

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

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

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

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

switch分支語句 基本語法結構 switch(表達式){ case 常量1: //n多語句;break;case 常量2: //n多語句 break;defual:

//n多語句;

break;} ? 請注意:

1.case 語句有一到多

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

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

switch($myChar){

case “a”:

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

break;

case “b”:

echo '今天星期二,猴子當小二';

break;

case “c”:

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

break;

default:

echo '沒有匹配的日期';

}

echo 'okokook';一個案例: $i=“11“;

switch($i){

case 10:

echo '10';

case 1.3:

echo '11';

break;

default:

echo 'hello';

//break;

case 11:

echo '12';

break;

}

該案例得出一個結論: //最終的結論是:

首先按照case順序進行配置,如果一個都沒有匹配到,則執行

default語句的內容,直到遇到break,則退出switch Default語句放置的位置對執行的結果沒有影響 如果$a=”1”,則會自動轉化為整型1

42講 循環控制①(for)

更新時間:2012年11月19日15時24分 來源: 學生的問題: 老師,說一下if語句和switch的區別,及應用場景。

回答: 從我們學習if 和 switch 分支看,if 對某個范圍的判斷,而switch是對一個點的判斷, 所以我們可以這樣去選擇他們: 應用場景: 當我們 的分支就是幾個點的時候(比如判斷坦克的方向),就應當使用swtich ,如果你的分支是幾個區域(范圍)的判斷,則考慮使用if ①

循環控制流程 首先說 for 循環控制 基本語法結構

for(循環初值;循環的條件;步長){

//n多語句;}

為什么需要循環控制 ?

問題 : 請輸出9000000句,”你好,北京” 這樣一問題: 怎樣讓我們的某段代碼,循環的執行 分析圖

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

echo '
你好,北京';

}

echo “over”;

內存圖:

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

更新時間:2012年11月20日11時54分 來源: while循環 基本語法結構是 while(循環條件){

//循環體 ,語句 }

案例: 使用while來打印 10句”你好北京 ” 代碼:

//*****while循環*****

$i=0;//$i循環控制變量

while($i<10){

echo '
你好北京'.$i;

//這里我們對循環控制變量,自增.$i++;

} 流程分析圖:

do..while循環控制 基本語法結構 do{

//循環體 }while(循環條件);

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

echo '
dowhile你好北京'.$i;【2】 //對循環控制變量修改

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

綜合案例: 要求:

請使用循環控制語句,輸出一個空心的菱形->兩個思想

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

*

* *

* *

* *

*

但是這個菱形的層數可以靈活的變化.比較困難-------》簡單化

<-------->

案例如下:

//打印出金字塔的一半

//死去活來

//外層的for循環控制層數

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

//內層控制每層*的個數

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

echo '*';

}

echo '
';

}

//打印出整個金字塔

//如果打印3層

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

5$n=20;

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

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

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

echo “ ”;

}

//內層控制每層*的個數

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

echo '*';

}

echo '
';

}

請大家打印出一個空心金字塔

*

* *

**** 思路:

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

思路肯定分析:

和一個空心的菱形

45講 break語句 continue語句 常量

更新時間:2012年11月23日15時22分 來源:

循環相關的語句-break

基本的概念: 表示結束當前的 for、while、do..while、switch, 流程, 可以給一個數字,表示退出到第幾層.快速入門案例:

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

break;} }

快速入門的案例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;結果是: quit at 5 quit at 10 $i=10 分析圖:

從上面的案例,我們得到幾個結論: 1.break語句 默認跳出 1層

2.break語句 后面帶的數字,不能超過實際可以跳出的循環層數,否則,會報fatal error 循環相關語句-continue

基本概念: continue 用于結束本次循環剩余代碼,從新開始新的一次循環(如果條件為真,就繼續執行), continue 后面也可以帶數字,表示從第幾次循環重新開始 快速入門:

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

echo '$i='.$i.“
”;} 結果 $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語句

基本概念: 通過goto語句我們可以將程序跳轉到指定的地方去執行.goto 標簽;標簽: 語句;快速入門案例: goto a;echo 'aa';a: echo 'bb';快速入門案例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;結果: j = 17

php中常量 說明:

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

5.常量的名稱,我們一般說是 全部大寫,然后用下劃線間隔

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

//第一種方法

define(“TAX_RATE”,0.08);

echo TAX_RATE;

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

const TAX_RATE2=0.1;

echo '-'.TAX_RATE2;?>

46講 函數基本概念 函數快速入門

函數講解

提出一個問題? 請大家完成這樣一個需求:

更新時間:2012年11月25日18時08分 來源: ①輸入兩個數,再輸入一個運算符(+,-,*,/),得到結果.如果我們不考慮使用新的技術,用我們現在的知識結構,完成

//請大家完成這樣一個需求:

//①輸入兩個數,再輸入一個運算符(+,-,*,/),得到結果.$num1=34;

$num2=90;

$oper=“-”;

//$res表示結果

$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 '運算符號有誤!';

}

echo “計算結果是=”.$res;?>

從該代碼分析,我們發現,如果別的頁面也需要這樣的功能,則代碼的復用性不好--->函數引出 現在我們使用函數,來快速體驗好處,示意圖:

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

//我們一個計算,+* / 的代碼集合->函數

//1.function 是一個關鍵字

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

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

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

//$res 表示計算的結果

$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 '運算符號有誤!';

}

//表示返回一個結果.return $res;

}

$a=12;

$b=45;

$type=“+”;

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

echo “res=”.$res;?>

函數調用的流程圖 :

一個通俗理解圖:

為了加深大家對函數調用的理解我們,舉例(自己調用自己的案例)

function abc($n){

if($n>2){

abc(--$n);

}else{

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

}

}

abc(4);?>

函數自己調用自己-》這個就稱為遞歸調用.函數的深入使用討論 函數的基本結構

function 函數名(參數列表){

//函數體;

//return 語句;}

參數列表可以是多個參數

參數可以多個,同時,其數據類型可以是php語言支持的任意類型

函數名開頭的字母,以_ 或者 A_Z 或者 a-z ,不要用數字或者特殊字符開頭 ④

函數名不區分大小寫 ,這個與變量不一樣.function Abc(){} 和 function abc(){} 是同一個函數.⑤

一個自定義函數中的變量是局部的,函數外不生效 案例:

function abc3()

{

$a=45;

echo 'a='.$a;

}

abc3();

echo 'aa='.$a;// 這里會報一個錯誤: Undefined variable: a ? 在php中有三種提示 notice : 注意 waring: 警告 error : 錯誤

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

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

49講 函數使用注意事項② 函數作業布置

更新時間:2012年11月30日16時20分 來源: ⑦

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

function abc3($a){

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

$a=45;

}

abc3($a);

echo $a;

在php函數中,我們可以給某些參數,賦一個默認的值.案例說明:

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傳遞變量的時候,默認是值傳遞,如果需要引用(地址)傳遞,可以使用 &變量名;舉例說明:

50講 函數再回顧 自定義函數

更新時間:2012年12月03日15時01分 來源: 回顧45講49講函數內容,請參考45講到49講筆記內容。

函數分為兩大類 ①

自定義函數 自己寫的函數 ②

系統函數 php語句本身給你提供,讓你直接使用的函數, php設計者認為,在項目開發的過程,很多人都會用的一下功能,則就直接提供給你?

比如: 我要取一個數的絕對值?

funct myAbs($num){

if($num<0){

return-$num;}else{

return $num;} } ?>

由系統提供.51講 位運算①

更新時間:2012年12月04日17時47分 來源:

位(bit)運算

二進制

所謂二進制就是逢二進一(0,1), 因為使用二進制只有 0, 1 兩個數,簡單,易于電子方式實現,同時,通過0,1 組合可以表示任意一個數.? 二進制有三個重要的概念 1.原碼

用二進制來表示一個數,這個碼就是原碼.------> 原碼 00000000 0000000 0000000 00000101 = 1*2的零次方+0*2的一次方+1* 2的二次方=1+0+4=5 2.負數的反碼=它的原碼符號位不變,其它位取反(0->1,1->0)反碼(正數的反碼和它的原碼一樣 , 負數反碼 是 符號位不變其它位取反)補碼(正數的補碼和它的原碼一樣,負數的補碼是 它的反碼+1)舉例-1

-1的原碼 10000000 00000000 00000000 00000001-1的反碼 11111111 11111111 11111111 11111110-1 的補碼 11111111 11111111 111111111 11111111 3.在計算機運算的時候,都是以補碼的方式來運算的 4+5=>計算機 4-5=4+(-5)

這句話意思就是,不管一個數是正數還是負數,都要被轉成補碼,然后進行運算.位運算一覽表

該圖的前面四個是位運算 其運算規則是:

按位與& : 兩位全為1,結果為按位或| : 兩位有一個為1,結果為1

按位異或 ^ : 兩位一個為0,一個為1,結果為1

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

步驟 : 首先要求出 2的補碼 2是正數 所以 原碼=反碼=補碼 2 原碼

00000000 00000000 00000000 00000010 ~2

11111111 11111111 11111111 11111101(補碼)->原碼 ? 負數的 原碼-》反碼-》補碼

11111111 11111111 11111111 11111101-> 推出其反碼(對補碼-1)

11111111 11111111 11111111 11111100 推出原碼

52講 位運算②

更新時間:2012年12月06日10時57分 來源: 10000000 00000000 00000000 0000011->-~-5=?

-5 的 補碼找出來.-5 原碼 10000000 00000000 00000000 00000101-5 反碼 11111111 11111111 11111111 11111010-5 補碼 11111111 11111111 11111111 11111011

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

2&3=?

2&3 首先要找到 2 和 3的補碼

的補碼 00000000 00000000 00000000 00000010

的補碼 00000000 00000000 00000000 00000011

2&3 00000000 00000000 00000000 00000010 [補碼

2|3=?的補碼 00000000 00000000 00000000 00000010

的補碼 00000000 00000000 00000000 00000011

2|3

00000000 00000000 00000000 00000011

2^3的補碼 00000000 00000000 00000000 00000010

的補碼 00000000 00000000 00000000 00000011

2^3 00000000 00000000 00000000 00000001

13&7=?

5|4=?

-3^3=?

位移運算

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

算術右移:低位溢出,符號位不變,并用符號位補溢出的高位

算術左移: 符號位不變,低位補0 根據我們前面的規范,來完成幾個案例 $a=1>>2;1 的補碼

00000000 00000000 00000000 00000001 1>>2

00000000 00000000 00000000 00000000

$b=-1>>2;

步驟-1 的補碼

-1 的原碼 10000000 00000000 00000000 00000001

-1 的反碼 11111111 11111111 11111111 11111110

-1 的補碼 11111111 11111111 11111111 11111111

-1 >> 2

11111111 11111111 11111111 11111111 補碼

結果

補碼->原碼

反碼 11111111 11111111 11111111 11111110

原碼 10000000 0000000 00000000 00000001 $c=1<<2;1<<2 1的補碼

00000000 00000000 00000000 00000001 00000000 00000000 00000000 00000100

$d=-1<<2;

53講 數組介紹 數組的創建 數組的遍歷

更新時間:2012年12月07日17時49分 來源: 10進制->2進制 7 對 除

2數組(重點)提出一個問題?

一個養雞場有6只雞,它們的體重分別是3kg,5kg,1kg,3.4kg,2kg,50kg。請問這六只雞的總體重是多少?平均體重是多少? 請你用現在掌握的技術編一個程序。現在我們使用現有的技術來解決問題 array01.php $hen1=3;

$hen2=5;

$hen3=1;

$hen4=3.4;

$hen5=2;

$hen6=50;

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

我們可以使用一個新的數據類型array 數組,來統一個管理這一組數

什么是數組

可以用于存放多個數據的數據類型,我們稱為數組 快速體驗案例: 用數組來解決養雞場的問題 //使用數組來完成案例

$hens[0]=3;

$hens[1]=5;

$hens[2]=1;

$hens[3]=3.4;

$hens[4]=2;

$hens[5]=50;

$hens[6]=30;

$allWeight=0;

//遍歷整個數組

//有時為了知道某個數組共有多少個元素,可以使用系統函數count

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

for($i=0;$i

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

$allWeight+=$hens[$i];

}

echo '
總體重是='.$allWeight.'平均體重='.$allWeight/count($hens);小結: 該案例重點說明數組基本使用,細節后面說

數組創建

在php中,數組就是關鍵字和值的集合,我們可以這樣創建 ①

創建數組 $arr[0]=123;$arr[1]=90;$arr[2]=8;幾個概念:

[0]-> 這個我們稱為下標,或者稱為 關鍵字 $arr[0]-> 這個稱為數組的一個元素.$arr[0]=123;123 表示該$arr[0]元素對應的值 $arr –》這個是該數組的名稱.在php數組中,元素存放的值可以是任意數據數據類型 , 舉例說明:

$arr[0]=123;

$arr[1]=“hello”;

$arr[2]=45.6;

$arr[3]=true;

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

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

//遍歷一下

for($i=0;$i

echo '
'.$arr[$i];

} ?>

創建數組的第二種方法 基本語法

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

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

//遍歷一把

for($i=0;$i

echo “
”.$arr[$i];

}

第三種方式創建數組(在默認情況下,我們的元素的下標,是從0開始給你編號,但是實際上,也可以自己指定)基本語法

$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];

}*/

//這個foreach適用范圍更廣

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

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

}

54講 數組的引用 數組使用細節①

更新時間:2012年12月09日20時22分 來源: ? 注意事項

①如果我們創建一個數組的時候,沒有給某個元素指定下標,php就會自動的用目前最大的那個個下標值(整數),加上一作為該元素的下標(關鍵字)

$arr=array(5=>“logo”,567,90);

//我要訪問“logo”這個值

echo $arr[5];

echo “
”.$arr[6];

②如果我們給某個元素的下標一樣,則會覆蓋原來的值: $arr=array(5=>“logo”,567,90);

//我要訪問“logo”這個值

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

echo $arr[5];

echo “
”.$arr[6];

如果我們使用true ,false null 作為key, 則應當怎樣訪問 $arr[true]=“hello”;//==> $arr[1]

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

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

//null<==>”“

echo $arr[0];

echo ”
“.$arr[null];⑤

//我們通常可以使用print_r來顯示這個數組情況

print_r($arr);

echo ”
“;

//var_dump可以更加詳細的顯示數組的信息

var_dump($arr);

訪問數組的時候,不要越界比如: $arr=array(56,100,101);

echo $arr[2];//數組越界

echo ”hello“;

一維數組的引用 基本語法: $數組名[鍵值];

如果你寫的鍵值不存在,則會報告: Notice: Undefined offset

一維數組使用陷阱 //*****一維數組引用陷阱

$arr[bar]=”hello,world“;echo $arr[bar];這樣使用時危險!!

php的數組可以動態的增長 $a=array(2,3);

//這里說明php的數組是可以動態增長.$a[3]=56;

echo $a[2];

php的數組相關的函數說明 ①

count 函數 基本用法是

count($數組名);可以統計該數組共有多少元素.②

is_array

print_r 和 var_dump ④

explode 對字符串進行分割 案例:

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

//在實際開發中,涉及到字符串的拆分,可以考慮

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

print_r($arr);

php數組遍歷的四個方法

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

//for while do_while

//for

for($i=0;$i

echo ”
“.$colors[$i];

}

//while

$i=0;//循環控制變量

while($i

echo ”
“.$colors[$i];

$i++;

}

//do..while

$i=0;//循環控制變量

do{

echo ”
“.$colors[$i];

$i++;

}while($i

//foreach

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

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

echo ”
$k=$v“;

}

55講 數組使用細節② 數組運算符 數組作業評講① 數組小結

更新時間:2012年12月11日16時58分 來源:

使用unset函數可以銷毀某個元素,也可以銷毀某個變量,銷毀該元素后,關鍵字不會重新組合.$arr[0]=123;

$arr[1]=456;

$arr[2]=”hello“;

//比如現在我要刪除 $arr[1] 元素

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

echo $arr[1];

unset($arr[1]);

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

echo $arr[1];

echo print_r($arr);

數組運算符(了解即可)

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

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

$c = $a + $b;//$b數組的鍵和值加到$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);

數組的案例:

為加強大家對數組的理解,我們再給大家出一個題,我們一起完成.在運動會上,五個小孩比賽滑輪,他們的滑完100米,分別用了10s、12s、5.7s、9s、14s,請編寫一個程序,計算他們的平均時間?[array03.php] 時間保留到小數點后兩位.

請輸入五個小孩的成績,用空格隔開

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

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

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

預測大數據在2013年將帶來了340億美元的IT開支,預計到2018年這一數據將增長三倍。可見IT行業在市場價值魅力空前。2014年IT業務的發展趨勢也會將大幅度提升。盡管在各大IT培訓機構的努力下,我國具備軟件開發技能的人越來越多,但與軟件行業的發展速度相比,軟件人才顯然仍存在較大缺口。

我國信息化建設步伐正在不斷持續前進,IT界的發展迅速是眾所周知的,單單從這幾年,回顧手機方面的發展,誰會想到橫行了幾年的塞班系統在安卓,蘋果的競爭下黯然退場。可技術科發展的大潮流里,套用一句詩詞的話就是“長江后浪推前浪,前浪死在沙灘上”。IT行業應該是如今最火行業之一,且沒有定義和壟斷的行業!

第五篇:傳智播客 韓順平php從入門到精通 61-78講面向對象課堂筆記

php面向對象編程 提出一個問題?

張老太養了兩只貓貓:一只名字叫小白,今年3歲,白色。還有一只叫小花,今年100歲,花色。請編寫一個程序,當用戶輸入小貓的名字時,就顯示該貓的名字,年齡,顏色。如果用戶輸入的小貓名錯誤,則顯示張老太沒有這只貓貓。數組<--->對象

array(1,56,90,100)->隱藏問題array(對象,對象。。)【數組對象】 首先我們用現有的知識來完成這個案例:

$cat1_name=”小白”;

$cat1_age=3;

$cat1_color=”白色”;

//變量是分開.$cat2_name=”小花”;

$cat2_age=100;

$cat2_color=”花色”;?>

我們能不能把屬于同一事物的變量,統一管理? 解決之道->對象 快速體驗案例:

//這就是一個類(貓類)class Cat{

//屬性

public $name;

public $age;

public $color;}

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

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

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

我們這里說明一下類和對象的關系(細節后面逐步展開)

總結幾句話:

類是抽象的,代表一類事物 ②

對象是具體,是類的一個具體實例 ③

類是對象的模板, 對象是類的一個個體實例

php面向對象編程

成員屬性的說明

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

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

//創建對象

$cat1=new Cat;

$cat1=new Cat();?>

2.怎樣訪問一個成員屬性(其它成員屬性是public)基本語法是 $對象名->屬性名;

?如果一個文件,專門用于定義類,則命名規范應當這樣

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

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

如果給一個函數傳遞一個對象,實際上是傳遞的一個地址.//看下面的一段代碼: class Person{

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

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

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

在php中如果,給一個函數傳遞的是數組,則默認情況下是傳值(拷貝了新的數組),如果希望傳入地址,則應當,&$數組名 學生問題?

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

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

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

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

成員方法的講解 函數和成員方法關系:

當我們把一個函數寫到某個類中,則該函數可以稱成員方法:

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

②添加jisuan成員方法,可以計算從 1+..+1000的結果

③修改jisuan成員方法,該方法可以接收一個數n,計算 1+..+n 的結果

④添加add 成員方法,可以計算兩個數的和 成員方法的基本語法:

訪問修飾符號 function 函數名(參數列表){

//函數體

//return 語句;}

class Person{

public $name;

public $age;

public function speak(){

echo “我是一個好人!”;

}

public function count1(){

$res=0;

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

$res+=$i;

}

//return 究竟到什么地方去?誰調用,就返回給誰

return $res;

}

//修改jisuan成員方法,該方法可以接收一個數n,計算 1+..+n 的結果

public function count2($n){

$res=0;

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

$res+=$i;

}

return $res;

}

//添加add 成員方法,可以計算兩個數的和

public function add($num1,$num2){

return $num1+$num2;

}

}

//如何使用函數

//1.創建一個人

$p1=new Person();

//通過對象去訪問,調用成員方法.//這里強調,調用成員方法和調用普通函數的機制,仍然不變

$p1->speak();

//讓這個人做算術題

$res=$p1->count1();

echo '計算結果是='.$res;

//讓這個人可以接收一個數,然后計算

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

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

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

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

成員方法的細節

我們在實際開發,其實通常是這樣來使用類

Person.class.php < ?php

class Person{

//成員屬性

public $name;

public $age;

//成員方法

public function speak(){

echo “我是一個好人!”;

}

public function count1(){

$res=0;

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

$res+=$i;

}

//return 究竟到什么地方去?誰調用,就返回給誰

return $res;

}

//修改jisuan成員方法,該方法可以接收一個數n,計算 1+..+n 的結果

public function count2($n){

$res=0;

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

$res+=$i;

}

return $res;

}

//添加add 成員方法,可以計算兩個數的和

public function add($num1,$num2){

return $num1+$num2;

}

//添加一個新的方法,可以判斷三個數最大的數

public function findMax($arr){

//這里仍然可以寫算法

//從$arr數組中,找到最大的數.//1.假設數組的第一個數就是最大的數

$maxVal=$arr[0];

//2.最大數的下標是

$maxIndex=0;

//開始循環的比較

for($i=1;$i

//這個條件說明,maxVal不是最大

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

//調整

$maxVal=$arr[$i];

$maxIndex=$i;

}

}

return $maxVal;

}

}

?>

Exercise01.php < ?php

//引入類文件

require_once ?Person.class.php?;

//創建對象

$p1=new Person();

//調用$p1的各個方法

$p1->speack();

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

案例:編寫一個函數(以面向對象的方式開發),從網頁輸入一個整數打印出對應的金子塔:

當我們學習完成員方法后,我們的類定義就完善一步了:

1.設計計算機類,要求如下: 屬性:品牌,顏色,cpu型號,內存容量,硬盤大小,價格,工作狀態

方法: 打開,關閉,休眠(表示)創建一個計算機對象,調用打開,關閉方法.php面向對象編程

構造方法 class Person{

public $name;

public $age;}

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

//需求在創建一個人對象時候,我就初始化 name 和 age;->構造方法 我們快速入門: class Person{

public $name;

public $age;

public function __construct(){

echo “我是構造方法”;

}

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

$p1=new Person();?構造方法沒有返回值, 它是自動被調用

2.在php 5 中一個類可以同時有兩種形式的構造方法

__construct()和類名(), 當兩個同時存在的時候,優先調用__construct(), 請大家以后使用__construct()

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

//這個就是構造方法,php5獨有

public function __construct($iname,$iage){

//$name認為$name是一個新的變量

//$name=$iname;

//$age=$iage;

$this->name=$iname;

$this->age=$iage;

echo “我是構造方法”;} }

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

? 1.$this 本質可以理解就是這個對象的地址

2.哪個對象使用到$this, 就是哪個對象地址

3.$this不能在類外部使用.構造方法的注意事項

(1)一旦自定義了一個構造函數,默認的

構造函數就被覆蓋了,這時在創建對象的時候就要使用自定義的構造函數.(2)一個類只能有一個構造函數.(不能重載)構造方法的8點說明:

①構造方法名和類名相同(php4版),php5版的構造方法 名可以和類名相同,也可以是__construct()②構造方法沒有返回值

③主要作用是完成對新對象的初始化,并不是創建對象本身。④在創建新對象后,系統自動的調用該類的構造方法

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

⑥如果沒有給類自定義構造方法,則該類使用系統默認的構造方法。class Cat{

funciton __construt($name){

echo “ok”;}

}

$cat1=new Cat();

⑦如果給類自定義了構造方法,則該類的默認構造方法被覆蓋。⑧構造方法的默認訪問修飾符是public

析構方法

析構方法的作用主要用于,釋放資源(比如釋放數據庫的鏈接,圖片資源...銷毀某個對象..)快速入門

class Person{

public $name;

public $age;

public $conn;

//構造方法

public function __construct($name,$age){

$this->name=$name;

$this->age=$age;

//打開一個$conn鏈接數據庫的資源

}

//寫一個析構方法 __ 是兩個下劃線

function __destruct(){

echo $this->name.“銷毀資源關閉數據庫..
”;

}

}

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

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

運行代碼我們得出: 1.析構方法會自動調用 2.析構方法主要用于銷毀資源

3.析構方法調用順序是,先創建的對象后被銷毀 4.析構方法什么時候被調用(1)當程序(進程結束)退出時

(2)當一個對象稱為垃圾對象的時候,該對象的析構方法也會被調用,(3)所謂垃圾對象,就是指,沒有任何變量再引用它.(4)一旦一個對象成為垃圾對象,析構方法就會立即調用 示意圖:

小結:

①php5加入的的析構方法function __destruct()②析構方法沒有返回值

③主要作用是釋放資源的操作,并不是銷毀對象本身。④在銷毀對象前,系統自動的調用該類的析構方法

⑤一個類最多只有一個析構方法。

更新時間:2013年01月03日17時03分 來源: 靜態變量 提出一個問題:

說,有一群小孩在玩堆雪人,不時有新的小孩加入, 請問如何知道現在共有多少人在玩?請使用面向 對象的思想,編寫程序解決。思路:

1.使用全局變量

* 什么是全局變量, 在程序中,都可以使用的變量稱為全局變量.當我們了解全局變量后,我們來看看如何解決問題?

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

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.“加入堆雪人游戲”;

}

}

//創建三個小孩

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

$child1->join_game();

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

$child2->join_game();

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

$child3->join_game();

//看看有多少人玩游戲

echo “
有”.$global_nums;?>

2.使用靜態變量 靜態的變量的基本用法 1.在類中定義靜態變量 [訪問修飾符] static $變量名;2.如何訪問靜態變量

如果在類中訪問 有兩種方法self::$靜態變量名 , 類名::$靜態變量名 如果在類外訪問: 有一種方法類名::$靜態變量名 3.靜態變量存在方式

解法: class Child{

public $name;

//這里定義并初始化一個靜態變量 $nums

public static $nums=0;

function __construct($name){

$this->name=$name;

}

public function join_game(){

//self::$nums使用靜態變量

self::$nums+=1;

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

}

}

//創建三個小孩

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

$child1->join_game();

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

$child2->join_game();

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

$child3->join_game();

//看看有多少人玩游戲

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

?

靜態方法

需求: 當我們操作靜態變量的時候,我們可以考慮使用靜態方法,比如統計所有學生交的學費

在我們編程中,我們往往使用靜態方法去操作靜態變量.靜態方法的特點

1.靜態方法去操作靜態變量

2.靜態方法不能操作非靜態變量.這里請注意 : 普通的成員方法,既可以操作非靜態變量,也可以操作靜態變量

?

php面向對象編程的三大特征

封裝 ②

繼承 ③

多態

抽象

class Account {

public $blance;

public $no;

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

?

封裝

那么在php中如何實現這種類似的控制呢?請大家看一個小程序.(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提供了三種訪問控制符號.有三種

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

這三個控制修飾符號可以對屬性和方法修飾

1.如果一個方法沒有訪問修飾符,則默認是public 2.屬性必須指定訪問修飾符

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

$this->test12();

}

protected function test12(){

echo “test12 hello”;

}

舉例說明: class Person{

public $name;

protected $age;

private $salary;

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

$this->name=$name;

$this->age=$age;

$this->salary=$salary;

}

//成員方法

function showInfo(){

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

}

}

//創建一個人

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

echo $p1->name;//可以

echo $p1->age;//報錯

echo $p1->salary;//報錯.?我們現在就想去訪問protected 變量或者 private 變量, 通常的做法是提供 public 函數去訪問這些變量.形式是

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

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

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

public function getSalary($user,$pass){

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

return $this->salary;

}else{

return “sorry,你無法看”;

}

}(2)修改人的年齡

提供了兩個函數.//修改年齡,對輸入的值,進行校驗.public function setAge($age){

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

$this->age=$age;

}else {

echo “年齡范圍不對”;

}

}

//查看年齡

public function getAge(){

return $this->age;

}

還有一種形式, 通過一對 __set 和 __get方法來操作我們的變量,不推薦.class A{

private $n1;

private $n2;

private $n3;

//使用__set 方法來管理所有的屬性

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;

可以直接寫一個方法了操作變量 class Peron{

protected n1;

private $n2;

function showInfo($n1){

$this->n1=$n1;

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

?

為什么需要繼承

//應用場景開發一套學生管理系統(Pupil, Graduate ,...)

//小學生類

class Pupil{

public $name;

protected $age;

protected $grade;

public function showInfo(){

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

}

public function tesing(){

echo “ 小學生考試..”;

}

}

//研究生類

class Graduate{

public $name;

protected $age;

protected $grade;

public function showInfo(){

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

}

public function tesing(){

echo “研究生考試..”;

}

}

從上面的代碼我們看出,代碼的復用性不高,同時也會讓管理代碼成本增高.?

解決之道(繼承);

現在我們使用繼承對上面的代碼,進行改寫.代碼:

//應用場景開發一套學生管理系統(Pupil, Graduate ,...)

//父類

class Stu{

public $name;

protected $age;

protected $grade;

public function showInfo(){

echo $this->name;

}

}

//子類

class Pupil extends Stu{

public function testing(){

echo “ 小學生考試..”;

}

}

class Graduate extends Stu{

public function testing(){

echo “研究生考試..”;

}

}

//創建學生

$stu1=new Pupil();

$stu1->name=“小明”;

$stu1->testing();

$stu1->showInfo();

//創建一個研究生

$stu2=new Graduate();

$stu2->name=“老明”;

$stu2->testing();

$stu2->showInfo();

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

class 類名 extends 父類名{

//在寫自己需要的屬性和方法.}

討論繼承細節:

討論繼承細節:

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

public $n1=90;}

class B extends A{

public $n2=“hello”;}

class C extends B{

}

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

3.當創建子類對象的時候,默認情況下,不會自動調用父類的構造方法.class A{

public $n1=90;

//構造方法

public function __construct(){

echo “A __construct”;

}

}

class B extends A{

function __construct(){

echo “B __construct”;

}

}

//創建B對象實例

$b=new B();

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

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

class A{

public $n1=90;

//構造方法

public function __construct(){

echo “A __construct”;

}

}

class B extends A{

function __construct(){

echo “B __construct”;

//顯式的調用父類的方法

//A::__construct();

parent::__construct();

} }

//創建B對象實例 $b=new B();

5.當一個子類的方法和父類的方法完全一樣(public protected), 我們稱為方法的覆蓋(方法重寫)

重載

基本概念: 函數名一樣,通過函數的參數個數或者是參數類型不同,達到調用同一個函數名,但是可以區分不同的函數 class A{

public function test1(){

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

echo “test1 hello”;} } 重載

$a =new A();$a->test1();$a->test1(456);上面的這用用法是不對.PHP5 中如何通過魔術函數來實現方法重載的效果 代碼說明

class A{

public function test1($p){

echo “接收一個參數”;

echo “
接收到參數是”;

var_dump($p);

}

public function test2($p){

echo “接收兩個參數
”;

var_dump($p);

}

//這些提供一個__call

//__call 是它一個對象調用某個方法,而該方法不存在,則

//系統會自動調用__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);

?> 小結: 關于重載

① php5 默認情況下不直接支持方法重載 ② php5 可以同__call魔術方法,模擬一個方法效果的效果

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

先看一個問題

當一個父類知道所有的子類都有一個方法,但是父類不能確定該方法究竟如何寫,可以讓子類去覆蓋這個方法,具體用法如下:

//抽象一個Animal類

class Animal{

public $name;

protected $price;

function cry(){

echo “不知道動物怎么叫..”;

}

}

class Dog extends Animal{

//覆蓋

function cry(){

echo “小狗汪汪叫..”;

}

}

class Pig extends Animal{

//覆蓋.function cry(){

echo “哼哼叫..”;

}

}

//創建一個只狗

$dog1=new Dog();

$dog1->cry();

$pig1=new Pig();

$pig1->cry();?> 關于方法重寫細節討論

1.要實現重寫,要求子類的那個方法的名字和參數列表個數一摸一樣,但是并不要求參數的名稱一樣.2.如果子類要去調用父類的某個方法(public / protected)則可以使用 parent::方法名(參數..), 父類名::方法名(參數...)3.在實現方法覆蓋的時候,訪問修飾符可以不一樣

//但是必須滿足: 子類的訪問范圍>=父類的訪問范圍 多態體現在什么地方? class Animal{

public function cry(){

echo '動物叫喚..';

}

}

class Cat extends Animal{

public function cry(){

echo “abc”;

}

}

$cat1=new Cat();

$cat1->cry();當子類沒有覆蓋父類的方法則 $cat1->cry()調用的是父類,當子類覆蓋了父類的方法,則調用自己的cry()

抽象類

為什么設計抽象類這個技術?

1.在實際開發中,我們可能有這樣一種類,是其它類的父類,但是它本身并不需要實例化,主要用途是用于讓子類來繼承,這樣可以到達代碼復用.同時利于項目設計者,設計類.快速入門

//在實現方法覆蓋的時候,訪問修飾符可以不一樣

//但是必須滿足: 子類的訪問范圍>=父類的訪問范圍

abstract class Animal{

public $name;

protected $age;

//這個方法沒有方法體,這個方法主要是為了讓子類去實現.abstract public function cry();

}

class Cat extends Animal{

public function cry(){

echo “貓貓叫喚..”;

}

}

//創建一個子類實例

$cat1=new Cat();

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

//方法

//屬性 }

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

3.抽象類可以沒有抽象方法.同時還可以有實現了的方法.

//在實現方法覆蓋的時候,訪問修飾符可以不一樣

//但是必須滿足: 子類的訪問范圍>=父類的訪問范圍

abstract class Animal{

public $name=“abc”;

protected $age;

//這個方法沒有方法體,這個方法主要是為了讓子類去實現.abstract public function cry();

public function getName(){

return $this->name;

}

}

class Cat extends Animal{

public function cry(){

echo “貓貓叫喚..”;

}

}

//創建一個子類實例

$cat1=new Cat();

$cat1->cry();

echo $cat1->getName();

?>

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

abstract function test();

}

echo “ok”;

5.如果A類繼承了一個抽象類 B,則要求A類實現從B類繼承的所有抽象方法 案例:

//這是一個抽象類

abstract class A{

abstract function test();

}

//B類要么自己抽象,或者實現從A類繼承的抽象方法.class B extends A{

function test(){

echo “我實現A:test()”;

}

}

echo “hello”

接口 快速入門:

//使用程序模擬現實情況

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

interfaceiUsb{

public function start();

public function stop();

}

//編寫相機類,讓它去實現接口

//1.當一個類實現了某個接口,則要求該類必須實現這個接口的所有方法

class Camera implements iUsb{

public function start(){

echo “相機開始工作”;

}

public function stop(){

echo “相機停止工作...”;

}

}

//編寫手機類

class Phone implements iUsb{

public function start(){

echo “手機開始工作”;

}

public function stop(){

echo “手機停止工作...”;

}

}

//如何使用

$camera1=new Camera();

$camera1->start();

$camera1->stop();

echo “
”;

//手機對象

$phone1=new Phone();

$phone1->start();

$phone1->stop();?>

1.接口的使用基本語法 interface 接口名{

//屬性

//方法 }

接口的方法都不能有方法體 如何去實現接口

class 類名 implements 接口名1,接口2.{ }

接口它的作用就是聲明一些方法,供其它類來實現.接口還體現編程中我們希望的效果高內聚低耦合的特點:

繼承是實現接口的關系一覽圖

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

2.定下規范,讓別的程序員來實現,比如: //韓是項目經理

//學生管理系統(students)

//定義接口

interfaceStuManageInterface{

public function addStudent($stu);

public function delStudent($id);

public function updStudent($stu);

}

//給三

classStuManage {

public function tianjiaxuesheng(){

}

}

//四

3.當多個類,他們之間是平級的關系.這些類都會去實現某個功能,只是實現的方式不一樣.接口的細節

1.不能去實例化一個接口 interfaceiUsb{ }

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

2.接口中的所有方法,都不能有方法體 3.一個類可以去實現多個接口 語法:

class 類名 implements 接口1,接口2{ }

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

const A=90;

}

echo “ok”.iUsb::A;

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

const A=90;

function test();

}

echo “ok”.iUsb::A;6.類和接口之間關系一覽圖

代碼:

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;?>

從上面我們看出 ① 一個接口可以繼承多個其它的接口.當一個類去實現了某些接口,則必須把所有接口的方法,都實現

繼承和實現接口的比較:(1)可以認為實現接口是對單一繼承的補充.(2)可以在不破壞類層級關系的前提下,對某個類功能擴展.final關鍵字

1.如果我們希望某個類不被其它的類來繼承(可能因為安全考慮...), 可以使用final

final class A{

}

class B extends A{

}

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

final public function getRate($salary){

return $salary*0.08;

}

}

class B extends A{

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

return $sal*0.01;

}*/

}

$b=new B();

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

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

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

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

使用類名::常量名;接口名::常量

class A{

//常量在定義的時候,必須給初值.//const關鍵字前面不要帶修飾符號.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.常量在定義的時候需要賦初值 2.常量不能修改.3.常量名不能有 $, 一般是大寫, 默認是public

4.常量在類的內部使用 self::常量的名稱類名::常量的名稱 在類的外部使用類名::常量的名稱.面向對象編程的綜合案例

現在我們一起來完成一個稍微綜合的案例---php版本的計算器,從而加深對php的認識,為下一步學習做準備。先用兩個頁面來完該計算器: myCal.php(界面)myResult.php(計算)知識點:

1.如何接收php頁面提交的數據,并處理

2.php中如何使用javascript完成對數據合法性的校驗

我們一起來開發.5.畫出程序框架圖: 6.編寫代碼: 現在我們分析如果要求把 xml 的作業改成面向對象的方式.怎么該?

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

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    主站蜘蛛池模板: 亚洲国产精品成人午夜在线观看| 亚洲最大国产成人综合网站| 中文字幕乱码无码人妻系列蜜桃| 18禁超污无遮挡无码免费游戏| 亚洲国产区男人本色| 日韩精品毛片无码一区到三区| av网站的免费观看| mm1313亚洲国产精品无码试看| 欧美成aⅴ人高清免费观看| 国产成人精品日本亚洲成熟| 狼友av永久网站免费观看| 妇女性内射冈站hdwww000| 国产精品女同一区二区| 丰满岳乱妇在线观看中字| 女m羞辱调教视频网站| 国语自产少妇精品视频蜜桃| 国产免费无遮挡吸乳视频在线观看| 成全世界免费高清观看| 亚洲av永久纯肉无码精品动漫| 久久婷婷五月综合色丁香| 人妻无码av中文系列| 久久综合色_综合色88| 无码aⅴ精品一区二区三区浪潮| 少妇高潮不断出白浆av| 久久久橹橹橹久久久久| 亚洲av午夜福利精品一区二区| 欧美最猛性xxxxx免费| 99久久久成人国产精品免费| 97人妻人人揉人人躁人人| 国产精品美女久久久m| 中文字幕亚洲无线码一区女同| 久久精品国产av一区二区三区| 久久精品国产亚洲av网站| 在办公室被c到呻吟的动态图| 国产精品99久久久久久董美香| 人人妻人人澡人人爽欧美一区九九| 成年动漫18禁无码3d动漫| 麻豆av传媒蜜桃天美传媒| 精品人妻系列无码人妻免费视频| 国语精品福利自产拍在线观看| 狠狠躁天天躁无码中文字幕图|