
批改狀態(tài):合格
老師批語(yǔ):寫(xiě)的很好!加油!
作用域是變量的生效范圍
作用域是查找變量的工具
全局作用域:寫(xiě)到了函數(shù)外部的變量
函數(shù)作用域:寫(xiě)到了函數(shù)內(nèi)部的變量,函數(shù)會(huì)創(chuàng)建一個(gè)獨(dú)立的作用域,不能直接訪問(wèn)外部的變量
<?php
error_reporting(E_ALL);//顯示錯(cuò)誤警告
//作用域是變量的生效范圍
//作用域是查找變量的工具
//1.全局作用域:寫(xiě)到了函數(shù)外部的變量
$siteName='php中文網(wǎng)';
//2.函數(shù)作用域:
function getInfo(){
//訪問(wèn)函數(shù)外部的變量(全局變量)
//在php,函數(shù)會(huì)創(chuàng)建出一個(gè)獨(dú)立的作用域,不能直接訪問(wèn)外部的變量
return $siteName;
}
echo getInfo();
<?php
error_reporting(E_ALL);//顯示錯(cuò)誤警告
//作用域是變量的生效范圍
//作用域是查找變量的工具
//1.全局作用域:寫(xiě)到了函數(shù)外部的變量
$siteName='php中文網(wǎng)';
//2.函數(shù)作用域:
function getInfo(){
//訪問(wèn)函數(shù)外部的變量(全局變量)
//在php,函數(shù)會(huì)創(chuàng)建出一個(gè)獨(dú)立的作用域,不能直接訪問(wèn)外部的變量
//1.在函數(shù)中做一個(gè)聲明
global $siteName;
return $siteName;
//私有變量
/* $local = 'hello php.cn';
return $local; */
}
echo getInfo();
<?php
error_reporting(E_ALL);
$siteName='$GLOBALS超全局變量';
function getInfo(){
return $GLOBALS['siteName'];
}
echo getInfo();
<?php
$siteName='$GLOBALS超全局變量';
echo '<pre>'.print_r($GLOBALS,true).'<pre>';
//在全局中創(chuàng)建的變量,會(huì)自動(dòng)成為超全局?jǐn)?shù)組$GLOBALS中的一個(gè)元素
<?php
echo $_SERVER['SCRIPT_NAME'];//包含當(dāng)前腳本的路徑
echo $_SERVER['SCRIPT_FILENAME'];//當(dāng)前執(zhí)行腳本的絕對(duì)路徑
echo $_SERVER['REMOTE_ADDR'];//瀏覽當(dāng)前頁(yè)面的用戶的 IP 地址
echo $_SERVER['REMOTE_HOST'];//當(dāng)前運(yùn)行腳本所在的文檔根目錄
常量是一個(gè)簡(jiǎn)單值的標(biāo)識(shí)符(名字)。如同其名稱所暗示的,在腳本執(zhí)行期間該值不能改變(除了所謂的魔術(shù)常量,它們其實(shí)不是常量)。常量默認(rèn)為大小寫(xiě)敏感。傳統(tǒng)上常量標(biāo)識(shí)符總是大寫(xiě)的。
合法的常量名以字母或下劃線開(kāi)始,后面跟著任何字母,數(shù)字或下劃線。
可以用 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)定義常量。
<?php
//查看當(dāng)前有哪些可用的常量
print_r(get_defined_constants(true));
<?php
//查看當(dāng)前有哪些可用的常量
//print_r(get_defined_constants(true));
//查詢用戶自定義常量
//兩種方式創(chuàng)建常量
//關(guān)鍵字const
const APP_PATH = '/WEB';
//函數(shù)define
define('APP_NAME','客戶管理系統(tǒng)');
//查詢用戶自定義的常量
print_r(get_defined_constants(true)['user']);
<?php
const APP_PATH;
//函數(shù)define
define('APP_NAME','客戶管理系統(tǒng)');
//查詢用戶自定義的常量
print_r(get_defined_constants(true)['user']);
<?php
const APP_PATH = '客戶管理系統(tǒng)';
$name = 'APP_PATH';
echo $name.'<br>';
echo constant($name).'<br>';//要訪問(wèn)到常量的值必須用constant()
//定義一個(gè)特殊的常量
define('','admin@php.cn');
echo '';
echo constant('');
<?php
//預(yù)定義常量
echo '版本號(hào):' . PHP_VERSION . '<br>';
echo '操作系統(tǒng):' . PHP_OS_FAMILY . '<br>';
echo '最大整數(shù):' . PHP_INT_MAX . '<br>';
echo '最大浮點(diǎn)數(shù):' . PHP_FLOAT_MAX . '<br>';
echo '目錄分隔符:' . DIRECTORY_SEPARATOR . '<br>';
<?php
echo '當(dāng)前行號(hào):' . __LINE__ . '<br>';
echo '當(dāng)前文件:' . __FILE__ . '<br>';
echo '當(dāng)前目錄:' . __DIR__ . '<br>';
<?php
//error_reporting(E_ALL);
//全局空間中的成員,不允許重復(fù)定義
//const APP_PATH = '/phpstudy_pro';
//const APP_PATH = '/public';
//其實(shí)類與函數(shù)也是全局成員,也不允許重復(fù)定義
//全局成員:常量,類,函數(shù),接口
namespace ns1{
const APP_PATH = '/WEB';
}
namespace ns2{
const APP_PATH = '/public';
}
namespace{
echo \ns1\APP_PATH,"<br>";
echo \ns2\APP_PATH,"<br>";
}
//命名空間:解決了全局成員的命名沖突問(wèn)題
<?php
//變量過(guò)濾器
foreach(filter_list() as $filter){
echo $filter . ' => ' . filter_id($filter) . '<br>';
}
<?php
//1.過(guò)濾單個(gè)變量filter_var()
$age = 80;
//filter_var(要過(guò)濾的變量,過(guò)濾器常量)
$options = ['options' => ['min-range' => 18,'max_range' => 60]];
var_dump(filter_var($age,FILTER_VALIDATE_INT,$options));
echo '<hr>';
$email = 'admin@php.cn';
//var_dump(filter_var($email,FILTER_VALIDATE_EMAIL));
var_dump(filter_var($email,274));
<?php
//驗(yàn)證多個(gè)變量filter_var_array()
$a = 10;
$b ='php';
$arr = [$a,$b];
var_dump(filter_var_array($arr,FILTER_VALIDATE_INT));
//外部變量
//通常通過(guò)http請(qǐng)求發(fā)送過(guò)來(lái)的,表單,get,post
//使用GET參數(shù)演示外部變量的獲取與驗(yàn)證/過(guò)濾
//filter_input(輸入類型get/post,變量名,過(guò)濾器,參數(shù))
echo 'id = ' .$_GET['id'];
$options = ['options' => ['min_range' => 1]];
var_dump(filter_input(INPUT_GET,'id',FILTER_VALIDATE_INT,$options));
//同時(shí)驗(yàn)證多個(gè)外部變量
$args = [
'username' => FILTER_SANITIZE_STRING,
'email' => FILTER_VALIDATE_EMAIL,
'age' => ['filter' => FILTER_VALIDATE_INT,'options' => ['min_range'=>18,'max_range'=>60]],
'blog' => FILTER_VALIDATE_URL
];
var_dump(filter_input_array(INPUT_GET,$args));
全局作用域,函數(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ì)路徑。 |
常量通常是大寫(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ù)常量 | 釋義 |
---|---|
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)前文件的命名空間的名稱。 |
filter_var(要過(guò)濾的變量,過(guò)濾器常量),過(guò)濾一個(gè)變量
filter_var_array 過(guò)濾多個(gè)變量
filter_input(輸入類型get/post,變量名,過(guò)濾器,參數(shù)) 過(guò)濾單個(gè)外部變量
filter_input_array — 過(guò)濾多個(gè)外部變量
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)