中級(jí) PHP 知識(shí)點(diǎn)匯總
——————————————————————————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頁(yè)面的內(nèi)容,顯示到A頁(yè)面的指定位置,實(shí)現(xiàn)異步傳輸 $.ajax() 返回其創(chuàng)建的 XMLHttpRequest 對(duì)象。 $.ajax({ url:, data:, type:, datatype:, success:function(這個(gè)參數(shù)里,存在被傳回的頁(yè)面的所有內(nèi)容){} }); $.post(’請(qǐng)求地址’,’傳遞參數(shù)’,’回調(diào)函數(shù)’); $.get(’請(qǐng)求地址’,’傳遞參數(shù)’,’回調(diào)函數(shù)’);post傳值文件沒有大小限制,保密性好,必須有form表單get傳值安全性不高,有大小限制當(dāng)?shù)刂窓诶镉兄形臅r(shí),用urlencode(編碼 URL 字符串)urlencode — 編碼 URL 字符串urldecode(解碼已編碼的 URL 字符串)4.會(huì)話控制 session:unset()和array() 是連同內(nèi)存和session文件內(nèi)容一起刪除,而session_destroy只是將文件刪除 cookie沒有生命周期的叫會(huì)話cookie,隨著瀏覽器的關(guān)閉,cookie消失 cookie有兩種存在方式,一種是以文件形式存在,另一種是保存在內(nèi)存里 cookie里面只能存字符串 會(huì)話控制主要是為了跨頁(yè)面?zhèn)髦敌蛄谢前哑渌念愋娃D(zhuǎn)換成字符串類型5.smarty代碼重用(include,require,include_once,require_once)include require 比 require_once include_once 性能高 加載類文件用 require_once(最好) include_once6.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簡(jiǎn)單比較,區(qū)別:--a、運(yùn)行環(huán)境不同(廣域網(wǎng)、局域網(wǎng))--b、安全級(jí)別不同(低/高)--c、用戶群不同(全部用戶/局部用戶)--d、系統(tǒng)升級(jí)不同(無縫升級(jí)/整體升級(jí))--e、用戶開啟不同(瀏覽器/特制軟件)--f、軟件界面特點(diǎn)不同(信息流/用戶體驗(yàn)) 比如:b/s就是網(wǎng)上的微博、博客;c/s就是在網(wǎng)吧打的網(wǎng)絡(luò)游戲(奇跡、傳奇等)3.php是什么:運(yùn)行在服務(wù)器端的腳本語(yǔ)言--Hypertext Preprocessor--personal home page4.php語(yǔ)言能做什么--圖形化用戶界面程序--服務(wù)器端運(yùn)行腳本程序3.php外部變量$_POST[]、$_GET[]; 特殊運(yùn)算符 ’.’是連接符 '.='是連接賦值 '@'屏蔽錯(cuò)誤信息 $link=@mySQl_connect(主機(jī),用戶名,密碼)5.流程控制(順序、選擇、循環(huán))************************************************************************************************************************************************************第三單元【字符串】1.字符串的三種定義方式(單引號(hào)、雙引號(hào)、定界符)---單引號(hào)定義(轉(zhuǎn)義’和)---雙引號(hào)定義(轉(zhuǎn)義n r t $ ')---定界符方法<<<eof2.函數(shù)部分explode/implodesubstr()**str_replace/trim/ltrim/rtrimstrstr(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)將字符串第一個(gè)字母大寫ucwords(str)將字符串的每個(gè)單詞的第一個(gè)字母大寫strlen(str)獲得字符串長(zhǎng)度strcmp(str1, str2)比較兩個(gè)字符串大小, 返回負(fù)數(shù)表示 str1 小于 str2; 返回正數(shù)表示 str1 大于 str2; 返回零表示二字符串相同urlencode(str)替換所有非字母數(shù)字的字符,變?yōu)?后面跟兩位16進(jìn)制數(shù),空格變?yōu)?號(hào)urldecode(str)對(duì)已%##編碼的URL進(jìn)行解析還原parse_url(str)解析完整的url轉(zhuǎn)變?yōu)闉閿?shù)組parse_str(str,out)解析請(qǐng)求字符串轉(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)成對(duì)應(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ù)組的第一個(gè)元素并返回3.數(shù)組和指針的操作key() current() next() prev() reset() end()4.預(yù)定義數(shù)組($_GET $_POST $_FILES $_COOKIE $_SESSION)************************************************************************************************************************************************************第六單元【其他常用函數(shù)】date(format,[timestamp])//格式化時(shí)間信息,并返回time()//返回當(dāng)前時(shí)間戳信息mktime(hour,minute,second,month,day,year)mktime(小時(shí),分鐘,秒,月,天,年)//取得一個(gè)日期的 Unix 時(shí)間戳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()//對(duì)已經(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ī),用戶名,密碼) 打開一個(gè)到 MySQL 服務(wù)器的連接*mysql_select_db(數(shù)據(jù)庫(kù),連接數(shù)據(jù)庫(kù)資源) 選擇 MySQL 數(shù)據(jù)庫(kù)*mysql_query('set names utf8');設(shè)定字符集 *mysql_close() 關(guān)閉 MySQL 鏈接*mysql_query(語(yǔ)句) 發(fā)送并執(zhí)行一條sql語(yǔ)句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é)果(對(duì)象數(shù)組)mysql_errno()返回錯(cuò)誤號(hào)碼*mysql_error()返回錯(cuò)誤信息*mysql_num_rows(結(jié)果資源)用于計(jì)算查詢結(jié)果中所得行的數(shù)目*mysql_affected_rows()獲得受影響的結(jié)果數(shù)目*mysql_insert_id()傳回最后一次使用 INSERT 指令產(chǎn)生的自動(dòng)增長(zhǎng) ID 值mysql_result(結(jié)果集,索引行,字段)指定獲取結(jié)果mysql_free_result(結(jié)果資源)釋放結(jié)果集mysql_num_fields(結(jié)果資源)用于計(jì)算查詢結(jié)果中所得列的數(shù)目mysql_fetch_field(結(jié)果資源)從結(jié)果集中取得列的結(jié)果,以對(duì)象形式返回mysql_pconnect()永久連接數(shù)據(jù)庫(kù)1.留言板建立數(shù)據(jù)庫(kù)bbs,建立兩張表leave_word和back_word(留言表和回復(fù)表) leave_word: 字段 數(shù)據(jù)類型 idint 主鍵、自增 title varchar(20) 標(biāo)題 content text內(nèi)容 itime datetime 添加時(shí)間 back_word: idint 主鍵、自增 leave_id int 外鍵(留言id) content text內(nèi)容 btime datetime 回復(fù)時(shí)間4.刪除留言,對(duì)無效、無用的留言實(shí)現(xiàn)刪除功能(這時(shí)需要用get方式傳遞被刪除留言id值)5.修改留言,對(duì)需要修改(get方式傳遞被刪除留言id值,再利用隱藏域方式傳遞給接收頁(yè)面)6.留言詳細(xì)顯示功能,有的留言內(nèi)容比較多,在明細(xì)頁(yè)面不可能全部顯示出來(這時(shí)利用get方式傳遞留言id)7.在詳細(xì)頁(yè)面可以實(shí)現(xiàn)回復(fù)功能和回復(fù)留言展示,步驟:制作一個(gè)回復(fù)表單和接收數(shù)據(jù)頁(yè)面 3.構(gòu)造方法和析構(gòu)方法 構(gòu)造函數(shù):實(shí)例化對(duì)象首先第一個(gè)需要做的事情就是構(gòu)造函數(shù)。一個(gè)小孩出生到5歲之前,所有的事情都是父母幫助做的,包括起名字、穿衣服、吃飯等等。 析構(gòu)函數(shù):一個(gè)對(duì)象被使用完后需要做一些善后工作,這些善后工作是不需要人為干預(yù)的,例如資源釋放、變量刪除等。例如:一個(gè)小狗死后,主人非常愛惜它,就把它埋在了家后園的一顆樹下。小狗被埋這件事情是主人做的,不是狗做的。這就是析構(gòu)函數(shù)。 3.類的重寫 子類和父類之間的事情,就是說父類有的方法,子類不但可以直接使用,還可以在子類中 重新定義具體內(nèi)容,例如有一個(gè)父親會(huì)駕駛汽車,那么他的兒子也會(huì)駕駛汽車,但他的兒子 可以不駕駛汽車,而駕駛飛機(jī),這就是類方法的重寫。 D 1.final(最后的)關(guān)鍵字使用 該關(guān)鍵字修飾的類不能被繼承 該關(guān)鍵字修飾的方法不能被重寫 2.static(靜態(tài))關(guān)鍵字使用(類的內(nèi)部、外部、子類) 實(shí)例化對(duì)象在內(nèi)存中的分配有講到大的數(shù)據(jù)在內(nèi)存被分配到堆空間里邊。現(xiàn)在有一個(gè)例子:有一個(gè) '學(xué)生'這個(gè)類,里邊有一個(gè)成員屬性是'國(guó)家',標(biāo)識(shí)該對(duì)象是屬于哪個(gè)國(guó)家的,比如美國(guó)、英國(guó)、德國(guó)等 ,這個(gè)類在實(shí)例化對(duì)象時(shí)候,每個(gè)對(duì)象在內(nèi)存中都會(huì)分配一個(gè)空間用于存放國(guó)家這個(gè)成員屬性,如果 有100個(gè)對(duì)象,那么在內(nèi)容中會(huì)分配100個(gè)相應(yīng)的空間。如果這個(gè)類的使用對(duì)象是在'中國(guó)'境內(nèi),那么 每個(gè)對(duì)象的國(guó)家屬性就會(huì)是一樣的,即'中國(guó)',相應(yīng)的在內(nèi)存中會(huì)有100個(gè)空間存放100個(gè)相同的內(nèi)容 這會(huì)造成空間浪費(fèi),其實(shí)到這里我們可以知道100個(gè)相同的內(nèi)容用一個(gè)空間存放就可以,反正都是一樣的, 這就產(chǎn)生了靜態(tài)化概念'static'。 用static修飾的成員屬性,該屬性就不是對(duì)象的,而是類的。 3.self和parent關(guān)鍵字使用 在類的內(nèi)部訪問類中的成員(屬性和方法),可以用'$this',該關(guān)鍵字泛指對(duì)象,這是訪問一般的類 成員,如果訪問的成員是用static關(guān)鍵字修飾的,就不能用'$this'了,因?yàn)橛胹tatic修飾的類 成員是被類本身?yè)碛校粚儆谌魏螌?duì)象了,這時(shí)候需要用'self'關(guān)鍵字修飾 self::成員 在類的外部訪問類本身?yè)碛械某蓡T可以這樣 類名::成員屬性。 在子類中訪問父類擁有的成員可以用parent關(guān)鍵字 parent::成員屬性 4.const(常量)關(guān)鍵字使用 在php中可以定義常量,類外部用define定義,類內(nèi)部用const定義。 常量的擁有者是類本身,類內(nèi)部訪問常量用 self::常量 類外部訪問常量用 類名::常量 子類訪問常量 parent::常量 6.魔術(shù)方法clone、__call、__autoload使用 clone:在一個(gè)項(xiàng)目里邊我們有時(shí)候需要兩個(gè)或多個(gè)完全一樣的初始化對(duì)象,這時(shí)候可以使用clone技術(shù) 不用clone技術(shù)也可以,不過每個(gè)新的對(duì)象都需要初始化屬性值,這樣比較繁瑣,也容易出錯(cuò),使用clone就比較簡(jiǎn)單,克隆出來的多個(gè)對(duì)象彼此是獨(dú)立的,互不相干。 $p2 = clone $p1; __call:在類的使用過程中,如果一個(gè)對(duì)象調(diào)用的方法不在類里邊,那么這時(shí)候程序要報(bào)錯(cuò),然后程序退 出不能繼續(xù)運(yùn)行。這樣做用戶體驗(yàn)非常不好,如果有一種方法可以使得程序報(bào)錯(cuò)完后可以繼續(xù)運(yùn)行,這樣的程序給人更智能、用戶體驗(yàn)更好的感覺,這時(shí)候就可以用__call public function __call($method_name,$args){echo '你訪問的方法:';echo $method_name;echo '參數(shù):';print_r($args);echo '不存在'; } __autoload:開發(fā)一個(gè)軟件系統(tǒng),往往里邊會(huì)有很多類,在初始化類對(duì)象之前需要先include這個(gè)對(duì)象對(duì)應(yīng)的類文件。所有的類不能都放到一個(gè)文件(文件臃腫,不易維護(hù)),這樣就會(huì)在程序開始處有很多的include列表,這樣做非常繁瑣,出現(xiàn)一個(gè)新的類就需要被include,有沒有一種方法可以使得被include的類文件在實(shí)例化對(duì)象時(shí)候才引入,否則不動(dòng)作,答案是有的,這時(shí)候可以用魔術(shù)方法__autoload function __autoload($className){include($className.’.php’); } 8.子類繼承父類時(shí)候成員修飾符限制,子類的修飾級(jí)別大于父類。例如父類的修飾符是protected, 則子類修飾級(jí)別是protected或public。父類是public的,子類也必須是public的 1.抽象類 在類里邊定義的沒有方法體的方法就是抽象方法,有抽象方法的類被稱為抽象類。抽象類不能實(shí)例化對(duì)象。 所謂沒有方法體就是方法在聲明時(shí)候沒有花括號(hào)和里邊的內(nèi)容。 作用之處: 例如:我有一個(gè)類'動(dòng)物',里邊有方法'吃食'(還可以有許多其他的方法) 動(dòng)物這個(gè)類可以有許多子類例如:狗、魚、鳥等,這些子類有一個(gè)共性就是都有吃食這個(gè)方法 一般的解決方法是:定義3個(gè)類,里邊都有吃食方法。這樣實(shí)現(xiàn)沒有問題的,但是如果其中一個(gè) 類沒有吃食方法,這時(shí)候程序是不給報(bào)錯(cuò)的。我們現(xiàn)在要做的就是3個(gè)類中任何一個(gè)沒有吃食方法 系統(tǒng)就要報(bào)錯(cuò)。這時(shí)候就需要用到抽象類了。 抽象類按照字面意思理解就是對(duì)3個(gè)類的進(jìn)一步抽象。抽象出來吃食方法。 抽象類技術(shù)特性: a、抽象類不能實(shí)例化 b、類的成員方法是抽象的,則這個(gè)類也是抽象的 c、抽象方法體內(nèi)沒有實(shí)現(xiàn)細(xì)節(jié),具體實(shí)現(xiàn)留給子類實(shí)現(xiàn) d、繼承抽象類的子類必須實(shí)現(xiàn)父類的抽象類,除非自己也是抽象類。 2.接口(插座實(shí)例) 當(dāng)一個(gè)抽象類里邊的全部方法都是抽象方法時(shí)候,這個(gè)抽象類就是'接口'。 接口技術(shù)特性: a、interface聲明 b、全部接口方法是public的,因此可以省略 c、接口只定義方法,沒有具體方法實(shí)現(xiàn) d、實(shí)現(xiàn)類用implements實(shí)現(xiàn)接口,全部接口方法都要實(shí)現(xiàn) e、接口可以多實(shí)現(xiàn),中間用逗號(hào)分開 f、接口是對(duì)抽象類的抽象,抽象類是對(duì)類的抽象,類是對(duì)事物的抽象。 g、接口不能實(shí)例化 (1)、抽象類和接口有什么不同抽象類只能單繼承,接口可以多實(shí)現(xiàn)抽象類里面可以有抽象方法和普通方法,而接口里只有抽象方法抽象類里面可以有自己的屬性,而接口里面只能有常量接口里面的方法必須是public的,而抽象類不同 (2)、抽象類和接口的相似之處抽象類里面的抽象方法在繼承的時(shí)候必須都要重寫,接口里面的方法也必須都要實(shí)現(xiàn)。抽象類和接口都不能直接實(shí)例化,抽象類需要繼承(extends),接口需要實(shí)現(xiàn)(implements)。抽象類和接口都體現(xiàn)了多態(tài)的特性。3.jqueryjquery是js的封裝包,里邊有很多集成的函數(shù)可以讓我們使用,jquery的宗旨就是寫更少的代碼實(shí)現(xiàn)更多的功能使用的方法:1.引進(jìn)jquery包<script type='text/javascript' src=’jquery-1.4.2.js’><script>2.測(cè)試jquery是否加載成功$(function(){alert('jquey加載成功');})3.獲取頁(yè)面的元素$(’#div’);通過id獲取頁(yè)面元素$(’.div’);通過class獲取頁(yè)面元素jquery中的事件1.$(’#mydiv’).click(function(){});鼠標(biāo)點(diǎn)擊事件【要寫在onload事件里邊】2.$(’#mydiv’).hover(function(){},function(){});鼠標(biāo)移動(dòng)到對(duì)象事件3.$(’#mydiv’).attr();獲得對(duì)象屬性信息4.$(’#mydiv’).attr(’checked’);查看單復(fù)選框的選定情況!5.$(’#mydiv’).css();獲得對(duì)象的屬性信息6.$(’#mydiv’).css(樣式,值);給對(duì)象賦予樣式7.$(’#mydiv’).addClass(’trb’);給元素class屬性賦值trb;8.$(’#mydiv’).removeClass(’trb’);使元素失去class屬性;9.$(’#mydiv’).submit(function(){});提交事件;10.$(’#mydiv’).keyup(function(){});鍵盤敲擊事件;在項(xiàng)目中的使用:表單的驗(yàn)證20.* 什么是單一入口(單點(diǎn)入口)呢?所謂單一入口就是整個(gè)應(yīng)用程序只有一個(gè)入口,所有的實(shí)現(xiàn)都通過這個(gè)入口來轉(zhuǎn)發(fā),比如說在上面我們就使用index.php作為程序的單點(diǎn)入口,當(dāng)然這個(gè)入口文件的名字是可以由自己任意定義的。單點(diǎn)入口有幾大好處: 第一、一些系統(tǒng)全局變量,都可以在這里定義。 比如說你要對(duì)數(shù)據(jù)進(jìn)行初步的過濾,你要模擬session處理, 你要定義一些全局變量,甚至你要注冊(cè)一些對(duì)象或者變量到注冊(cè)器里面 第二、程序的架構(gòu)更加清晰明了。
相關(guān)文章:
1. webpack高級(jí)配置與優(yōu)化詳解2. ajax接口文檔url路徑的簡(jiǎn)寫實(shí)例3. JS寄快遞地址智能解析的實(shí)現(xiàn)代碼4. JSwiff 0.9 - open source Flash framework5. 使用Docker的NFS-Ganesha鏡像搭建nfs服務(wù)器的詳細(xì)過程6. 刪除docker里建立容器的操作方法7. Django使用HTTP協(xié)議向服務(wù)器傳參方式小結(jié)8. IntelliJ IDEA配置Tomcat服務(wù)器的方法9. IntelliJ IDEA恢復(fù)刪除文件的方法10. Docker 部署 Prometheus的安裝詳細(xì)教程
