亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 55
粉絲 3
評(píng)論 0
訪問(wèn)量 69559
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
PHP變量作用域,常量,變量過(guò)濾器
王佳祥
原創(chuàng)
1159人瀏覽過(guò)

PHP變量作用域,常量,變量過(guò)濾器

一、PHP變量作用域

1.基本概念

  • 作用域是變量的生效范圍

  • 作用域是查找變量的工具

  • 全局作用域:寫(xiě)到了函數(shù)外部的變量

  • 函數(shù)作用域:寫(xiě)到了函數(shù)內(nèi)部的變量,函數(shù)會(huì)創(chuàng)建一個(gè)獨(dú)立的作用域,不能直接訪問(wèn)外部的變量

  1. <?php
  2. error_reporting(E_ALL);//顯示錯(cuò)誤警告
  3. //作用域是變量的生效范圍
  4. //作用域是查找變量的工具
  5. //1.全局作用域:寫(xiě)到了函數(shù)外部的變量
  6. $siteName='php中文網(wǎng)';
  7. //2.函數(shù)作用域:
  8. function getInfo(){
  9. //訪問(wèn)函數(shù)外部的變量(全局變量)
  10. //在php,函數(shù)會(huì)創(chuàng)建出一個(gè)獨(dú)立的作用域,不能直接訪問(wèn)外部的變量
  11. return $siteName;
  12. }
  13. echo getInfo();


2.如何通過(guò)函數(shù)內(nèi)部訪問(wèn)函數(shù)外部的變量?

  • 用global關(guān)鍵字
  1. <?php
  2. error_reporting(E_ALL);//顯示錯(cuò)誤警告
  3. //作用域是變量的生效范圍
  4. //作用域是查找變量的工具
  5. //1.全局作用域:寫(xiě)到了函數(shù)外部的變量
  6. $siteName='php中文網(wǎng)';
  7. //2.函數(shù)作用域:
  8. function getInfo(){
  9. //訪問(wèn)函數(shù)外部的變量(全局變量)
  10. //在php,函數(shù)會(huì)創(chuàng)建出一個(gè)獨(dú)立的作用域,不能直接訪問(wèn)外部的變量
  11. //1.在函數(shù)中做一個(gè)聲明
  12. global $siteName;
  13. return $siteName;
  14. //私有變量
  15. /* $local = 'hello php.cn';
  16. return $local; */
  17. }
  18. echo getInfo();


  • 使用 $GLOBALS 替代 global,$GLOBALS 是一個(gè)關(guān)聯(lián)數(shù)組,每一個(gè)變量為一個(gè)元素,鍵名對(duì)應(yīng)變量名,值對(duì)應(yīng)變量的內(nèi)容。$GLOBALS 之所以在全局范圍內(nèi)存在,是因?yàn)?$GLOBALS 是一個(gè)超全局變量。
  1. <?php
  2. error_reporting(E_ALL);
  3. $siteName='$GLOBALS超全局變量';
  4. function getInfo(){
  5. return $GLOBALS['siteName'];
  6. }
  7. echo getInfo();


  • 在全局中創(chuàng)建的變量,會(huì)自動(dòng)成為超全局?jǐn)?shù)組$GLOBALS中的一個(gè)元素,不受作用域限制
  1. <?php
  2. $siteName='$GLOBALS超全局變量';
  3. echo '<pre>'.print_r($GLOBALS,true).'<pre>';
  4. //在全局中創(chuàng)建的變量,會(huì)自動(dòng)成為超全局?jǐn)?shù)組$GLOBALS中的一個(gè)元素


  • 超全局變量$_SEVER[‘SCRIPT_NAME’],$_SERVER 是一個(gè)包含了諸如頭信息(header)、路徑(path)、以及腳本位置(script locations)等等信息的數(shù)組;’SCRIPT_NAME’包含當(dāng)前腳本的路徑
  1. <?php
  2. echo $_SERVER['SCRIPT_NAME'];//包含當(dāng)前腳本的路徑
  3. echo $_SERVER['SCRIPT_FILENAME'];//當(dāng)前執(zhí)行腳本的絕對(duì)路徑
  4. echo $_SERVER['REMOTE_ADDR'];//瀏覽當(dāng)前頁(yè)面的用戶的 IP 地址
  5. echo $_SERVER['REMOTE_HOST'];//當(dāng)前運(yùn)行腳本所在的文檔根目錄


二、PHP常量

1.基本概念

  • 常量是一個(gè)簡(jiǎn)單值的標(biāo)識(shí)符(名字)。如同其名稱所暗示的,在腳本執(zhí)行期間該值不能改變(除了所謂的魔術(shù)常量,它們其實(shí)不是常量)。常量默認(rèn)為大小寫(xiě)敏感。傳統(tǒng)上常量標(biāo)識(shí)符總是大寫(xiě)的。

  • 合法的常量名以字母或下劃線開(kāi)始,后面跟著任何字母,數(shù)字或下劃線。

2. 定義常量

  • 可以用 define() 函數(shù)來(lái)定義常量,在 PHP 5.3.0 以后,可以使用 const 關(guān)鍵字在類定義之外定義常量。一個(gè)常量一旦被定義,就不能再改變或者取消定義。

  • 常量只能包含標(biāo)量數(shù)據(jù)(boolean,integer,float 和 string)。

  • 常量和變量有如下不同:

    常量前面沒(méi)有美元符號(hào)($);
    常量只能用 define() 函數(shù)定義,而不能通過(guò)賦值語(yǔ)句;
    常量可以不用理會(huì)變量的作用域而在任何地方定義和訪問(wèn);
    常量一旦定義就不能被重新定義或者取消定義;
    常量的值只能是標(biāo)量。

  • 使用 const 關(guān)鍵字定義常量必須處于最頂端的作用區(qū)域,因?yàn)橛么朔椒ㄊ窃诰幾g時(shí)定義的。這就意味著不能在函數(shù)內(nèi),循環(huán)內(nèi)以及 if 語(yǔ)句之內(nèi)用 const 來(lái)定義常量。

  1. <?php
  2. //查看當(dāng)前有哪些可用的常量
  3. print_r(get_defined_constants(true));


  1. <?php
  2. //查看當(dāng)前有哪些可用的常量
  3. //print_r(get_defined_constants(true));
  4. //查詢用戶自定義常量
  5. //兩種方式創(chuàng)建常量
  6. //關(guān)鍵字const
  7. const APP_PATH = '/WEB';
  8. //函數(shù)define
  9. define('APP_NAME','客戶管理系統(tǒng)');
  10. //查詢用戶自定義的常量
  11. print_r(get_defined_constants(true)['user']);


  • 常量必須初始化,并且不讓刪除
  1. <?php
  2. const APP_PATH;
  3. //函數(shù)define
  4. define('APP_NAME','客戶管理系統(tǒng)');
  5. //查詢用戶自定義的常量
  6. print_r(get_defined_constants(true)['user']);


  1. <?php
  2. const APP_PATH = '客戶管理系統(tǒng)';
  3. $name = 'APP_PATH';
  4. echo $name.'<br>';
  5. echo constant($name).'<br>';//要訪問(wèn)到常量的值必須用constant()
  6. //定義一個(gè)特殊的常量
  7. define('','admin@php.cn');
  8. echo '';
  9. echo constant('');


  • 預(yù)定義常量
  1. <?php
  2. //預(yù)定義常量
  3. echo '版本號(hào):' . PHP_VERSION . '<br>';
  4. echo '操作系統(tǒng):' . PHP_OS_FAMILY . '<br>';
  5. echo '最大整數(shù):' . PHP_INT_MAX . '<br>';
  6. echo '最大浮點(diǎn)數(shù):' . PHP_FLOAT_MAX . '<br>';
  7. echo '目錄分隔符:' . DIRECTORY_SEPARATOR . '<br>';


  • 魔術(shù)常量
  1. <?php
  2. echo '當(dāng)前行號(hào):' . __LINE__ . '<br>';
  3. echo '當(dāng)前文件:' . __FILE__ . '<br>';
  4. echo '當(dāng)前目錄:' . __DIR__ . '<br>';


  • 常量的命名空間
  1. <?php
  2. //error_reporting(E_ALL);
  3. //全局空間中的成員,不允許重復(fù)定義
  4. //const APP_PATH = '/phpstudy_pro';
  5. //const APP_PATH = '/public';
  6. //其實(shí)類與函數(shù)也是全局成員,也不允許重復(fù)定義
  7. //全局成員:常量,類,函數(shù),接口
  8. namespace ns1{
  9. const APP_PATH = '/WEB';
  10. }
  11. namespace ns2{
  12. const APP_PATH = '/public';
  13. }
  14. namespace{
  15. echo \ns1\APP_PATH,"<br>";
  16. echo \ns2\APP_PATH,"<br>";
  17. }
  18. //命名空間:解決了全局成員的命名沖突問(wèn)題


三、PHP變量過(guò)濾器

1.查看當(dāng)前系統(tǒng)支持的過(guò)濾器

  1. <?php
  2. //變量過(guò)濾器
  3. foreach(filter_list() as $filter){
  4. echo $filter . ' => ' . filter_id($filter) . '<br>';
  5. }


2. 驗(yàn)證單個(gè)變量

  1. <?php
  2. //1.過(guò)濾單個(gè)變量filter_var()
  3. $age = 80;
  4. //filter_var(要過(guò)濾的變量,過(guò)濾器常量)
  5. $options = ['options' => ['min-range' => 18,'max_range' => 60]];
  6. var_dump(filter_var($age,FILTER_VALIDATE_INT,$options));
  7. echo '<hr>';
  8. $email = 'admin@php.cn';
  9. //var_dump(filter_var($email,FILTER_VALIDATE_EMAIL));
  10. var_dump(filter_var($email,274));


3. 驗(yàn)證多個(gè)變量

  1. <?php
  2. //驗(yàn)證多個(gè)變量filter_var_array()
  3. $a = 10;
  4. $b ='php';
  5. $arr = [$a,$b];
  6. var_dump(filter_var_array($arr,FILTER_VALIDATE_INT));


4.驗(yàn)證外部變量

  1. //外部變量
  2. //通常通過(guò)http請(qǐng)求發(fā)送過(guò)來(lái)的,表單,get,post
  3. //使用GET參數(shù)演示外部變量的獲取與驗(yàn)證/過(guò)濾
  4. //filter_input(輸入類型get/post,變量名,過(guò)濾器,參數(shù))
  5. echo 'id = ' .$_GET['id'];
  6. $options = ['options' => ['min_range' => 1]];
  7. var_dump(filter_input(INPUT_GET,'id',FILTER_VALIDATE_INT,$options));
  8. //同時(shí)驗(yàn)證多個(gè)外部變量
  9. $args = [
  10. 'username' => FILTER_SANITIZE_STRING,
  11. 'email' => FILTER_VALIDATE_EMAIL,
  12. 'age' => ['filter' => FILTER_VALIDATE_INT,'options' => ['min_range'=>18,'max_range'=>60]],
  13. 'blog' => FILTER_VALIDATE_URL
  14. ];
  15. var_dump(filter_input_array(INPUT_GET,$args));


學(xué)習(xí)總結(jié)

1.變量作用域:

  • 全局作用域,函數(shù)作用域

  • 函數(shù)作用域通過(guò)global,$GLOBALS來(lái)訪問(wèn)外部變量

  • 超全局變量

$_SERVER[] 包含了諸如頭信息(header)、路徑(path)、以及腳本位置的數(shù)組
‘PHP_SELF’ 當(dāng)前執(zhí)行腳本的文件名
‘GATEWAY_INTERFACE’ 服務(wù)器使用的 CGI 規(guī)范的版本
‘SERVER_ADDR’ 當(dāng)前運(yùn)行腳本所在的服務(wù)器的 IP 地址
‘SERVER_NAME’ 當(dāng)前運(yùn)行腳本所在的服務(wù)器的主機(jī)名
‘SERVER_SOFTWARE’ 服務(wù)器標(biāo)識(shí)字符串,在響應(yīng)請(qǐng)求時(shí)的頭信息中給出
‘SERVER_PROTOCOL’ 請(qǐng)求頁(yè)面時(shí)通信協(xié)議的名稱和版本
‘REQUEST_METHOD’ 訪問(wèn)頁(yè)面使用的請(qǐng)求方法
‘REQUEST_TIME’ 請(qǐng)求開(kāi)始時(shí)的時(shí)間戳
‘REQUEST_TIME_FLOAT’ 請(qǐng)求開(kāi)始時(shí)的時(shí)間戳,微秒級(jí)別的精準(zhǔn)度
‘QUERY_STRING’ 查詢字符串
‘DOCUMENT_ROOT’ 當(dāng)前運(yùn)行腳本所在的文檔根目錄
‘HTTP_ACCEPT’ 當(dāng)前請(qǐng)求頭中 Accept: 項(xiàng)的內(nèi)容
‘HTTP_ACCEPT_CHARSET’ 當(dāng)前請(qǐng)求頭中 Accept-Charset: 項(xiàng)的內(nèi)容
‘REMOTE_ADDR’ 瀏覽當(dāng)前頁(yè)面的用戶的 IP 地址
‘REMOTE_HOST’ 瀏覽當(dāng)前頁(yè)面的用戶的主機(jī)名
‘REMOTE_PORT’ 用戶機(jī)器上連接到 Web 服務(wù)器所使用的端口號(hào)
‘REMOTE_USER’ 經(jīng)驗(yàn)證的用戶
‘SCRIPT_FILENAME’ 當(dāng)前執(zhí)行腳本的絕對(duì)路徑。

2.常量

  • 常量通常是大寫(xiě)的,單詞之間用下劃線連接

  • 一個(gè)常量一旦被定義,就不能再改變或者取消定義

  • 定義常量用const關(guān)鍵字和define()函數(shù)

  • const用于類成員變量定義

  • const不能在條件語(yǔ)句中定義常量

  • 使用const簡(jiǎn)單易讀,它本身是一個(gè)語(yǔ)言結(jié)構(gòu),而define是一個(gè)方法,用const定義在編譯時(shí)比define快很多

  • define不能定義在類中,而const必須定義在類中,并且const定義的變量必須通過(guò)類名::變量名來(lái)進(jìn)行訪問(wèn)

  • define定義全局常量,在任何地方都可以訪問(wèn)

  • 常量可以不用理會(huì)變量的作用域而在任何地方定義和訪問(wèn);

  • 預(yù)定義常量

預(yù)定義常量 釋義
PHP_VERSION 當(dāng)前 PHP 的版本號(hào)
PHP_OS 當(dāng)前的操作系統(tǒng)名稱
PHP_EOL 系統(tǒng)換行符,Windows 是(\r\n),Linux 是(\n),MAC 是(\r)
PHP_INT_MAX 當(dāng)前 PHP 支持的最大整數(shù)
PHP_INT_MIN 當(dāng)前 PHP 支持的最小整數(shù)
PHP_EXTENSION_DIR PHP 的擴(kuò)展目錄
TRUE 布爾類型的 true
FALSE 布爾類型的 false
NULL Null 值
  • 魔術(shù)常量
魔術(shù)常量 釋義
LINE 文件中的當(dāng)前行號(hào);
FILE 當(dāng)前文件的絕對(duì)路徑(包含文件名);
DIR 當(dāng)前文件的絕對(duì)路徑(不包含文件名),等價(jià)于 dirname(FILE);
FUNCTION 當(dāng)前函數(shù)(或方法)的名稱;
CLASS 當(dāng)前的類名(包括該類的作用區(qū)域或命名空間);
TRAIT 當(dāng)前的 trait 名稱(包括該 trait 的作用區(qū)域或命名空間);
METHOD 當(dāng)前的方法名(包括類名);
NAMESPACE 當(dāng)前文件的命名空間的名稱。

3.變量過(guò)濾器

  • filter_var(要過(guò)濾的變量,過(guò)濾器常量),過(guò)濾一個(gè)變量

  • filter_var_array 過(guò)濾多個(gè)變量

  • filter_input(輸入類型get/post,變量名,過(guò)濾器,參數(shù)) 過(guò)濾單個(gè)外部變量

  • filter_input_array — 過(guò)濾多個(gè)外部變量

批改老師:GuanhuiGuanhui

批改狀態(tài):合格

老師批語(yǔ):寫(xiě)的很好!加油!
本博文版權(quán)歸博主所有,轉(zhuǎn)載請(qǐng)注明地址!如有侵權(quán)、違法,請(qǐng)聯(lián)系admin@php.cn舉報(bào)處理!
全部評(píng)論 文明上網(wǎng)理性發(fā)言,請(qǐng)遵守新聞評(píng)論服務(wù)協(xié)議
0條評(píng)論
作者最新博文
關(guān)于我們 免責(zé)申明 意見(jiàn)反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學(xué)習(xí)!
    全站2000+教程免費(fèi)學(xué)