博客列表 >超全局变量与命名空间

超全局变量与命名空间

手机用户1631860753
手机用户1631860753原创
2021年10月30日 22:51:01516浏览

一.超全局变量

  • 因为我们需要长久保存数据的功能,并且这个数据能在不同的页面中被访问并且加载出来,所有我们需要用到超全局变量
  • cookie 是把数据存在浏览器上,存在用户电脑上

  • $_COOKIE 超全局变量,服务器对用户访问的跟踪手段

  • 直接用$_COOKIE 超全局变量数组,存进去的数据不能在其他页面访问
  • $_COOKIE 只能用来获取,存进去的都是临时的
  1. $_COOKIE[name] = '路飞'; // 临时储存为名字是路飞
  2. print_r(#_COOKIE); // 只能在自己的域名下才能访问
  • setcookie 可以把数据存进超全局变量中,
  • setcookie 有两个参数,第一个参数是下标,第二个参数是值
  • setcookie 第一次是存,获取不到数据,只有第二次刷新才能获取到数据
  1. setcookie('name','山治'); // 两个参数,第一个是下标.第二个是值
  2. print_r($_COOKIE); // 需要刷新两次,第一次是储存进去,不能获取值,第二次才能获取值
  • cookie 只能在自己的域名下才能访问
  • setcookie 的值可以被覆盖,没有时间限制,但是我们可以设置过期时间,
  • 过期时间: 时间戳 + 要存放的时间 ,是秒
  1. setcookie('name','索隆',time() + 60*60*12); // 第三个参数是就是设置过期时间, 现在设置的是12个小时后过期
  • 还可以进行数组存放
  1. setcookie('php[id]',18);
  2. setcookie('php[name]','路飞');
  3. setcookie('php[email]','lufei@php.cn'); // 存放数组
  • 删除cookie
  1. setcookie('php[id]','',time() - 100); // 马上删除 id
  2. setcookie('php[name]','',time() - 100); // 马上删除 name
  3. setcookie('php[email]','',time() - 100); // 马上删除 email

2. SESSION

  • $_SESSION 超全局变量数组
  • $_SESSION 是存在服务器上的
  • session_start() 开启一个SESSION会话

session_start(); // 开启一个SESSION会话

  • 添加和设置
  1. $_SESSION['id'] = 20;
  2. $_SEESION['name'] = '龙';
  3. $_SESSION['email'] = 'long@php.cn'; //可以直接这样添加数据
  • 修改数据
  1. $_SESSION['id'] = 24;
  2. // 更改id 改为24
  • 删除
  1. unset($_SESSION['id']); // 删除session 的 id
  2. session_unset(); // 全清空,但是服务器会把之前session 生成的文件保留下来
  3. session_destro(); // 这个是把服务器上的文件也删除
  • 获取session的数据
  1. echo session_id();
  2. // 获取当前session的 id,并且是加密保存的
  3. // 一个用户就相当于一个 id

1.cookie数据是存在用户电脑,session数据是存在服务器上

2.cookie浏览器储存有限,session存在服务器上是没有限制的(容量大)

3.session 基于cookie, cookie会保存session的id

4.session 和 cookie 是不分离的

一.命名空间

  • PHP不能有重复的函数,变量和类;

  • 命名空间关键词: namespace

  • 用了namespace 后下面的函数都是这个命名空间的
  • 命名空间:采用了目录结构方式
  • windows:不能有重复名字的文件,并且不能有重复名字的目录,但是文件名和目录名重名没事
  • 有括号{}的和没有括号的命名空间不能同时用
  • 命名空间要访问其他空间的函数,需要带上目录结构
  • 除了函数不能重名外,还有变量,类,命名空间也不能重名
  • 我们一般的代码都是一个文件,一个类,一个命名空间,所以之后我们都是 ; 号结束的多
  • 命名空间,要放在代码的第一行,但是可以放在严谨函数之后: 严谨函数: declare

  • 命名空间

  1. namespace a {
  2. $name = 'A';
  3. function php()
  4. {
  5. return 'A';
  6. }
  7. class A
  8. {
  9. }
  10. }
  11. namespace b {
  12. $name = 'B';
  13. function php()
  14. {
  15. return 'B';
  16. }
  17. class B
  18. {
  19. }
  20. echo php(); // 输出本空间的值
  21. echo '<hr>';
  22. echo \a\php(); // 访问a 空间,输出值 A
  23. }
  24. // 子命名空间
  25. namespace a\s {
  26. $name = 'S';
  27. function S()
  28. {
  29. return 'S';
  30. }
  31. }
  32. // 什么都不加,默认是根空间
  33. namespace {
  34. echo \a\s\s(); // 输出子命名空间里的值
  35. }
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议