设为首页 收藏本站
查看: 645|回复: 0

[经验分享] PHP 第四天

[复制链接]

尚未签到

发表于 2017-3-21 08:12:00 | 显示全部楼层 |阅读模式
  看了几天的书,今天开始动手编程了,发现自已对变量和作用域这方面理解不透,这里做个总结。

  在编程的时候我们总免不了会犯错,调试和查看日志,是两个很重要的方法来帮我们调试程序。在第三天里,我已经安装了xdebug来帮助调试(日志系统还没有时间看,待研究……),这里介绍几个标准输出函数供调试的时候用。




  • echo()  打印一个或多个简单变量或值

  • print()  打印一个简单变量或值

  • printf()  打印一个格式化字符串

  • var_dump()  打印一个变量的类型和内容

  • printf_r()  递归打印一个数组

  • debug_backtrace()  返回一个包含调用栈和其他值的数组
  

  关于变量


  

  全局变量(全局作用域)


  
一个变量如果定义在全局作用域中,它就会在全局作用域中都可见,而在所有函数或类方法中都不可见。打个比方,函数或类方法都是有外壳的,全局变量不够强大,冲不进去,所以没办法使用它们。


<?php
$a = 7;
function test(){
$a = 20; //只可惜,在函数里该问不到全局变量
}
test();
echo "\$a = $a"; // $a = 7
?>
   超全局变量(真正的全局作用域)


  超全局变量就像是超级玛丽吃了无敌药水,连函数和类方法的外壳都可以冲进去了,它是真正的无敌的。到处都可以访问。




  • $GLOBALS  这是一个关联数组,包含全局作用域中所定义各个变量的引用

  • $_SERVER  服务器设置的变量

  • $_ENV  环境变量

  • $_GET  通过URL提供给脚本的变量

  • $_POST 通过HTTP POST提供给脚本的变量

  • $_COOKIE  通过HTTP cookie提供给脚本的变量

  • $_FILE 通过HTTP POST提供给脚本的变量

  • $_REQUEST GET、POST和COOKIE方法提供的所有变量

  • $_SESSION  目前在会话中注册的变量
  如何让全局变量变成超全局变量?


  

  方法一:


<?php
$a = 7;
function test(){
global $a;
$a = 20;
}
test();
echo "\$a = $a";
?>
   增加global $a;这一行,使$a两个变量引用相同的内存,以后再在函数中使用时,仍需global关键字。

  方法二:


<?php
$a = 7;
function test(){
$GLOBALS['a'] = 20;
}
test();
echo "\$a = $a";
?>
 
   

  在超全局变量数组中定义一个变量
  局部变量
  

  

  

  与函数有关的变量(函数作用域)





  • 局部变量


  • 参数变量


  • 静态变量
    这是一个很神奇的东西,它仅在局部函数作用域中存在,且,再次调用函数时还能保留这个值(感觉和JS闭包的功能有点像)。

  • 全局变量(见全局变量)
  与类有关的变量




  • 成员变量/属性
  • 方法
  • 静态变量(用::访问)
  • 静态方法(用::访问)
  • 类常量(用const定义,用::访问)
  
常量

  常量的作用域和超全局作用域是一样的,无敌!
  PHP中使用define()函数来定义一个常量的,其语法格式为:
  bool defined(string $name, mixed $value [, bool case_$insensitive]
  name:指定常量的名称
  value:指定常量的值
  insensitive:指定常量名称是否区分大小写,ture(不区分),false(区分),默认false。
  常量和变量的有一个区别是:常量只能保存标量数据(字符串,布尔值,整数,浮点数)。
  系统预定义常量(并非是真正的常量,因为这些所谓的常量会根据使用的场合改变值)


  • __FILE__  当前文件名
  • __LINE__  当前行号
  • __FUNCTION__  当前函数名
  • __CLASS__  当前类名
  • __METHOD__  当前方法名
  • PHP_VERSION 存储当前PHP的版本号
  • PHP_OS 存储当前服务器的操作系统


  作用域
  作用域是指在一个脚本中某个变量可以使用或可见范围。


  • 内置的超级全局变量可以在脚本的任何地方使用和可见。
  • 常量,一旦被声明,将可以在全局可见,也就是说,他们可以在函数内外使用。
  • 在一个脚本中声明的全局变量在整个脚本中是可见的,但不是在函数内部。
  • 函数内部使用的变量声明全局变量时,其名称要与全局变量名称一致。
  • 在函数内部创建并被声明为静态的变量无法在函数外部可见,但是可以在函数的多次执行过程中保持该值。
  • 在函数内部创建的变量对函数来说是本地的,而当函数终止时,该变量也就不存在了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-352709-1-1.html 上篇帖子: PHP section循环 下篇帖子: php批量上传
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表