超全局变量 GLOBALS
$username1= 'Davy';
echo '<pre>' . print_r($GLOBALS['username1']). '</pre>' .'<hr>';
function getInfo() : string
{
// 方法1
global $username1;
$username2= $username1;
// 方法2
$username2 = $GLOBALS['username1'];
return $username2;
}
echo getinfo();
echo '<hr>';
namespace n1;//命名空间
function test1() : float
{
// 私有变量
$sum = 0;
$sum =$sum+ 1;
return $sum;
}
echo test1();
echo test1();
echo test1();
echo '<hr>';
namespace n2;
$sum = 0;//全局变量
function test2() : float
{
global $sum;
$sum =$sum+ 1;
return $sum;
}
echo test2();
echo test2();
echo test2();
echo '<hr>';
namespace n3;
function test3() : float
{
//局部静态变量 , 推荐使用这种
static $sum = 0 ;
$sum =$sum+ 1;
return $sum;
}
echo test3();
echo test3();
echo test3();
echo '<hr>';
// 变量的本质是数据共享
// 函数的本质是代码共享
// foreach()是用来遍历数据的
foreach(filter_list() as $filter) {
echo $filter . '====>' . filter_id($filter).'<br>';
}
echo '<hr>';
$age = 30;//它会自动转化为字符串$age = '30';
$age = '30';
$age = 200;//超过设置大小的范围,就是false
var_dump(filter_var($age,FILTER_VALIDATE_INT , ['options'=>['min_range'=>18,'max_range'=>60]]));
echo '<hr>';
$email = '123456@qq.com';
$email = '123456@';//非法邮箱,显示false
//var_dump(filter_var($email,FILTER_VALIDATE_EMAIL));
var_dump(filter_var($email,274));//用ID来代替FILTER_VALIDATE_EMAIL,是一样的
echo '<hr>';
// 数组过滤单个变量filter_var_array()
var_dump(filter_var_array([100,'php'],FILTER_VALIDATE_INT));
echo '<hr>';
// INPUT_GET: 表示要检测的是$_GET,就是get参数,其实就是get请求
// INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, INPUT_ENV
var_dump(filter_has_var(INPUT_GET,'p' ));
echo 'get变量p='. $_GET['p'];
echo '<hr>';
var_dump(filter_input(INPUT_GET,'p',FILTER_VALIDATE_INT,['options'=>['min_range'=>1]]));
echo filter_input(INPUT_GET,'p',FILTER_VALIDATE_INT,['options'=>['min_range'=>1]]) ? '页码正确' : '页码错误';
echo '<hr>';
//同时验证多个外部变量: 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]],
'blog' => FILTER_VALIDATE_URL,
];
var_dump(filter_input_array(INPUT_GET,$args));
print_r(get_defined_constants());
define('APP_PATH', __DIR__.'\app\admin');
// echo APP_PATH;
print_r(get_defined_constants(true)['user']);
echo '<hr>';
// 定义常量
define('STUDENT', '麦穗');
const COURSE = 'PHP' ;
//常量不受作用域限制
function test1(){
echo STUDENT . '学:' . COURSE . '<br>';
// define可以用于函数中,const不行
define('SEX' , '男');
echo SEX;
}
test1();
echo '<hr>';
// define可以用于流程控制中,const不行
if(true){
define('AGE', 18);
echo AGE;
}
echo '<hr>';
// const可以用在类常量中 , define不行
class Demo{
const HELLO= '你好!';
}
echo Demo::HELLO.'<br>';
echo '<hr>';
// 常量通常只允许标量进行初始化
const DB_LINKS = [
'host'=>'localhost',
'username'=>'root',
'password'=>'root',
'charset'=>'utf8',
];
echo '<pre>'.print_r(DB_LINKS,true).'</pre>';
echo '<hr>';
/constant()
$constantName = 'STUDENT';
echo constant($constantName);
echo '<hr>';
define('USER_NAME' , '我也是常量1');
define('' , '我也是常量2');
echo USER_NAME;
echo ''; //空字符串是一个正确的常量,但是打印不出来,要用constant()
echo constant('');
echo '当前行号:' . __LINE__ . '<br>';
echo '当前文件:' . __FILE__ . '<br>';
echo '当前目录:' . __DIR__ . '<br>';
function hello(){
echo __FUNCTION__;//当前函数名
}
hello();
echo '<br>';
class D{
public function index(){
echo __METHOD__;//当前类方法名称
}
}
(new D)->index();
还是需要继续下功夫,C语言会一点,好像和C语言差别有点大,不过没事,我喜欢接触新的知识,每天学习一点,希望在3个月后会有新的突破