函数作用域,静态变量,过滤器,常量的知识点
1.函数作用域
- 全局变量要在函数中使用,要使用
$GLOBALS
或global
关键字
序号 |
分类 |
解释 |
1. |
全局作用域 |
指不在函数的作用范围 |
2. |
局部作用域 |
指在函数的作用范围 |
<?php
$siteName = 'PHP中文网';
//超全局变量不受作用域限制,当前脚本的任何地方都能使用
//全局变量自动注册为超全局变量$GLOBALS的一个值
//超全局变量不需要赋值,不需要初始化
function getInfo()
{
global $siteName;
// return $siteName;
return $GLOBALS['siteName'];
}
echo getInfo();
echo '<br> ', $_SERVER['SCRIPT_NAME'];
2.静态变量
<?php
function sum()
{
// $total = 0;
//静态变量,进行数据共享
static $total = 0;
$total++;
return $total;
}
echo sum(), '<br>';
echo sum(), '<br>';
echo sum(), '<br>';
/*
变量的本质是数据共享
函数的本质是代码共享
*/
3.过滤器
<?php
//变量过滤器,用来安全的过滤和获取数据
foreach (filter_list() as $filter) {
echo $filter, '===>', filter_id($filter), '<br>';
}
echo '<hr>';
//变量的单一过滤
//整数
var_dump(filter_var(26, FILTER_VALIDATE_INT, ['options' => ['min_range' => 0, 'max_range' => 150]]));
echo '<br>';
//邮箱
var_dump(filter_var('476300668@qq.com', FILTER_VALIDATE_EMAIL));
echo '<br>';
//真假
var_dump(filter_var(true, FILTER_VALIDATE_BOOLEAN));
echo '<br>';
//浮点数
var_dump(filter_var(3.14, FILTER_VALIDATE_FLOAT));
echo '<br>';
//url
var_dump(filter_var('http://www.php.net', FILTER_VALIDATE_URL));
echo '<br>';
//ip
var_dump(filter_var('127.0.0.1', FILTER_VALIDATE_IP));
echo '<br>';
//字符串
var_dump(filter_var('string', FILTER_SANITIZE_STRING));
echo '<br>';
//过滤规则也可以用id表示
var_dump(filter_var('476300668@qq.com', 517));
echo '<br>';
//多个变量过滤
var_dump(filter_var_array([100, 'apple'], FILTER_VALIDATE_INT));
echo '<br>';
//查看是否有外部变量
var_dump(filter_has_var(INPUT_GET, 'page'));
echo '<br>';
//过滤单一外部变量
var_dump(filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT, ['options' => ['min_range' => 0, 'max_range' => 100]]));
echo '<br>';
//过滤多个外部变量
var_dump(filter_input_array(INPUT_GET, ['page' => FILTER_VALIDATE_INT, 'keywords' => FILTER_SANITIZE_STRING]));
4.常量
<?php
//系统常量
//print_r(get_defined_constants());
//分组打印系统常量
//print_r(get_defined_constants(true));
//创建常量
define('APP_PATH', '/app/admin');
print_r(get_defined_constants(true)['user']);
echo '<br>', APP_PATH;
//const创建常量
const COUNTRY = 'China';
echo '<br>', COUNTRY;
//constant()也可以获取变量
echo '<br>', constant('COUNTRY'), '<br>';
//检测常量是否存在
var_dump(defined('COUNTRY'));
function test()
{
//函数中不可以使用const来定义常量
// const A = 'a';
}
test();
class Test
{
//类中不可以使用define()来定义常量
//define('A','a');
}
<?php
namespace name;
//预定义常量
echo 'PHP版本:', PHP_VERSION, '<br>';
echo '最小整数:', PHP_INT_MIN, '<br>';
echo '最大整数:', PHP_INT_MAX, '<br>';
echo '最小浮点数:', PHP_FLOAT_MIN, '<br>';
//魔术常量,也属于预定义常量,根据代码位置的不同,动态改变
echo '当前行号:', __LINE__, '<br>';
echo '完整的路径和文件名:', __FILE__, '<br>';
echo '文件所在目录:', __DIR__, '<br>';
function test()
{
return __FUNCTION__;
}
echo test(), '<br>';
class Test
{
public function method()
{
return __METHOD__;
}
}
echo (new Test)->method(), '<br>';
echo __NAMESPACE__;
5.总结
- 这些都是PHP的基础语法,而且在开发中也很常见
- 只有打好基础,才能学好程序