变量
1.变量作用
全局作用域 |
函数之外的变量生效范围 |
函数作用域 |
使用 function 关键字创建的作用域 |
php 中没有块作用域的概念, 这与其它编程语言不同, 根据作用域不同, 变量可以分为三类:
序号 |
变量类型 |
描述 |
1 |
私有变量 |
函数中定义的变量 |
2 |
全局变量 |
函数之外定义的变量 |
3 |
超全局变量 |
也叫预定义变量,访问不受作用域限制 |
//全局作用域
$sitName = 'php中文网';
//声明函数:同时也创建一个函数作用域
function getInfo () : string
{
//在函数中无法访问全局作用域中的变量
// $private = $sitName;
//1.可通过关键字 global 声明函数中的私有变量
global $sitName;
//2.使用超全局变量:$GLOBALS
//函数中可以直接访问超全局变量
$private = $GLOBALS['sitName'];
return $private;
}
echo getInfo();
超全局变量,也叫超全局数组,随系统加载,因此在所有脚本中均有定义,全局和函数中都可以访问。
序号 |
变量名 |
描述 |
1 |
$GLOBALS |
引用全局作用域中可用的全部变量 |
2 |
$_SERVER |
服务器和执行环境信息 |
3 |
$_GET |
HTTP GET 请求:通过 URL 参数传递给当前脚本的变量的数组 |
4 |
$_POST |
HTTP POST 请求: 将变量以关联数组形式传入当前脚本 |
5 |
$_FILES |
HTTP 文件上传变量,保存着上传文件的全部信息 |
6 |
$_COOKIE |
通过 HTTP Cookies 方式传递给当前脚本的变量的数组 |
7 |
$_SESSION |
当前脚本可用 SESSION 变量的数组 |
8 |
$_REQUEST |
默认情况下包含了 $_GET ,$_POST 和 $_COOKIE 的数组 |
9 |
$_ENV |
通过环境方式传递给当前脚本的变量的数组 |
全局变量想了解更多请点击
静态变量
Static
作用域当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。要做到这一点,请在您第一次声明变量时使用 static 关键字:
function text3() :float
{
//局部静态变量 只在函数第一次调用的时候初始化,以后不会再被更新了
//静态变量:可以理解为函数中的“伪全局变量”
//实现函数在多次调用的过程中共享数据
static $sum = 0;
$sum = $sum + 1;
return $sum;
}
echo text3().'<br>';
echo text3().'<br>';
echo text3().'<br>';
变量过滤器
PHP过滤器用于验证和过滤来自非安全来源的数据。测试、验证和过滤用户输入或自定义数据是任何 Web 应用程序的重要组成部分。PHP 的过滤器扩展的设计目的是使数据过滤更轻松快捷。
序号 |
函数 |
描述 |
1 |
filter_var() |
通过一个指定的过滤器来过滤单一的变量 |
2 |
filter_var_array() |
通过相同的或不同的过滤器来过滤多个变量 |
3 |
filter_input |
获取一个输入变量,并对它进行过滤 |
4 |
filter_input_array |
获取多个输入变量,并通过相同的或不同的过滤器对它们进行过滤 |
//例一:
$age =30;
//过滤器在验证的时候都是将变量转换成字符串验证的,所以 //$age ='30',也是正确的
$age ='30';
//过滤单个变量 filter_var()
var_dump(filter_var($age,FILTER_VALIDATE_INT);
//例二:
//过滤多个变量filter_var_array()
var_dump(filter_var_array([100,'php'],FILTER_VALIDATE_INT));
//例三:
var_dump(filter_input(INPUT_GET,'p',FILTER_VALIDATE_INT,['options'=>['min_range'=>1]]));
//例四:
//同时验证多个外部变量:filter_input_array()
$args=[
'username'=> FILTER_SANITIZE_STRING,
'email'=>FILTER_VALIDATE_EMAIL,
'age'=> ['filter'=>FILTER_VALIDATE_INT,'flags'=>FILTER_REQUIRE_SCALAR,'options'=>['min_range'=>18,'max_range'=>60]],
'biog'=>FILTER_VALIDATE_URL,
];
var_dump(filter_input_array(INPUT_GET,$args));
例4图解:
常量
1.特征: PHP常量是一个简单值的标识符。该值在脚本中不能改变。一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。
2.设置常量,使用 define() 函数,函数语法如下:
序号 |
参数 |
描述 |
1 |
name |
必选参数,常量名称,即标志符 |
2 |
value |
必选参数,常量的值 |
3 |
case_insensitive |
可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的 |
2. 函数/关键字
序号 |
定义方式 |
描述 |
1 |
get_defined_constants() |
查看系统所有常量 |
2 |
defined() |
检测常量是否存在 |
3 |
define() |
创建常量 |
4 |
const 关键字 |
创建常量 |
5 |
constant() |
获取常量值 |
get_defined_constants(true)
: 常量分组打印,自定义常量在user
分组defined()
: 返回布尔值。
// 不区分大小写的常量名
define("GREETING", "欢迎访问 php.cn");
echo greeting;
//const 关键字定义
const GREETING ='PHP';
//常量不受作用域限制
function test1()
{
//define()可以在函数中使用 ,const不能在函数中使用
define('SEX','男');
echo SEX;
}
test1();
//流程控制中,define能用 ,const不能用
if(true){
define('EMAIL','123@163.COM');
// const EMAIL = '123@163.com';
echo EMAIL;
}
//const 用在类中,创建类常量
class Demo1{
const BBB = '123456@163.com';
}
echo Demo1::BBB;
//常量通常只允许标量进行初始化
//标量:单值变量,字符串,数值,布尔,null
//php7.0支持数组初始化常量
const DB_LINKS =[
'host'=>'localhost',
'username'=>'root',
'password'=>'root',
'charset'=>'utf8',
];
echo '<pre>'.print_r(DB_LINKS,true).'</pre>';
// constant()
define('','其实我也是一个常量');
echo constant('');
//魔术常量
echo '当前行号:'.__LINE__.'<br>';
echo '当前文件:'.__FILE__.'<br>';
echo '当前目录:'.__DIR__.'<br>';
function hello123(){
echo __METHOD__;
}
hello123();
echo '<hr>';
class D {
public function index(){
echo __METHOD__;
}
}
(new D)->index();