亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PHP/Javascript/CSS/jQuery常用知識大全詳細(xì)整理第2/2頁

 更新時間:2013年01月07日 10:27:04   作者:  
PHP/Javascript/CSS/jQuery常用知識大全詳細(xì)整理(原創(chuàng))感興趣的朋友可以參考下


            
101.常見框架
       thinkPHP  yii  ZendFramework  CakePhp  sy

102. 常用魔術(shù)方法的觸發(fā)時機(jī)?
       1)__autoload() :當(dāng)程序?qū)嵗硞€類,而該類沒有在當(dāng)前文件中被引入。此時會觸發(fā)執(zhí)行__autoload()。程序希望通過該方法,自動引入這個類文件。該方法有一個參數(shù),即就是那個忘記引入的類的名稱。__autoload()方法的工作原理是什么?當(dāng)程序執(zhí)行到實(shí)例化某個類的時候,如果在實(shí)例化前沒有引入這個類文件,那么就自動執(zhí)行__autoload()函數(shù)。這個函數(shù)會根據(jù)實(shí)例化的類的名稱來查找這個類文件的路徑,當(dāng)判斷這個類文件路徑下確實(shí)存在這個類文件后,就執(zhí)行include或者require來載入該類,然后程序繼續(xù)執(zhí)行,如果這個路徑下不存在該文件時就提示錯誤。使用自動載入的魔術(shù)函數(shù)可以不必要寫很多個include或者require函數(shù)。
       2)__construct()  :這個是魔術(shù)構(gòu)造方法。構(gòu)造方法是實(shí)例化對象的時候自動執(zhí)行的方法,作用就是初始化對象。該方法可以沒有參數(shù),也可以有多個參數(shù)。如果有參數(shù),那么new這個對象的時候要記得寫上相應(yīng)的參數(shù)。在php5以前,沒有魔術(shù)構(gòu)造方法,普通構(gòu)造方法是一個跟類名同名的方法來實(shí)現(xiàn)構(gòu)造的。如果一個類中既寫了魔術(shù)構(gòu)造方法,又定義了普通構(gòu)造方法。那么php5以上版本中,魔術(shù)方法起作用,普通構(gòu)造方法不起作用。反之,在php5以前版本中,不認(rèn)識魔術(shù)構(gòu)造方法,只是把該方法當(dāng)做普通的方法。
       3)__destruct()  :這個是魔術(shù)析構(gòu)方法。析構(gòu)方法的作用和構(gòu)造方法正好相反,是對象被銷毀時被自動調(diào)用的,作用是釋放內(nèi)存。析構(gòu)方法沒有參數(shù)。
       4)__call() :當(dāng)程序調(diào)用一個不存在或不可見的成員方法時,自動觸發(fā)執(zhí)行__call()。它有兩個參數(shù),分別是未訪問到的方法名稱和方法的參數(shù)。而第二個參數(shù)是數(shù)組類型。
       5)__get() :當(dāng)程序調(diào)用一個未定義或不可見的成員屬性時,自動觸發(fā)執(zhí)行__get()。它有一個參數(shù),表示要調(diào)用的屬性的名稱。
       6)__set():當(dāng)程序試圖寫入一個不存在或不可見的成員屬性時,PHP就會自動執(zhí)行__set()。它包含兩個參數(shù),分別表示屬性名稱和屬性值。
       7)__tostring()  :當(dāng)程序使用echo或print輸出對象時,會自動調(diào)用該方法。目的是希望通過該方法將對象轉(zhuǎn)化為字符串,再輸出。__tostring() 無參數(shù),但是該方法必須有返回值。
       8)__clone()  :當(dāng)程序clone一個對象的時候,能觸發(fā)__clone()方法,程序希望通過這個魔術(shù)方法實(shí)現(xiàn):不僅僅單純地克隆對象,還需要克隆出來的對象擁有原來對象的所有屬性和方法。

103. MVC的概念是什么?
       MVC(即模型-視圖-控制器)是80年代發(fā)明的一種軟件設(shè)計模式或者說編程思想。
       M指模型層,V是指視圖層(顯示層或者用戶界面),C是指控制層。
       使用mvc的目的是實(shí)現(xiàn)M和V分離,從而使得一個程序可以輕松使用不同的用戶界面。
       C存在的目的則是在M和V之間起到調(diào)節(jié)作用,確保M和V的同步,一旦M改變,V應(yīng)該能同步更新。
       將M和V分離,就可以做到同一個網(wǎng)頁,在不同節(jié)日到來的時候能顯示不同的頁面風(fēng)格,這只需要提前制作多個視圖層模板頁面,
       而無需更改M層程序。
       MVC做到了編程中的分工合作,代碼的可重用性得到最大化體現(xiàn),程序邏輯更加清晰而富有條理,便于后期維護(hù)管理。

104、     訪問權(quán)限修飾符有哪幾種,對比解釋
       答:1、public 表示公共的,在本類中和子類中以及類外,可以對其調(diào)用
       2、protected表示受保護(hù)的,可以在本類中和子類中調(diào)用
       3、private表示私有的,只能在本類中調(diào)用
       4、var,效果等同于public
105、     Class關(guān)鍵詞前可以有哪些修飾詞
       a)    Final修飾,表示該類是最終的,無法繼承
       b)    Abstract修飾,表示該類是抽象類

106、     作用域操作符在那些場合下使用
       答:作用于操作符的使用場合
       a)    本類中:
              i.     self::類常量
              ii.     self::靜態(tài)屬性
              iii.    self::方法()   parent::方法()
       b)    子類中:
              i.     parent::類常量
              ii.     parent::靜態(tài)屬性(public或者protected)
              iii.    parent::方法()(public或者protected)
       c)    類外:
              i.     類名::類常量
              ii.     類名::靜態(tài)屬性(public)
              iii.    類名::靜態(tài)方法(public)

107、     $this,self, parent分別代表什么?哪些場合下使用
       答:$this代表的是當(dāng)前對象  self代表的是當(dāng)前的類  parent代表的是當(dāng)前類的父類
       使用場合:
       $this只能使用在當(dāng)前類中,通過$this->可以調(diào)用當(dāng)前類中的屬性和方法;
       self只能在當(dāng)前類中使用,通過作用域操作符::訪問當(dāng)前類中的類常量、當(dāng)前類中的靜態(tài)屬性、當(dāng)前類中的方法;
       parent只能使用在有父類的當(dāng)前類中,通過作用域操作符::訪問父類中的類常量、父類中的靜態(tài)屬性、父類中的方法。

108、     說明是接口、抽象類二者有何相同和不同的地方?
       1、接口是幫助php實(shí)現(xiàn)功能意義上的多繼承的,用interface來聲明,其方法沒有方法體,使用implemens關(guān)鍵詞來實(shí)現(xiàn)接口。
       接口中只能包含抽象方法和類常量,不可以包含成員屬性。
       2、抽象類是一種不能被實(shí)例化的類,只能作父類,用abstract class來定義,抽象類和普通類可以沒有區(qū)別,類中可以包含成員屬性、類常量、方法。
       子類得用extends來繼承,而且只能是單繼承。
       兩者相同點(diǎn)是都不可以被實(shí)例化,都是需要被繼承才可以使用。
       兩者的最大區(qū)別是接口可以實(shí)現(xiàn)多繼承,而抽象類只能是單繼承。
       接口中不能包含成員屬性,而抽象類中可以有成員屬性。
       接口中的抽象方法必須是public或者無訪問修飾詞,接口中的抽象方法不能用abstract來修飾。
       抽象類中的方法可以是普通方法,也可以是抽象方法,如果是抽象方法,一定需要使用abstract來修飾。

109、     解釋PHP中單例模式?
       又叫做單態(tài)模式、單元素模式、singleton pattern。單例模式指在PHP的應(yīng)用程序的范圍內(nèi)只對指定的類創(chuàng)建一個實(shí)例。使用單例模式的類稱為單例類。在php中單例類必須要有一個私有的構(gòu)造方法,還要有一個私有的魔術(shù)克隆方法(該方法體中為空)和一個私有的靜態(tài)的成員屬性$_instance.私有構(gòu)造方法防止除自身以外的類來實(shí)例化它。私有的方法體為空的克隆方法防止該類被克隆。$_instance用來存儲被自身實(shí)例化后的對象。還必須要有一個公共的靜態(tài)的方法getInstance()。該方法返回已經(jīng)存儲了實(shí)例對象的$_instance。

單例:一個類至始至終只能實(shí)例化一個對象,這樣的類就是單例類
單例類的優(yōu)點(diǎn):① 節(jié)省空間 ② 節(jié)省資源
實(shí)現(xiàn)單例類的四個要點(diǎn):①私有的構(gòu)造函數(shù)②私有的__clone的方法③私有的靜態(tài)屬性,屬性有以保存類的實(shí)例④公共的靜態(tài)方法來實(shí)例化對象
無限級分類:
        ①數(shù)據(jù)庫設(shè)計:region_id(自增ID) region_name(地區(qū)名稱) parent-id(上級地區(qū)id) region_path(全路徑)
       ②程序設(shè)計:全路徑的作用:a根據(jù)全路徑順序取數(shù)據(jù) b用作信息層級顯示

 110、   什么是SQL注入?
       SQL注入攻擊是黑客對數(shù)據(jù)庫進(jìn)行攻擊的常用手段之一。一部分程序員在編寫代碼的時候,
       沒有對用戶輸入數(shù)據(jù)的合法性進(jìn)行判斷,注入者可以在表單中輸入一段數(shù)據(jù)庫查詢代碼并提交,
       程序?qū)⑻峤坏男畔⑵礈惿梢粋€完整sql語句,服務(wù)器被欺騙而執(zhí)行該條惡意的SQL命令。注入者根據(jù)程序返回的結(jié)果,
       成功獲取一些敏感數(shù)據(jù),甚至控制整個服務(wù)器,這就是SQL注入。

111、   如何防止SQL注入?
       要對提交的信息進(jìn)行過濾,對單引號進(jìn)行轉(zhuǎn)義。
       首先可以在php.ini中設(shè)置,讓所有的單引號在提交后都進(jìn)行轉(zhuǎn)義?;蛘呤褂胊ddslashes().

112、     FCKEditor自動過濾的解決辦法?
       如果您需要編輯模板頁,默認(rèn)的FCK設(shè)置是會去掉<HTML></HTML><BODY></BODY>標(biāo)簽,而且會給你加上<P></P>標(biāo)簽的,如果需要保留的話,只要更改下設(shè)置可以了。
       在fckconfig.js里面有:FCKConfig.FullPage = false ;
       改為:FCKConfig.FullPage = true;
       如果想去掉自動添加<P>的代碼就可以在這里設(shè)置
       默認(rèn)是
       FCKConfig.EnterMode = 'p' ;    // p | div | br
       FCKConfig.ShiftEnterMode = 'br' ; // p | div | br
       改成
       FCKConfig.EnterMode = 'br' ;    // p | div | br
       FCKConfig.ShiftEnterMode = 'p' ; // p | div | br

113、     $_REQUEST、$_GET、$_POST、$_COOKIE 的關(guān)系和區(qū)別:   
       1.關(guān)系:$_REQUEST包含了$_GET、$_POST、$_COOKIE等的所有內(nèi)容,是它們的集合體。
       2.通過$_REQUEST獲取變量值,PHP頁面因?yàn)椴淮_定它是哪種傳值方式,
       因此會根據(jù)php.ini中的配置來接收值。
       php.ini里可以設(shè)置,variables_order = “GPC”。其含義是GET,POST,COOKIE.
       所以PHP頁面會先從$_GET中獲取,再從$_POST中獲取,然后從$_COOKIE中獲取。
       新獲得的值會覆蓋之前獲取到的值。
       因此從表現(xiàn)形式上看,$_REQUEST最后是獲取$_COOKIE中的值,如果$_COOKIE中沒有值,
       會獲取$_POST中的值,如果$_POST沒有獲取到 ,就去$_GET中獲取。
       如果$_GET中也沒有該值,那么$_REQUEST就返回null。

114、     什么是多條件查詢(復(fù)合查詢),如何實(shí)現(xiàn)多條件查詢?
       如何實(shí)現(xiàn)萬能查詢呢?查詢的時候要填寫查詢條件,這些條件會通過表單進(jìn)行提交。
       首先需要檢查提交的條件是否為空。如果不為空,就認(rèn)為這個值是要被當(dāng)作條件,
       我們就可以使用字符串連接的方式來組合一個sql查詢語句。
       當(dāng)執(zhí)行后獲取查詢結(jié)果。

115.       文件上傳需要注意哪些細(xì)節(jié)?怎么把文件保存到指定目錄?怎么避免上傳文件重名問題?
       1). 首現(xiàn)要在php.ini中開啟文件上傳;
       2). 在php.ini中有一個允許上傳的最大值,默認(rèn)是2MB。必要的時候可以更改;
       3). 上傳表單一定要記住在form標(biāo)簽中寫上enctype="multipart/form-data";
       4). 提交方式 method 必須是 post;
       5). 設(shè)定 type="file" 的表單控件,并且必須具有name屬性值;
       6). 為了上傳成功,必須保證上傳文件的大小是否超標(biāo)、文件類型是否符合要求,上傳后存放的路徑是否存在;
       7). 表單提交到接收頁面,接收頁面使用$_FILES來接收上傳的文件。$_FILES是個多維數(shù)組。第一維下標(biāo)是上傳控件的name,二維下標(biāo)分別為name/type/tmp_name/size/error。分別代表文件名、文件類型、上傳到臨時目錄下的臨時文件名、文件大小、是否有錯誤。如果是批量上傳,那么二維下標(biāo)就是數(shù)組,而并非是字符串。
       8). 文件上傳后是被放置在服務(wù)器端臨時路徑下,需要使用move_uploaded_file ()函數(shù),才可以將上傳后的文件保存到指定目錄。
       9). 為了避免上傳文件重名,可以通過上傳的文件名獲取到文件后綴,然后使用時間戳+文件后綴的方式為文件重新命名。

116.      使用GD2庫創(chuàng)建圖像的步驟?
       1). 創(chuàng)建一個畫布:imagecreate();
       2). 設(shè)置畫布背景顏色,使用RGB設(shè)置顏色:imagecolorallocate();
       3). 設(shè)置文字顏色:imagecolorallocate();
       4). 在畫布上書寫文字:imagestring();
       5).  以 JPEG 格式將圖像輸出到瀏覽器或文件:【根據(jù)圖片格式不同,函數(shù)還可以是imagepng()、imagegif()等】   imagejpeg();
       6). 清除圖像資源:imagedestroy();

117.      GD2庫生成縮略圖的步驟是什么?
       1). 讀取希望生成縮略圖的源圖像,創(chuàng)建圖像對象:【根據(jù)圖片格式不同,函數(shù)也相應(yīng)不同】
              $src_image = imagecreatefromjpeg();
       2). 獲取原圖像的寬度和高度$srcW,$srcH,根據(jù)縮放比例計算出新圖像的寬度和高度$dstW、$dstH:
       3). 創(chuàng)建一個真色彩的圖像對象,寬度和高度設(shè)置成剛才計算出的寬度和高度:
              $dst_image = imagecreatetruecolor($dstW,$dstH);
       4). 拷貝圖像并調(diào)整大小:   imagecopyresized();
       5). 將圖像輸出:【根據(jù)圖片格式不同,函數(shù)也相應(yīng)不同】  imagejpeg();
       6). 清除圖像資源(將源圖像資源和目標(biāo)圖像資源都清除)   imagedestroy();

118.      GD2庫給圖片增加水印如何做?
       1. 添加簡單的文本水印:
              利用imagestring()函數(shù)就可以在圖片上寫文本水印。
       2. 增加一個圖形水?。?BR>              1). 讀取希望增加水印的源圖片,創(chuàng)建圖像對象:【根據(jù)圖片格式不同,函數(shù)也相應(yīng)不同】
                     $image = imagecreatefromjpeg();
              2). 創(chuàng)建一個水印圖片的圖像對象:
                     $watermark = imagecreatefrompng();
              3). 拷貝并合并圖像:
                     imagecopymerge();
              4). 將圖像輸出:【根據(jù)圖片格式不同,函數(shù)也相應(yīng)不同】
                     imagejpeg();
              5). 清除圖像資源(將源圖像資源和水印圖像資源都清除)
                     imagedestroy();

119.      什么是事務(wù)?什么是回滾?事務(wù)的作用是什么?
       事務(wù)就是組合起來的幾個獨(dú)立的sql操作。如果其中一項(xiàng)失敗,那么就讓這幾個組合起來的sql操作都回退到未執(zhí)行狀態(tài)。這就是事務(wù)的回滾。mysql中MyISAM存儲引擎的表不支持事務(wù),只有InnoDB 存儲引擎的表才支持事務(wù),為了讓事務(wù)正常執(zhí)行,就需要讓參與事務(wù)的所有數(shù)據(jù)表都設(shè)置成innoDB類型。事務(wù)被包裝在了 BEGIN 和 COMMIT 語句之間。在沒有使用 COMMIT 語句的情況下,對數(shù)據(jù)庫的操作不是永久的,一旦運(yùn)行了 ROLLBACK,就會被回退。只有執(zhí)行了COMMIT,數(shù)據(jù)表中的信息才被改動。事務(wù)的目的就是為了保證數(shù)據(jù)的完整性。

120.      模擬SESSION機(jī)制實(shí)現(xiàn)數(shù)據(jù)庫存放會話數(shù)據(jù)有什么作用?【備用】
      如果使用默認(rèn)的SESSION機(jī)制,大家都知道默認(rèn)的SESSION_ID是存放在COOKIE中,用戶的身份是靠SESSION_ID來識別的,而COOKIE文件是存放在用戶瀏覽器的客戶端,這樣就會帶來一個問題,當(dāng)用戶在辦公室選擇一些商品到購物車,在準(zhǔn)備下訂單付款的時候,用戶選擇了支付寶在線的支付方式,恰巧辦公室的電腦上面沒有安裝支付寶的數(shù)字證書,而在用戶家里的電腦安裝過數(shù)字證書,所以呢,用戶就需要回家去支付。但是回家登錄商城之后,發(fā)現(xiàn)購物車中精心挑選的商品都不存在了。這是為什么呢?問題就在家里電腦上的并沒有存放SESSION_ID的cookie文件,因而就無法正確的讀取服務(wù)器上對應(yīng)session文件中的數(shù)據(jù),所以無法將原來的選擇的商品息讀取過來。這樣的購物車功能給用戶的用戶體驗(yàn)式非常糟糕的,所以我們就需要采取模擬SESSION機(jī)制使用數(shù)據(jù)庫來存放會話數(shù)據(jù)。

121.       什么是無限極分類?
       要實(shí)現(xiàn)無限極分類,數(shù)據(jù)庫建表是關(guān)鍵。
       表結(jié)構(gòu)中至少需要三個字段,如果想避免遞歸循環(huán),那么需要四個字段。
       1. id ,當(dāng)前數(shù)據(jù)的唯一標(biāo)識;
       2. typename ,類型名稱;
       3. parentid , 當(dāng)前類型的上一層父類型的id;
       4. path , 其中存儲當(dāng)前類型的id和它所有父級類型的id。
       這些id之間采用“-”隔開。
       5. 當(dāng)通過以下sql語句就可以實(shí)現(xiàn),相同頂級類下的信息都在一起集中顯示。
       select * from 表名 where 條件 order by path;
無限極分類的原理是什么?
       要實(shí)現(xiàn)無限極分類,數(shù)據(jù)庫表結(jié)構(gòu)是關(guān)鍵。
       表結(jié)構(gòu)中至少需要三個字段,如果想避免遞歸循環(huán),那么需要四個字段。
       1. id ,當(dāng)前數(shù)據(jù)的唯一標(biāo)識;
       2. typename ,類型名稱;
       3. parentid , 當(dāng)前類型的上一層父類型的id;
       4. path , 其中存儲當(dāng)前類型的id和它所有父級類型的id。
       這些id之間采用“-”隔開。
       5. 當(dāng)通過以下sql語句就可以實(shí)現(xiàn),相同頂級類下的信息都在一起集中顯示。
       select * from 表名 where 條件 order by path;

122.    分頁原理是什么?
       數(shù)據(jù)分頁需要以下幾個條件:
       1. 參與分頁的總條數(shù) 【$msg_count】 ,該值通過數(shù)據(jù)庫查詢可以獲取到;
       2. 每頁顯示的條數(shù)【$pagesize】 ,這個數(shù)值由自己定義;
       3. 當(dāng)前頁的頁碼數(shù) 【$page】,該數(shù)值通過地址欄傳遞和接收;
       4. 可以通過以上資料計算出總頁數(shù) 【$pagecount】 ,此處需要借助ceil();
              【$pagecount = ceil($msg_count/$pagesize);】
       5. 數(shù)據(jù)庫查詢借助sql語句中的【limit】來實(shí)現(xiàn)數(shù)據(jù)的變化:
              例如:
              select * from 表名 where 條件 limit $startnum , $pagesize;
              而$startnum = ($page-1)*$pagesize;

123、   如何在smarty模板語言中使用php代碼?
       借助于兩個smarty內(nèi)建函數(shù)。
       1. inluce_php 函數(shù)用于在模板中包含 php 腳本。例如:
       {include_php file="test.php"}
       2. php 標(biāo)簽允許在模板中直接嵌入 php 腳本。例如:
       {php}
              echo "這個是php內(nèi)建函數(shù)的作用";
       {/php}

124、   請列出至少五個smarty中的變量調(diào)節(jié)符并說明功能?
       default  例如:{$arr|default:'xxxx'} ,默認(rèn)變量調(diào)節(jié)器,當(dāng)變量為空時顯示給定的默認(rèn)值
       truncate   例如:{$articleTitle|truncate:10} , 切割字符串長度為指定的長度;
       count_characters   例如:{$articleTitle|count_characters} ,獲取字符串長度;
       strip_tags   例如:  {$articleTitle|strip_tags} ,去除字符串中的所有html標(biāo)簽;
       date_format  例如:{$smarty.now|date_format(‘')} ,格式化時間戳。

125、   寫程序?qū)崿F(xiàn)如下功能:
      a.如何判斷一個字符串中是否存在一個字符?
       echo strstr('abcdefgcd'  , 'cd');
       echo strpos('ab0defgcd'  , 'cd');
      b.如何判斷一個字符串中一個字符出現(xiàn)的次數(shù)?
       echo substr_count('abcdefgcd'  , 'cd');
      c.如何去掉一個字符串的最后一個字符
       echo substr('abcdefgcd'  , 0 ,  -1);

126、     如何使用smarty的緩存、步驟?什么叫單模板多緩存?
       如果給整個網(wǎng)站開啟緩存,那么$smarty->caching=1,此時緩存的時間為smarty.class.php中默認(rèn)的時間,也就是3600秒。如果對每一個頁面獨(dú)立設(shè)置緩存,那么$smarty->caching=2 ,緩存時間就會跟display的參數(shù)模板頁相掛鉤,也就是可以實(shí)現(xiàn)對每個模板頁設(shè)置不同的緩存時間。
       用法例如:
       if(!$smarty->is_cached('index.html')) {
              //此處可以執(zhí)行數(shù)據(jù)庫操作
              $smarty->cache_lifetime = 3600*6;
       }
       $smarty->display('index.html');

       對于例如新聞單條這樣的頁面,新聞的模板都是一個,如果開啟緩存,那么所有的新聞單頁的緩存都是一個,根本不會隨著id的變化而變換內(nèi)容。所以為了區(qū)分不同的頁面緩存,需要使用單模板多緩存技術(shù)。具體做法是以id作為display的第二個參數(shù)來實(shí)現(xiàn)。此外對于具有分頁的列表頁,也必須在display中使用第二個參數(shù),可以使用新聞類型id和當(dāng)前頁面合并成第二個參數(shù)。

127、   寫一個遞歸函數(shù)完成以下功能:向函數(shù)中傳一個多維數(shù)組,對數(shù)組中所有的值做判斷
       ,如果值是'number'則設(shè)置該值為0?(提示:該題考的是遞歸的應(yīng)用,因?yàn)閭魅氲臄?shù)組不確定是多少維的,所以需要遞歸判斷)

       function recursive_array($arr) {
              if(is_array($arr)) {
                     foreach($arr as $key=>$value) {
                            if(is_array($value)) {
                                   $arr[$key] = recursive_array($value);
                            } else {
                                   if($value=='number') {
                                          $arr[$key] = '0';                                }
                            }}}
              return $arr;
       }    

 
128、   使用jquery寫一個全選的例子?
       //全選與取消全選
       function selectAll(flag) {
              for(var i=0; i<$("#fonds input").size(); i++) {
                     $("#fonds input").get(i).checked=flag;
              }}
       //判斷復(fù)選框已經(jīng)被勾選了多少個?
       function checkFonds() {
              var count=0;
              for(var i=0; i<$("#fonds input").size(); i++) {
                     if($("#fonds input").get(i).checked==true) {
                            count++;
                     }}
              alert(count);
       }
       //利用后代選擇器和get()來獲取指定的控件
       $(“div a”).get(2)

129、     請說明smarty中fetch方法的功能?
       Fetch方法可以獲取到頁面所有的內(nèi)容,并且賦值到一個變量中。
       如果第四個參數(shù)為true,則等同于display,直接輸出到瀏覽器中。
       如果第四個參數(shù)為false,則不輸出。
       Display方法就是第四個參數(shù)為true的fetch方法。
       Display = Fetch() + echo()

130、   寫出關(guān)于文件上傳的相關(guān)函數(shù)?           
       strrchr($filename , '.');      explode('.' , $filename);
       end($arr);                     strrpos($filename , '.');
       substr($filename , $pos+1);    pathinfo($filename , PATHINFO_EXTENSION);
       date(‘YmdHis')               time()      rand();
       mt_rand()                      move_uploaded_file()

131、   如何將SESSION存放在數(shù)據(jù)庫中,可以結(jié)合數(shù)據(jù)表設(shè)計說明.
       默認(rèn)情況下php.ini中session.save_handler = files,也就是session是以文件形 式存儲的。
       如果想更改為數(shù)據(jù)庫或其它存儲方式,那么需要更改設(shè)置,讓 session.save_handler = user。
       除了在php.ini中配置外,還可以在PHP頁面中單獨(dú)配置,用
       ini_set ('session.save_handler, 'user')來設(shè)置session的存儲方式,設(shè)置為用戶自定義存儲方式。
       設(shè)置好存儲方式后,需要使用session_set_save_handler()函數(shù)。
       該函數(shù)是設(shè)置用戶級別的session保存過程的函數(shù)。該函數(shù)有6個參數(shù),這6個參數(shù)其實(shí)是6個自定義函數(shù)的名稱,分別代表對session的開啟,關(guān)閉,讀,寫 ,銷毀,gc(垃圾回收)。
       示例代碼如下:
       function open () { }
       function close() { }
       function read () { }
       function write () {}
       function destroy () {}
       function gc () {}
       session_set_save_handler ("open", "close", "read", "write", "destroy",  "gc");
       session_start();
       現(xiàn)在你就可以象往常一樣地使用session了。
       數(shù)據(jù)庫結(jié)構(gòu)如下:
       Session_id , session_value ,expire_time , 分別存儲sessionid的id和值以及失效時間。

132、    常用的正則表達(dá)式寫法:
       中文:/^[\u4E00-\u9FA5]+$/
       手機(jī)號碼:/^(86)?0?1\d{10}$/
       EMAIL:
       /^[\w-]+[\w-.]?@[\w-]+\.{1}[A-Za-z]{2,5}$/
       密碼(安全級別中):
       /^(\d+[A-Za-z]\w*|[A-Za-z]+\d\w*)$/
       密碼(安全級別高):
       /^(\d+[a-zA-Z~!@#$%^&(){}][\w~!@#$%^&(){}]*|[a-zA-Z~!@#$%^&(){}]+\d[\w~!@#$%^&(){}]*)$/
——————————————————————————
                    PHP初   
——————————————————————————
order順序
var(variables)變量
model典型 樣式 模型
module模數(shù);模塊;組件
enctype
SEO搜索引擎優(yōu)化(Search Engine Optimization)
Search搜索
Engine 引擎
Optimization最佳化,最優(yōu)化
mod_rewrite模塊重寫
CMS 內(nèi)容管理系統(tǒng)(content manage system)
electronic commerce(電子商務(wù))
gc(garbage collection)垃圾回收

---------------Apache與WAMP安裝---------------
1.wamp安裝
apache (2.2版本) mysql(5.067版本)  php(5.2版本)

LAMP  Linux下的安裝
負(fù)責(zé)版本控制 SVN
一臺機(jī)器能安裝多個apache服務(wù) 但是只能安裝一個MySQL服務(wù)
-------------PHP上-------------
PHP: personal home page  個人家庭主頁  94年產(chǎn)生的 5.2.6版本
ASP: active  server page   93
JSP: java server page

類里面定義常量叫類常量 用const定義
類常量必須有初始值
define('','','false/true')里有三個參數(shù),默認(rèn)為false時區(qū)分大小寫,反之不區(qū)分大小寫
在類里面叫做方法  在類外叫做函數(shù)
常量默認(rèn)為大小寫敏感。
::作用域操作符

標(biāo)量和非標(biāo)量類型的區(qū)別:標(biāo)量只能存一個數(shù)據(jù),非標(biāo)量能存多個數(shù)據(jù)
(屬性  變量名  類常量)區(qū)分大小寫
(變量  類名  系統(tǒng)自帶函數(shù)  自定義函數(shù))不區(qū)分大小寫
 當(dāng)$_POST['user_name']等沒加‘'是會先當(dāng)作常量來編譯
3.函數(shù)
可變函數(shù):函數(shù)的名字是一個變量
可選參數(shù):參數(shù)有默認(rèn)值
遞歸(recursive)函數(shù)體內(nèi)有一個循環(huán)體,自己調(diào)用自己,但他跟死循環(huán)有區(qū)別,死循環(huán)是沒有盡頭的,     他是無限循環(huán),遞歸有盡頭,他最終會獲得一個值
function pager( $page $msg_count $pagesize $url="?"){
}----》$url="?"即為可選參數(shù)

  數(shù)組的合并 array_merge()
             $arr1+$arr2
兩數(shù)組相加: 只要是具有相同的下標(biāo),則只保留首次出現(xiàn)的元素,后者舍去
array_merge:索引數(shù)組會將后者的元素附加到前者后面;若是關(guān)聯(lián)數(shù)組,相同下標(biāo),后者覆蓋前者
   explode() 取數(shù)組最后一個元素
8.文件的操作
   mkdir新建目錄
   rmdir刪除目錄
   skandir輸出指定路徑下的文件或目錄
   fopen(資源)— 打開文件或者 URL
   fclose— 關(guān)閉一個已打開的文件
   fgets — 一次讀取一行
   fgetc — 一次只讀取一個字符
   fgetss — 一次讀取一行并過濾掉 HTML 標(biāo)記
   file_get_contents — 將整個文件讀入一個字符串
   fread-讀取文件
   file_put_contents— 將一個字符串寫入文件
   fwrite-寫入文件
   unlink-刪除文件
   pathinfo — 返回文件路徑的信息
array_push — 將一個或多個單元壓入數(shù)組的末尾(入棧)
array_unshift — 在數(shù)組開頭插入一個或多個單元
9.其它函數(shù)
   輸出控制函數(shù):ob(output buffer) ob_flush
   加密函數(shù) md5
   數(shù)學(xué)類函數(shù):abs絕對值,rand隨機(jī)數(shù),ceil取整,floor,mt_rand生成更好的隨機(jī)數(shù)
   轉(zhuǎn)換函數(shù):explode 使用一個字符串分割另一個字符串,implode
   時間函數(shù):date(),strtotime (將字符串轉(zhuǎn)換為時間戳)
   處理地址欄: url_encode url_decode
10.亂碼問題
   ASCII(American Standard Code for Information Interchange)81年產(chǎn)生
   ANSI 美國國家標(biāo)準(zhǔn)學(xué)會( American National Standards Institute)
   utf-8(-8代表一次傳輸8個字符)可變字節(jié)編碼(中文3個字節(jié))(utf:Unicode轉(zhuǎn)換格式(UCS Transformation Format) 
   utf-16(-16代表一次傳輸16個字符)
   GBK. 國家標(biāo)準(zhǔn)擴(kuò)展碼(Guo-Biao Kuozhan)90年產(chǎn)生(雙字節(jié)編碼)
   GB2312 因?yàn)閲H排行2312位(81年產(chǎn)生)
   BIG5
   unicode (國際編碼)可變字節(jié)編碼
   Latin_1
   utf-8+ bom
   ISO:國際標(biāo)準(zhǔn)化組織(International Standardization Organization)

11.數(shù)據(jù)庫操作
   數(shù)據(jù)庫優(yōu)化:char(查詢速度快)
              varchar
       引擎:myisam(mysql indexed sequential access method)索引順序訪問方法
       支持事務(wù)的引擎:BDB ,innodb
       innodb:是以inno開頭的一家公司的商標(biāo)
  表類型就是表的存儲引擎  
 dll:動態(tài)數(shù)據(jù)連接庫  封裝的類庫

修飾符:public,var,protected,private,static,final,abstract
訪問權(quán)限修飾符:public,private,protected
       public:類成員訪問沒有限制,多有外部成員都可以訪問
       protected:受保護(hù)的,不能被類外部成員訪問,該類的直接子類可以訪問,可以實(shí)現(xiàn)對成員屬性的讀、寫操作
       private:私有的,只能類里邊的成員自己訪問,類外部的成員都不能訪問
       一個屬性被修飾為私有的(private),那么這個屬性在類的外部是不可以讀取和修改的,現(xiàn)在有一種方法 可以設(shè)置該屬性既是私有的,還可以被類的外部成員讀取即__get()和__set()

 修飾class的修飾符:final,abstract(抽象)
final被它修飾的類是不能被繼承的
定義屬性必須要加修飾符:可以是public和var
定義方法時可以有修飾符public,可以不寫,默認(rèn)為public

如果父類中的方法被聲明為final,則子類無法覆蓋該方法; 如果一個類被聲明為final,則不能被繼承。
final只能出現(xiàn)在class類和方法中

方法前可以有public,private,protected,static,final,abstract修飾。
    繼承性:耦合性越低越好
 const修飾,一定要有初始值 ( smarty的保留變量:{$smarty.now},{$smarty.const},{$smarty.post},{$smarty.get},{$smarty.cookies},{$smarty.config},{$smarty.session},){$smarty.capture}
 調(diào)用屬性時,如果前有$后邊就不能有,后有前不能有,如:$this->abc
                                              self::$abc
當(dāng)用parent調(diào)用父類方法時,將方法自動轉(zhuǎn)化為靜態(tài)的
  多態(tài)性:由繼承  重寫(覆蓋)(重新寫一遍)(override重寫)造成的
            php不支持重載(重復(fù)載入),php為弱變量語言(overload重載)

抽象:一個類包含抽象方法就是抽象類,抽象類中不一定有抽象方法
抽象類的定義abstract
接口里可以有抽象類,還可以有類常量,通過interface來定義一個接口,
實(shí)現(xiàn)多個接口時,接口中的方法不能有重名。
接口中定義的所有方法都必須是public,這是接口的特性。
接口里的方法必須被重寫
靜態(tài):static 不能與構(gòu)造方法共存,static不能new對象,構(gòu)造方法可以new對象,方法體中不能用$this

在php5以前的版本中,當(dāng)普通構(gòu)造方法和__construct(魔術(shù)方法)共存在時,它會調(diào)用普通構(gòu)造方法,它對__construct(魔術(shù)方法)是不識別的,在php5以后的版本中,當(dāng)共存時他會先調(diào)用__construct(魔術(shù)方法)。析構(gòu)方法是最后被執(zhí)行的,被自動調(diào)用的方法
單例(單態(tài))singleton
——————————————————————————
                    PHP中   
——————————————————————————
2.jQuery
  包括javascript框架和prototype.js框架
選擇器:
  1.基本選擇器:
    ①、$('#result')=jQuery('#result')=document.getElementById('result')
                           <div id='result'>
                        <div class='result'>
   ②、class選擇器 $('.result')
   ③、元素選擇器$('div')
  2.子代選擇器:$('#myform < input')
  3.后代選擇器:$('#myform  input')
  4.組合選擇器:$('#myform < span < input')
3.Ajax
 ajax的用處是用來異步j(luò)s和xml 不僅可以獲取xml數(shù)據(jù),還可獲得hmtl和json數(shù)據(jù)
   ajax的優(yōu)點(diǎn):1.提升用戶的體驗(yàn)2.占用帶寬小3.減小服務(wù)器的負(fù)載
   ajax就是把B頁面的內(nèi)容,顯示到A頁面的指定位置,實(shí)現(xiàn)異步傳輸
   $.ajax() 返回其創(chuàng)建的 XMLHttpRequest 對象。
   $.ajax({
    url:,  data:,  type:,  datatype:,  success:function(這個參數(shù)里,存在被傳回的頁面的所有內(nèi)容){}   });
  $.post('請求地址','傳遞參數(shù)','回調(diào)函數(shù)');
  $.get('請求地址','傳遞參數(shù)','回調(diào)函數(shù)');
post傳值文件沒有大小限制,保密性好,必須有form表單
get傳值安全性不高,有大小限制
當(dāng)?shù)刂窓诶镉兄形臅r,用urlencode(編碼 URL 字符串)
urlencode — 編碼 URL 字符串
urldecode(解碼已編碼的 URL 字符串)

4.會話控制

      session:unset()和array() 是連同內(nèi)存和session文件內(nèi)容一起刪除,而session_destroy只是將文件刪除
   cookie沒有生命周期的叫會話cookie,隨著瀏覽器的關(guān)閉,cookie消失
   cookie有兩種存在方式,一種是以文件形式存在,另一種是保存在內(nèi)存里
   cookie里面只能存字符串
  會話控制主要是為了跨頁面?zhèn)髦?BR>序列化是把其他的類型轉(zhuǎn)換成字符串類型
5.smarty
代碼重用(include,require,include_once,require_once)
include require 比 require_once include_once 性能高
 加載類文件用 require_once(最好) include_once

6.PDO
   dsn(data source name)
   //數(shù)據(jù)源
   $dsn = 'mysql:host=127.0.0.1;dbname=java1008a';
die('到此結(jié)束'); 等同于 echo '到此結(jié)束';die;

----------------------------------------------------------------------------------

2.b/s與c/s簡單比較,區(qū)別:
--a、運(yùn)行環(huán)境不同(廣域網(wǎng)、局域網(wǎng))
--b、安全級別不同(低/高)
--c、用戶群不同(全部用戶/局部用戶)
--d、系統(tǒng)升級不同(無縫升級/整體升級)
--e、用戶開啟不同(瀏覽器/特制軟件)
--f、軟件界面特點(diǎn)不同(信息流/用戶體驗(yàn))
  比如:b/s就是網(wǎng)上的微博、博客;c/s就是在網(wǎng)吧打的網(wǎng)絡(luò)游戲(奇跡、傳奇等)
3.php是什么:運(yùn)行在服務(wù)器端的腳本語言
--Hypertext Preprocessor
--personal home page
4.php語言能做什么
--圖形化用戶界面程序
--服務(wù)器端運(yùn)行腳本程序

3.php外部變量$_POST[]、$_GET[];

  特殊運(yùn)算符
  '.'是連接符
  ".="是連接賦值
  "@"屏蔽錯誤信息  $link=@mySQl_connect(主機(jī),用戶名,密碼)
5.流程控制(順序、選擇、循環(huán))
******************************************************************************
******************************************************************************
第三單元【字符串】
1.字符串的三種定義方式(單引號、雙引號、定界符)
---單引號定義(轉(zhuǎn)義\'和\\)
---雙引號定義(轉(zhuǎn)義\n \r \t \$ \\ \")
---定界符方法<<<eof

2.函數(shù)部分
explode/implode
substr()**
str_replace/trim/ltrim/rtrim

strstr(str, search)獲得指定字符串最開始出現(xiàn)到最后的內(nèi)容
strrchr(str, search)獲得指定字符串最后出現(xiàn)到最后的內(nèi)容
strpos(str,  search)獲得指定字符串最開始出現(xiàn)的位置
strrpos(str, search)獲得指定字符串最后出現(xiàn)的位置
ucfirst(str)將字符串第一個字母大寫
ucwords(str)將字符串的每個單詞的第一個字母大寫
strlen(str)獲得字符串長度
strcmp(str1, str2)比較兩個字符串大小,
                返回負(fù)數(shù)表示 str1 小于 str2;
                返回正數(shù)表示 str1 大于 str2;
                返回零表示二字符串相同

urlencode(str)替換所有非字母數(shù)字的字符,變?yōu)?后面跟兩位16進(jìn)制數(shù),空格變?yōu)?號
urldecode(str)對已%##編碼的URL進(jìn)行解析還原
parse_url(str)解析完整的url轉(zhuǎn)變?yōu)闉閿?shù)組
parse_str(str,out)解析請求字符串轉(zhuǎn)變?yōu)閿?shù)組
htmlspecialchars()轉(zhuǎn)換html代碼為實(shí)體代碼
printf/sprintf %b %d %c %x %s %f %X
–    b           整數(shù)轉(zhuǎn)成二進(jìn)位。
–    c            整數(shù)轉(zhuǎn)成對應(yīng)的 ASCII 字符。
–    d           整數(shù)轉(zhuǎn)成十進(jìn)位。
–    f            單倍精確度數(shù)字轉(zhuǎn)成浮點(diǎn)數(shù)。
–    o           整數(shù)轉(zhuǎn)成八進(jìn)位。
–    s            轉(zhuǎn)成字符串。
–    x            整數(shù)轉(zhuǎn)成小寫十六進(jìn)位。
–    X           整數(shù)轉(zhuǎn)成大寫十六進(jìn)位。

1.數(shù)組和棧的操作
  array_push(目標(biāo)數(shù)組,字符串)將字符串壓入數(shù)組的最后
  array_pop(目標(biāo)數(shù)組)將數(shù)組最后的元素彈出并返回
2.數(shù)組和隊(duì)列的操作
  array_unshift(目標(biāo)數(shù)組,字符串)將字符串放到數(shù)組的開始位置
  array_shift(目標(biāo)數(shù)組)刪除數(shù)組的第一個元素并返回
3.數(shù)組和指針的操作key() current() next() prev() reset() end()
4.預(yù)定義數(shù)組($_GET $_POST $_FILES $_COOKIE $_SESSION)
******************************************************************************
******************************************************************************
第六單元【其他常用函數(shù)】
date(format,[timestamp])//格式化時間信息,并返回
time()//返回當(dāng)前時間戳信息

mktime(hour,minute,second,month,day,year)
mktime(小時,分鐘,秒,月,天,年)//取得一個日期的 Unix 時間戳

max()//取得最大值
-echo max(1, 3, 5, 6, 7);  // 7
-echo max(array(2, 4, 5)); // 5
-echo max(0, '1hello');     // 1hello
-echo max('hello', 0);     // hello
-echo max(-1, 'hello');    // hello
-echo max(array(2, 4, 8), array(2, 5, 7)); // array(2, 5, 7)
-echo max('string', array(2, 5, 7), 42);   // array(2, 5, 7)數(shù)組和非數(shù)組比較數(shù)組總認(rèn)為最大

mt_rand(65,94)//獲得隨機(jī)數(shù)
round()//四舍五入取整
flush()//輸出準(zhǔn)備區(qū)內(nèi)容
urlencode('張三')//返回字符串中,除了-_.之外的所有非字母數(shù)字部分為%后接兩位
16進(jìn)制數(shù),空格轉(zhuǎn)化為+
urldecode()//對已經(jīng)編碼的部分反編碼
var_dump()//輸出變量的詳細(xì)信息(八種數(shù)據(jù)類型數(shù)據(jù)都可以輸出)

chr(mt_rand(65,94))隨機(jī)獲得字母
ord(chr(mt_rand(65,94)))將字母轉(zhuǎn)化為數(shù)字
basename(路徑名)獲得路徑中文件名部分
strtolower轉(zhuǎn)換小寫

第七單元【php連接mysql】
*mysql_connect(主機(jī),用戶名,密碼) 打開一個到 MySQL 服務(wù)器的連接
*mysql_select_db(數(shù)據(jù)庫,連接數(shù)據(jù)庫資源) 選擇 MySQL 數(shù)據(jù)庫
*mysql_query("set names utf8");設(shè)定字符集        
*mysql_close() 關(guān)閉 MySQL 鏈接
*mysql_query(語句) 發(fā)送并執(zhí)行一條sql語句
mysql_fetch_row(結(jié)果資源)從結(jié)果集中取得一行結(jié)果(索引數(shù)組)
mysql_fetch_assoc(結(jié)果資源)從結(jié)果集中取得一行結(jié)果(關(guān)聯(lián)數(shù)組)
*mysql_fetch_array(結(jié)果資源)從結(jié)果集中取得一行結(jié)果(索引/關(guān)聯(lián)數(shù)組)
mysql_fetch_object(結(jié)果資源)從結(jié)果集中取得一行結(jié)果(對象數(shù)組)

mysql_errno()返回錯誤號碼
*mysql_error()返回錯誤信息
*mysql_num_rows(結(jié)果資源)用于計算查詢結(jié)果中所得行的數(shù)目
*mysql_affected_rows()獲得受影響的結(jié)果數(shù)目
*mysql_insert_id()傳回最后一次使用 INSERT 指令產(chǎn)生的自動增長 ID 值

mysql_result(結(jié)果集,索引行,字段)指定獲取結(jié)果
mysql_free_result(結(jié)果資源)釋放結(jié)果集
mysql_num_fields(結(jié)果資源)用于計算查詢結(jié)果中所得列的數(shù)目
mysql_fetch_field(結(jié)果資源)從結(jié)果集中取得列的結(jié)果,以對象形式返回
mysql_pconnect()永久連接數(shù)據(jù)庫

1.留言板建立數(shù)據(jù)庫bbs,建立兩張表leave_word和back_word(留言表和回復(fù)表)
  leave_word:
  字段       數(shù)據(jù)類型
  id        int         主鍵、自增
  title     varchar(20) 標(biāo)題
  content   text        內(nèi)容
  itime     datetime    添加時間

  back_word:
  id        int         主鍵、自增
  leave_id  int         外鍵(留言id)
  content   text        內(nèi)容
  btime     datetime    回復(fù)時間
4.刪除留言,對無效、無用的留言實(shí)現(xiàn)刪除功能(這時需要用get方式傳遞被刪除留言id值)
5.修改留言,對需要修改(get方式傳遞被刪除留言id值,再利用隱藏域方式傳遞給接收頁面)
6.留言詳細(xì)顯示功能,有的留言內(nèi)容比較多,在明細(xì)頁面不可能全部顯示出來(這時利用get方式傳遞留言id)
7.在詳細(xì)頁面可以實(shí)現(xiàn)回復(fù)功能和回復(fù)留言展示,步驟:制作一個回復(fù)表單和接收數(shù)據(jù)頁面

     3.構(gòu)造方法和析構(gòu)方法
       構(gòu)造函數(shù):實(shí)例化對象首先第一個需要做的事情就是構(gòu)造函數(shù)。一個小孩出生到5歲之前,所有的事情都是父母幫助做的,包括起名字、穿衣服、吃飯等等。
       析構(gòu)函數(shù):一個對象被使用完后需要做一些善后工作,這些善后工作是不需要人為干預(yù)的,例如資源釋放、變量刪除等。例如:一個小狗死后,主人非常愛惜它,就把它埋在了家后園的一顆樹下。小狗被埋這件事情是主人做的,不是狗做的。這就是析構(gòu)函數(shù)。

     3.類的重寫
       子類和父類之間的事情,就是說父類有的方法,子類不但可以直接使用,還可以在子類中
       重新定義具體內(nèi)容,例如有一個父親會駕駛汽車,那么他的兒子也會駕駛汽車,但他的兒子
       可以不駕駛汽車,而駕駛飛機(jī),這就是類方法的重寫。

D    1.final(最后的)關(guān)鍵字使用
       該關(guān)鍵字修飾的類不能被繼承
       該關(guān)鍵字修飾的方法不能被重寫
     2.static(靜態(tài))關(guān)鍵字使用(類的內(nèi)部、外部、子類)
       實(shí)例化對象在內(nèi)存中的分配有講到大的數(shù)據(jù)在內(nèi)存被分配到堆空間里邊?,F(xiàn)在有一個例子:有一個
       "學(xué)生"這個類,里邊有一個成員屬性是"國家",標(biāo)識該對象是屬于哪個國家的,比如美國、英國、德國等 ,這個類在實(shí)例化對象時候,每個對象在內(nèi)存中都會分配一個空間用于存放國家這個成員屬性,如果
     有100個對象,那么在內(nèi)容中會分配100個相應(yīng)的空間。如果這個類的使用對象是在"中國"境內(nèi),那么
     每個對象的國家屬性就會是一樣的,即"中國",相應(yīng)的在內(nèi)存中會有100個空間存放100個相同的內(nèi)容
     這會造成空間浪費(fèi),其實(shí)到這里我們可以知道100個相同的內(nèi)容用一個空間存放就可以,反正都是一樣的,
       這就產(chǎn)生了靜態(tài)化概念"static"。
       用static修飾的成員屬性,該屬性就不是對象的,而是類的。
     3.self和parent關(guān)鍵字使用
       在類的內(nèi)部訪問類中的成員(屬性和方法),可以用"$this",該關(guān)鍵字泛指對象,這是訪問一般的類
       成員,如果訪問的成員是用static關(guān)鍵字修飾的,就不能用"$this"了,因?yàn)橛胹tatic修飾的類
       成員是被類本身擁有,不屬于任何對象了,這時候需要用"self"關(guān)鍵字修飾 self::成員
       在類的外部訪問類本身擁有的成員可以這樣  類名::成員屬性。
       在子類中訪問父類擁有的成員可以用parent關(guān)鍵字  parent::成員屬性
     4.const(常量)關(guān)鍵字使用
       在php中可以定義常量,類外部用define定義,類內(nèi)部用const定義。
       常量的擁有者是類本身,類內(nèi)部訪問常量用 self::常量
                      類外部訪問常量用 類名::常量
                    子類訪問常量    parent::常量
     6.魔術(shù)方法clone、__call、__autoload使用
     clone:在一個項(xiàng)目里邊我們有時候需要兩個或多個完全一樣的初始化對象,這時候可以使用clone技術(shù)
     不用clone技術(shù)也可以,不過每個新的對象都需要初始化屬性值,這樣比較繁瑣,也容易出錯,
使用clone就比較簡單,克隆出來的多個對象彼此是獨(dú)立的,互不相干。
           $p2 = clone $p1;
   __call:在類的使用過程中,如果一個對象調(diào)用的方法不在類里邊,那么這時候程序要報錯,然后程序退
          出不能繼續(xù)運(yùn)行。這樣做用戶體驗(yàn)非常不好,如果有一種方法可以使得程序報錯完后可以繼續(xù)運(yùn)
行,這樣的程序給人更智能、用戶體驗(yàn)更好的感覺,這時候就可以用__call
             public function __call($method_name,$args){
              echo "你訪問的方法:";
              echo $method_name;
              echo "參數(shù):";
              print_r($args);
              echo "不存在";
             }
       __autoload:開發(fā)一個軟件系統(tǒng),往往里邊會有很多類,在初始化類對象之前需要先include這個對
                象對應(yīng)的類文件。所有的類不能都放到一個文件(文件臃腫,不易維護(hù)),這樣就會在程
              序開始處有很多的include列表,這樣做非常繁瑣,出現(xiàn)一個新的類就需要被include,
              有沒有一種方法可以使得被include的類文件在實(shí)例化對象時候才引入,否則不動作,
              答案是有的,這時候可以用魔術(shù)方法__autoload
                function __autoload($className){
                     include($className.'.php');
                }
     8.子類繼承父類時候成員修飾符限制,子類的修飾級別大于父類。例如父類的修飾符是protected,
       則子類修飾級別是protected或public。父類是public的,子類也必須是public的

    1.抽象類
       在類里邊定義的沒有方法體的方法就是抽象方法,有抽象方法的類被稱為抽象類。抽象類不能實(shí)例化對象。
       所謂沒有方法體就是方法在聲明時候沒有花括號和里邊的內(nèi)容。
       作用之處:
         例如:我有一個類"動物",里邊有方法"吃食"(還可以有許多其他的方法)
        動物這個類可以有許多子類例如:狗、魚、鳥等,這些子類有一個共性就是都有吃食這個方法
        一般的解決方法是:定義3個類,里邊都有吃食方法。這樣實(shí)現(xiàn)沒有問題的,但是如果其中一個
        類沒有吃食方法,這時候程序是不給報錯的。我們現(xiàn)在要做的就是3個類中任何一個沒有吃食方法
          系統(tǒng)就要報錯。這時候就需要用到抽象類了。
       抽象類按照字面意思理解就是對3個類的進(jìn)一步抽象。抽象出來吃食方法。
       抽象類技術(shù)特性:
       a、抽象類不能實(shí)例化
       b、類的成員方法是抽象的,則這個類也是抽象的
       c、抽象方法體內(nèi)沒有實(shí)現(xiàn)細(xì)節(jié),具體實(shí)現(xiàn)留給子類實(shí)現(xiàn)
       d、繼承抽象類的子類必須實(shí)現(xiàn)父類的抽象類,除非自己也是抽象類。

     2.接口(插座實(shí)例)
       當(dāng)一個抽象類里邊的全部方法都是抽象方法時候,這個抽象類就是"接口"。
       接口技術(shù)特性:
       a、interface聲明
       b、全部接口方法是public的,因此可以省略
       c、接口只定義方法,沒有具體方法實(shí)現(xiàn)
       d、實(shí)現(xiàn)類用implements實(shí)現(xiàn)接口,全部接口方法都要實(shí)現(xiàn)
       e、接口可以多實(shí)現(xiàn),中間用逗號分開
       f、接口是對抽象類的抽象,抽象類是對類的抽象,類是對事物的抽象。
       g、接口不能實(shí)例化
       (1)、抽象類和接口有什么不同
        抽象類只能單繼承,接口可以多實(shí)現(xiàn)
        抽象類里面可以有抽象方法和普通方法,而接口里只有抽象方法
        抽象類里面可以有自己的屬性,而接口里面只能有常量
        接口里面的方法必須是public的,而抽象類不同
       (2)、抽象類和接口的相似之處
        抽象類里面的抽象方法在繼承的時候必須都要重寫,接口里面的方法也必須都要實(shí)現(xiàn)。
        抽象類和接口都不能直接實(shí)例化,
       抽象類需要繼承(extends),接口需要實(shí)現(xiàn)(implements)。
        抽象類和接口都體現(xiàn)了多態(tài)的特性。

3.jquery
       jquery是js的封裝包,里邊有很多集成的函數(shù)可以讓我們使用,jquery的宗旨就是寫更少的代碼實(shí)現(xiàn)更多的功能
       使用的方法:
       1.引進(jìn)jquery包
              <script type="text/javascript" src='jquery-1.4.2.js'><script>
       2.測試jquery是否加載成功
              $(function(){
                     alert("jquey加載成功");
              })
       3.獲取頁面的元素
              $('#div');通過id獲取頁面元素 
              $('.div');通過class獲取頁面元素
       jquery中的事件
       1.$('#mydiv').click(function(){});鼠標(biāo)點(diǎn)擊事件【要寫在onload事件里邊】
       2.$('#mydiv').hover(function(){},function(){});鼠標(biāo)移動到對象事件
       3.$('#mydiv').attr();獲得對象屬性信息
       4.$('#mydiv').attr('checked');查看單復(fù)選框的選定情況!
       5.$('#mydiv').css();獲得對象的屬性信息
       6.$('#mydiv').css(樣式,值);給對象賦予樣式
       7.$('#mydiv').addClass('trb');給元素class屬性賦值trb;
       8.$('#mydiv').removeClass('trb');使元素失去class屬性;
       9.$('#mydiv').submit(function(){});提交事件;
       10.$('#mydiv').keyup(function(){});鍵盤敲擊事件;    
       在項(xiàng)目中的使用:表單的驗(yàn)證

相關(guān)文章

最新評論