不卡AV在线|网页在线观看无码高清|亚洲国产亚洲国产|国产伦精品一区二区三区免费视频

學(xué)習(xí)啦——學(xué)設(shè)計(jì)>網(wǎng)頁設(shè)計(jì)>網(wǎng)站建設(shè)>網(wǎng)站后臺(tái)技術(shù)>

PHP設(shè)計(jì)常見的模式_PHP設(shè)計(jì)模式有哪些

時(shí)間: 宇民40 分享

  實(shí)際上,設(shè)計(jì)模式對(duì)于每個(gè)人都非常有用。如果這些工具不是 “架構(gòu)太空人” 的專利,那么它們又是什么?下面由學(xué)習(xí)啦小編為大家整理的PHP設(shè)計(jì)模式,希望大家喜歡!

  PHP設(shè)計(jì)模式

  一、首先來看,單例模式

  所謂單例模式,即在應(yīng)用程序中只會(huì)有這個(gè)類的一個(gè)實(shí)例存在。

  通常單例模式用在僅允許數(shù)據(jù)庫訪問對(duì)象的實(shí)例中,從而防止打開多個(gè)數(shù)據(jù)庫連接。

  一個(gè)單例類應(yīng)包括以下幾點(diǎn):

  和普通類不同,單例類不能被直接實(shí)例化,只能是由自身實(shí)例化。因此,要獲得這樣的限制效果,構(gòu)造函數(shù)必須標(biāo)記為private。

  要讓單例類不被直接實(shí)例化而能起到作用,就必須為其提供這樣的一個(gè)實(shí)例。因此,就必須要讓單例類擁有一個(gè)能保存類的實(shí)例的私有靜態(tài)成員變量和對(duì)應(yīng)的一個(gè)能訪問到實(shí)例的公共靜態(tài)方法。

  在PHP中,為防止對(duì)單例類對(duì)象的克隆來打破單例類的上述實(shí)現(xiàn)形式,通常還為基提供一個(gè)空的私有__clone()方法。

  單例模式確保某個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。

  單例模式是一種常見的設(shè)計(jì)模式,在計(jì)算機(jī)系統(tǒng)中,線程池、緩存、日志對(duì)象、對(duì)話框、打印機(jī)、數(shù)據(jù)庫操作、顯卡的驅(qū)動(dòng)程序常被設(shè)計(jì)成單例。

  單例模式分3種:懶漢式單例、餓漢式單例、登記式單例。

  二、單例模式有以下3個(gè)特點(diǎn):

  1.只能有一個(gè)實(shí)例。

  2.必須自行創(chuàng)建這個(gè)實(shí)例。

  3.必須給其他對(duì)象提供這一實(shí)例。

  那么為什么要使用PHP單例模式?

  PHP一個(gè)主要應(yīng)用場(chǎng)合就是應(yīng)用程序與數(shù)據(jù)庫打交道的場(chǎng)景,在一個(gè)應(yīng)用中會(huì)存在大量的數(shù)據(jù)庫操作,針對(duì)數(shù)據(jù)庫句柄連接數(shù)據(jù)庫的行為,使用單例模式可以避免大量的new操作。因?yàn)槊恳淮蝞ew操作都會(huì)消耗系統(tǒng)和內(nèi)存的資源。

  php數(shù)組指針操作

  一、移動(dòng)數(shù)組指針的操作:

  Next() 向下 同時(shí)會(huì)獲得當(dāng)前元素的值。

  Prev() 向上同時(shí)會(huì)獲得當(dāng)前元素的值。

  End() 移動(dòng)到最后一個(gè)元素單元 獲得最后一個(gè)元素的值

  Reset() 移動(dòng)到第一個(gè)單元 獲得第一個(gè)元素的值。

  如果移動(dòng)不成功,返回false。

  參數(shù)都為需要操作的數(shù)組,并且是引用傳遞。

  二、獲得指針指向的元素的信息:

  Key();//獲得當(dāng)前數(shù)組指針指向的元素下標(biāo)Current();//獲得當(dāng)前數(shù)組指針指向的元素

  只獲取數(shù)據(jù) 不移動(dòng)指針

  三、還有一個(gè)混合的操作:

  即可以獲得當(dāng)前指針元素的信息(鍵值) 也 可以同時(shí)移動(dòng)指針。

  Each(); 獲得當(dāng)前元素的信息(鍵和值的信息),

  四、移動(dòng)指針:

  我們有時(shí)可以利用each的特性,來達(dá)到遍歷數(shù)組的目的:

  應(yīng)該利用循環(huán)結(jié)構(gòu) 配合each完成。

  配合條件:each到最后一個(gè)元素時(shí),就會(huì)返回false。

  List 函數(shù):

  List的限制:只針對(duì)索引數(shù)組起作用。

  利用list 和each 完成遍歷

  但是使用完each遍歷后 數(shù)組指針是不會(huì)reset的重置的,需要手動(dòng)重置。

  最常用的PHP正則表達(dá)式

  一、校驗(yàn)數(shù)字的表達(dá)式

  數(shù)字:^[0-9]*$

  n位的數(shù)字:^\d{n}$

  至少n位的數(shù)字:^\d{n,}$

  m-n位的數(shù)字:^\d{m,n}$

  零和非零開頭的數(shù)字:^(0|[1-9][0-9]*)$

  非零開頭的最多帶兩位小數(shù)的數(shù)字:^([1-9][0-9]*)+(.[0-9]{1,2})?$

  帶1-2位小數(shù)的正數(shù)或負(fù)數(shù):^(\-)?\d+(\.\d{1,2})?$

  正數(shù)、負(fù)數(shù)、和小數(shù):^(\-|\+)?\d+(\.\d+)?$

  有兩位小數(shù)的正實(shí)數(shù):^[0-9]+(.[0-9]{2})?$

  有1~3位小數(shù)的正實(shí)數(shù):^[0-9]+(.[0-9]{1,3})?$

  非零的正整數(shù):^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$

  非零的負(fù)整數(shù):^\-[1-9][]0-9″*$ 或 ^-[1-9]\d*$

  非負(fù)整數(shù):^\d+$ 或 ^[1-9]\d*|0$

  非正整數(shù):^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$

  非負(fù)浮點(diǎn)數(shù):^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$

  非正浮點(diǎn)數(shù):^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$

  正浮點(diǎn)數(shù):^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

  負(fù)浮點(diǎn)數(shù):^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$

  浮點(diǎn)數(shù):^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

  二、校驗(yàn)字符的表達(dá)式

  漢字:^[\u4e00-\u9fa5]{0,}$

  英文和數(shù)字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$

  長(zhǎng)度為3-20的所有字符:^.{3,20}$

  由26個(gè)英文字母組成的字符串:^[A-Za-z]+$

  由26個(gè)大寫英文字母組成的字符串:^[A-Z]+$

  由26個(gè)小寫英文字母組成的字符串:^[a-z]+$

  由數(shù)字和26個(gè)英文字母組成的字符串:^[A-Za-z0-9]+$

  由數(shù)字、26個(gè)英文字母或者下劃線組成的字符串:^\w+$ 或 ^\w{3,20}$

  中文、英文、數(shù)字包括下劃線:^[\u4E00-\u9FA5A-Za-z0-9_]+$

  中文、英文、數(shù)字但不包括下劃線等符號(hào):^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$

  可以輸入含有^%&',;=?$\”等字符:[^%&',;=?$\x22]+

  禁止輸入含有~的字符:[^~\x22]+

  三、特殊需求表達(dá)式

  Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

  域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?

  InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$

  手機(jī)號(hào)碼:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$

  電話號(hào)碼(“XXX-XXXXXXX”、”XXXX-XXXXXXXX”、”XXX-XXXXXXX”、”XXX-XXXXXXXX”、”XXXXXXX”和”XXXXXXXX):^($$\d{3,4}-)|\d{3.4}-)?\d{7,8}$

  國(guó)內(nèi)電話號(hào)碼(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}

  身份證號(hào)(15位、18位數(shù)字):^\d{15}|\d{18}$

  短身份證號(hào)碼(數(shù)字、字母x結(jié)尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$

  帳號(hào)是否合法(字母開頭,允許5-16字節(jié),允許字母數(shù)字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

  密碼(以字母開頭,長(zhǎng)度在6~18之間,只能包含字母、數(shù)字和下劃線):^[a-zA-Z]\w{5,17}$

  強(qiáng)密碼(必須包含大小寫字母和數(shù)字的組合,不能使用特殊字符,長(zhǎng)度在8-10之間):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

  日期格式:^\d{4}-\d{1,2}-\d{1,2}

  一年的12個(gè)月(01~09和1~12):^(0?[1-9]|1[0-2])$

  一個(gè)月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$

PHP設(shè)計(jì)常見的模式_PHP設(shè)計(jì)模式有哪些

實(shí)際上,設(shè)計(jì)模式對(duì)于每個(gè)人都非常有用。如果這些工具不是 架構(gòu)太空人 的專利,那么它們又是什么?下面由學(xué)習(xí)啦小編為大家整理的PHP設(shè)計(jì)模式,希望大家喜歡! PHP設(shè)計(jì)模式 一、首先來看,單例模式 所謂單例模式,即在應(yīng)用程序中只會(huì)有這個(gè)類的一個(gè)實(shí)例存在。
推薦度:
點(diǎn)擊下載文檔文檔為doc格式

精選文章

27245