国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > php教程 > php全局变量之学习笔记

php全局变量之学习笔记

来源:程序员人生   发布时间:2014-03-16 02:39:48 阅读次数:4027次

今天我们参考php官方对php全局变量介绍来理解一下php全局变量一些用法与自己对它的一些思考吧,现在分享出来希望对各位同学有帮助。

一、核心要点思考:

1. 哪些全局变量是过期的及如何处理?

如:unset($GLOBALS, $_ENV, $HTTP_GET_VARS, $HTTP_POST_VARS,        $HTTP_COOKIE_VARS, $HTTP_SERVER_VARS, $HTTP_ENV_VARS);

2. 哪些全局变量有命令行下是无效的?

3. htmlspecialchars()用法, 为什么要用它?

4. $_REQUEST和 $_GET, $_POST,$_COOKIE的联系与区别?

5. 为什么上传了文件但$_FILES变量不存在或为空?

6. 全局变量的作用域?

7. 我想取得用户的IP和浏览器的user_agent信息, 如何取?

8. 我没有用浏览器, 我是 socket编程? 如何保持session?

9. 如何取得headers信息?

php九大全局预定义数组

超全局变量 — 超全局变量是在全部作用域中始终可用的内置变量

$GLOBALS — 引用全局作用域中可用的全部变量

$_SERVER — 服务器和执行环境信息

$_GET — HTTP GET 变量

$_POST — HTTP POST 变量

$_FILES — HTTP 文件上传变量

$_REQUEST — HTTP Request 变量

$_SESSION — Session 变量

$_ENV — 环境变量

$_COOKIE — HTTP Cookies

$php_errormsg — 前一个错误信息

$HTTP_RAW_POST_DATA — 原生POST数据

$http_response_header — HTTP 响应头

$argc — 传递给脚本的参数数目

$argv — 传递给脚本的参数数组

二、主要问题

PHP基础篇总结题目:

1. var_dump(0=="ads");请问该条语句结果是怎样的?为什么?

答:此语句结果为true;

此表达式中右侧的字符串默认强制转换为int数据0,与左侧数据相同,所以输出true,如果是“===”,则会输出false,这是因为他们类型不同,值也不同,在这里不会强制转换。

点评:这个真不好说, 测试一下吧! var_dump()打印表达式的结果! 这个实际考的是表达式运算。

2.异常可以被克隆吗?

答:不可以。

3.PHP中 Traits有什么特性?

答:Traits (横向重用/多重继承)是一组结构很像类的方法,但它但不能实例化,它可以让开发人员在不同的类中轻松地重用方法;

Traits的最佳应用是多类之间可以共享相同的函数;静态变量可以被 trait 的方法引用,但不能被 trait 定义。但是 trait 能够为使用的类定义静态方法;如果 trait 定义了一个属性,那类将不能定义同样名称的属性,否则会产生一个错误;

总结:提的问题好,回答的也挺好

1、有哪些超全局变量?答:超全局变量:$GLOBALS、$_SERVER、$_GET、$_POST、$_FILES、$_COOKIE、$_SESSION、$_REQUEST、$_ENV

2、浏览器把cookie给禁用了,$_SESSION还能用吗? 答:不能用了

点评:答错了, 能用! apache有自动的功能将session_id放在get参数。

3、$php_errormsg在什么时候都可用吗?答:不是,这个变量只在错误发生的作用域内可用,并且要求track_errors配置项是开启的(默认是关闭的)。

总结:很积极,回答能够在丰满一点比较好

有个人性化的面试问题

写30个php字符串函数。

实例如下:

  1. trim()      去掉字符串中的空格 
  2.     chop()        从右向左,删除指定字符  ,参数  rtrim(string,find); 
  3.     rtrim()     从右向左,删除指定字符  ,参数  rtrim(string,find); 
  4.     chr()       返回字符的 asc2 码 
  5.     var_dump()    打印一个值,可以是任何形式,并返回值的属性 
  6.     print()        打印数组或字符串 
  7.     print_r()     把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示 
  8.     chunk_split()    把字符串分割为一连串更小的部分 
  9.     implode()    把数组元素组合为一个字符串 
  10.     join()        把数组元素组合为一个字符串 
  11.     explode()    把字符串分割成数组 
  12.     md5()        返回一个md5值,不可逆 
  13.     strlen()    获取一个字符串的长度 
  14.     str_replace    替换字符串中的一些字符 
  15.     mb_substr    mb扩展的截取字符串函数,格式:       
  16.     mb_substr(string,start_Num,end_Num,'utf-8') 
  17.     str_split     将一个字符串按照字符间距分割为一个数组 
  18.     strpos         查找并返回首个匹配项的位置 
  19.     strtr        转换字符串中特定的字符 
  20.     substr         对字符串进行截取 
  21.     substr_count     计算字符串中某字符段的出现次数 
  22.     substr_replace  对字符串中的部分字符进行替换 
  23.     wordwrap    函数按照指定长度对字符串进行折行处理 
  24.     addcslashes()    在指定的字符前添加反斜杠 
  25.     strtolower()    把字符串转换为小写 
  26.     strtoupper()    把字符串转换为大写 
  27.     strrev()    反转字符串 
  28.     strripos()    查找字符串在另一字符串中最后出现的位置(大小写不敏感) 
  29.     strrpos()    查找字符串在另一字符串中最后出现的位置(大小写敏感) 
  30.     strspn()    返回在字符串中包含的特定字符的数目 
  31.     ucwords()    把字符串中每个单词的首字符转换为大写 
  32.     str_repeat()    把字符串重复指定的次数 

1、命名空间必须是程序脚本的第一条语句吗?

答案:yes

2、如何取消引用?

答案:unset();

3、如果一个类,它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象类吗?继承一个抽象类的时候,子类必须定义父类中的所有抽象方法吗?

答案:如果一个类中有抽象方法,类必须定义为抽象类,继承一个抽象类时,子类必须定义父类中的所有抽象方法。

1.如何得到文件的绝对路径

使用realpath() 函数,返回绝对路径名。若失败,则返回 false,比如说文件不存在。

echo realpath("test.txt");

输出:C:wwwtestwebtest.txt

2.session的工作原理

session保存在服务端,但会以cookie的形式保存在客户端一个sessionid,如果禁用cookie,就需要用get方法的URL重写的机制或使用POST方法提交隐藏表单的形式来实现。

点评: 是这个原理, 但一般有web服务器会自动完成这个功能, 不需要在程序中添加。

3.public static声明的函数是静态方法吗?

public static声明的函数是静态方法,可以直接在类外用,类名::函数名的方法调用 不用采用NEW声明的方式

注意:函数内不能有动态内容 如$this->之类的,一般来说 需要频繁执行的内容 用STATIC声明

总结:session的工作原理整理的很好,分析很透彻。希望以后积极点,继续努力

  
 
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生