本章要講的是PHP的全局變量。php
這裏講個小故事:程序員
不少年前,一個很聰明的小偷,想去偷一戶人家的錢。但是他偷不到主人的鑰匙,怎麼辦呢?web
他想到了一個辦法,去以前嚼了一塊口香糖,口香糖的牌子是「大大泡泡糖」。數據庫
這裏咱們來說個泡泡糖的插曲。微信
不知道你們小時候有沒有吃過「大大泡泡糖」。綠箭一開始在中國面世的時候並不被老百姓接受,那時的人尚未嚼口香糖的習慣(如口氣清新、時尚啥的徹底沒有概念),因而箭牌公司("大大"其實就是這個公司的產品)的老外在收購了一家糖果公司後推出了大大泡泡糖。架構
這裏老外發現,那時的中國要想推一種食品,外觀和感官體驗很重要,口味卻是其次的。譬如綠箭,就是用來咀嚼的,老外發現當時的中國人吃口香糖是爲了好玩。因而,大大泡泡糖在中國推廣時一炮打響,由於除了水果口味好吃,還很好玩,你們還能一塊兒吃,看看誰的泡泡大,起到了娛樂性效果(比大小一直是國人娛樂的重要途徑)。wordpress
小偷的方法很特別:把大大泡泡糖嚼後趁其軟狀塞入鎖孔,十分鐘冷卻後再拉出,因而鑰匙的形狀搞定了。(爲什麼須要用大大泡泡糖的緣由是這種泡泡糖冷卻後不粘手)。函數
正式劇情開始了:post
一、 小偷用配來的鑰匙如願以償偷到了這戶人家的東西,這戶主人居然是貪官,家裏還有金條學習
二、 本想再偷隔壁一家,在繼續用泡泡糖塞入鎖孔時發現用剛纔那把鑰匙依然能開旁邊人家的鎖。
三、 接連開了該樓層其餘幾戶,發現都能開。後來小偷明白了,這個貪官買了這一個樓層全部住戶,用的是同一款門鎖
四、 因而小偷的這把鑰匙幾乎成了「萬能鑰匙」。
故事先講到這,咱們來看段代碼:
<?php //解釋一下,咱們把$str 這個變量當作 鑰匙,請看如下分解 $str="主人的鑰匙"; function steal() //steal 是」偷」的英文 { if($str!="") echo "偷到錢了"; else echo "毛也沒偷到"; } steal(); ?>
你們運行一下會發現,輸入的結果是:毛也沒偷到。
這是爲何呢?
上面不是定義了$str是"主人的鑰匙"了嗎?爲啥仍是啥都偷不到?
緣由以下:
由於主人的鑰匙藏在了他身上,做爲小偷也要有點節操,要偷必須得本身配一把。
因而上述代碼要這麼改:
<?php $str="主人的鑰匙" $str_copey=$str;//小偷用口香糖塞了進去,複製了一把鑰匙,和主人的鑰匙是如出一轍的。因而接下來大幹一場吧 function steal() //steal 是」偷」的英文 { global $str_copey;//使用了口香糖鑰匙 if($str_copey!="") echo "偷到錢了"; else echo "毛也沒偷到"; } steal(); ?>
結果已經很明顯了:很順利的偷到了錢
PHP知識點講解:
1、global 關鍵字便是申明全局變量的關鍵字。
2、雖然在steal的過程當中有一個變量也叫str,可是這個str並不是外面的str,它只能做用於steal這個函數體內。也就是說小偷若是用本身家門的鑰匙是打不開別人家的門的
3、複製事後的鑰匙很好用。
若是你們懂了全局變量,那麼上面的代碼只要這麼寫便可:
<?php $str="主人的鑰匙" function steal() //steal 是」偷」的英文 { global $ str; //全局變量 if($str!="") echo "偷到錢了"; else echo "毛也沒偷到"; } steal(); ?>
故事繼續:
這個小偷利用大大泡泡糖的方式偷了好多家,時間久了,他愈來愈出名,連不少開鎖公司都請教他到底如何才能仿製人家的鑰匙。
小偷很聰明,他歷來不把如何用泡泡糖塞入鎖芯變成模具最後能複製一把鑰匙的方法告訴任何人。因而其餘同行小偷只能每次要偷錢時來請這位小偷來配鑰匙,這個小偷後來索性不作小偷了,作起來配鑰匙正規行當,也開了一個開鎖公司。
因而,一個小偷從良的故事被傳爲了"佳話"。
故事結束(以上故事純屬虛構,若有雷同,不勝榮幸),咱們再來看段代碼
首先,創建一個文件,叫作makkey.php,代碼以下:
<?php $str="主人的鑰匙"; $str_copey=$str; //大大泡泡糖配置鑰匙的方式但是很複雜的哦 ?>
而後,再創建一個文件,就叫作stealmoney.php
代碼以下:
<?php include("makkey.php"); function steal() //steal 是」偷」的英文 { global $str_copey; //使用了小偷公司專門研發的口香糖複製鑰匙 if($str_copey!="") echo "偷到錢了"; else echo "毛也沒偷到"; } steal(); ?>
輸出結果?必定能偷到錢。
這裏有兩個知識點:
1、寫出好的程序要學會把類庫和業務邏輯封裝成可複用的方法庫。
上面的include("makkey.php");就是封裝, 假如$str_copey=$str;是一個很複雜的過程,那麼咱們必須學會如何封裝這麼一個方法庫,讓其餘程序員能夠繼續複用你的成果
你們這下應該知道爲什麼要封裝了吧。
2、使用include方式,global 依然有效
額外小知識:
若是你們在作wordpress二次開發,想自定義一些頁面,除了使用wp自帶的函數還能本身作一些底層級別的數據調用。代碼以下:
<?php require(dirname(__FILE__) .'/wp-blog-header.php' ); //上面就是wordpress基本的函數庫封裝 global $wpdb; //這個是wordpess 數據庫操做的基本對象 $result=$wpdb->get_results(「select * fromwp_posts); var_export($result); ?>
你們動手試一下吧,其實還有不少功能,此處不表。你會發現wordpress之因此這麼優秀,是由於其二次開發的便捷性、高效性、靈活性確實很強
學會寫程序—>寫出好程序——>封裝方法庫——>方便你我他.
一個好的程序架構就是這麼開端的。
補充:
你們可能還會學到$GLOBALS,這個叫超全局變量。請你們自行搜索。不講這個知識是由於不怎麼推薦使用。意義不大,若是要用何須用PHP?
本章總結:
任何知識都來源於生活,技術也不例外,不斷瘋狂學習技術的最終目的是:改善家人的生活質量、提高本身的生活品質,這才叫「技術改變世界"——微觀角度。
------------------------------------
關注個人微信公衆號,天天成熟一點點
關注步驟:
很直接的拿出手機->打開微信->點掃一掃,掃下面二維碼便可