欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

COOKIE SESSION 与初识命名空间

程序员文章站 2022-03-13 12:33:41
...

COOKIE SESSION 与初识命名空间

  • cookie 适用于处理我们需要长久保存数据的功能,且该数据在不同页面都可以加载出来
  • 使用 cookie 功能会用到$_COOKIE 超全局变量数组,它是服务器对用户访问的跟踪手段
  • 但是,$_COOKIE 直接存入的变量无法在其他页面直接访问
  • 设置 cookie 需要用到 setcookie()方法,setcookie 方法有两个参数,第一个是下标,第二个是值
  • setcookie()方法第一次运行是在 Set-Cookie 中存储数据,第二次运行 Cookie 才能获取数据(即页面需要刷新)
  • cookie 需要注意,得是在同一域名下的页面,才能访问到
  • cookie 可以重复设置下标的值,已达到覆盖的效果
  • setcookie 还有第三个参数,即设定过期时间,具体为当前时间戳 time()+要存放的时间(秒)
  • cookie 下标与值的删除:cookie 的删除有两种方法,第一种是设置要存放的时间为负数,即可删除,第二种是给 cookie 的变量重新赋一个空值,也可以做到删除的效果
  • setcookie 除设置下标跟值意外,还可以设置一个数组
  • setcookie 设置数组后,数组里信息的删除,需要逐个删除
  1. // 设置cookie,一小时后过期
  2. setcookie('uname','admin',time()+3600);
  3. //重新给cookie赋值
  4. setcookie('uname','admin666',time()+3600);
  5. // 删除cookie
  6. setcookie('uname','admin',time()-1);
  7. setcookie('uname',null);
  8. // 或
  9. setcookie('uname');
  10. //设置cookie为数组
  11. setcookie('info[name]','admin');
  12. setcookie('info[gender]','male');
  13. setcookie('info[age]','18');
  14. // 销毁整个数组的缓存
  15. if(!empty($_COOKIE['info'])){
  16. foreach($_COOKIE['info']as$key=>$value){
  17. setcookie("info[{$key}]");
  18. }
  19. }else{
  20. echo '该缓存不存在';
  21. }
  22. echo '<pre>';
  23. print_r($_COOKIE);

SESSION

  • 除了 cookie,我们还可以使用 session 来保存数据,session 与 cookie 的不同之处在于 cookie 是存在浏览器中的,session 是存在我们的服务器上的
  • 与 cookie 类似,session 也有一个超全局变量数组$_SESSION
  • session 使用之前需要使用 session_start()来开启一个 session 会话
  • session 的设置是直接用$_SESSION[\’下标\’]=\’值\’;的方式来添加跟修改的
  • session 的单个删除有 unset()
  • session 的全部删除有 session_unset();跟 session_destroy();两种,前者只会清空 session 的内容,但是之前创建的 session 文件还会保留下来,后面的 session_destroy()是可以直接销毁 session 文件的
  • 每个用户生成的 session 文件都有一个 id,这个 id 与文件名里的 id 一致,可以使用 session_id()获取
  1. session_start();
  2. // $_SESSION['uname'] = 'admin';
  3. // $_SESSION['gender'] = 'male';
  4. // $_SESSION['age'] = 18;
  5. // $_SESSION['id'] = 1;
  6. echo '<pre>';
  7. print_r($_SESSION);
  8. echo '<hr>';
  9. //获取session文件id
  10. echo session_id();
  11. // 删除单个下标
  12. unset($_SESSION['id']);
  13. //清空session文件内容
  14. session_unset();
  15. //删除session文件
  16. session_destroy();

命名空间

  • 命名空间是用来解决命名冲突的问题,比如相同变量名的两个变量的值会被覆盖,函数的函数名不能重名,使用命名空间就能很好的解决这两个问题。
  • 命名空间使用 namespace 关键字来声明
  • 命名空间的声明必须在除严谨函数 declare 外正式代码第一行(注释不算)
  • 命名空间的规范也是一个文件一个命名空间
  • 命名空间的声明方法一般有两种,一个是 namespace 空间名;另一种是 namespace 空间名{}
  • 两种命名空间的声明方法只能同时用一种,不能两种混用
  • 命名空间的使用采用了目录结构的方式
  • 在本命名空间使用其他命名空间的内容时,路径必须以\开头
  • 子命名空间使用父命名空间名+\+子命名空间的方式来命名
  1. // 声明one命名空间
  2. namespace one;
  3. function demo(){
  4. return 'one\'s demo';
  5. }
  6. echo demo();
  7. echo '<hr>';
  8. // 声明two命名空间
  9. namespace two;
  10. function demo(){
  11. return 'two\'s demo';
  12. }
  13. echo demo();
  14. echo '<hr>';
  15. echo \one\demo();
  16. echo '<hr>';
  17. echo '<hr>';
  18. // 声明one命名空间的子命名空间one_1
  19. namespace one\one_1;
  20. function demo(){
  21. return 'one_1\'s demo';
  22. }
  23. echo demo();
  24. echo '<hr>';
  25. echo \one\demo();
  1. // 声明one命名空间
  2. namespace one {
  3. function demo()
  4. {
  5. return 'one\'s demo';
  6. }
  7. echo demo();
  8. echo '<hr>';
  9. }
  10. // 声明two命名空间
  11. namespace two {
  12. function demo()
  13. {
  14. return 'two\'s demo';
  15. }
  16. echo demo();
  17. echo '<hr>';
  18. }
  19. //什么都不加默认是根空间
  20. namespace {
  21. echo \one\demo();
  22. echo '<hr>';
  23. echo \two\demo();
  24. }