abstract:本章小结问题:PHP不支持块级作用域会引发哪些问题?应该如何避免呢?答案:引发的问题主要是后面的同名变量可能会覆盖前面的变量。在PHP语法层面没有太好的办法避免,只能尽量保证变量命名的规范性来减少变量同名覆盖的问题。还有从编码方法上,尽量不要让一个方法的代码长度过长(一般不超50行),这样一眼基本上能看到方法中的所有变量,排查变量同名比较方便。本章小结1. &nb
本章小结问题:PHP不支持块级作用域会引发哪些问题?应该如何避免呢?
答案:引发的问题主要是后面的同名变量可能会覆盖前面的变量。在PHP语法层面没有太好的办法避免,只能尽量保证变量命名的规范性来减少变量同名覆盖的问题。还有从编码方法上,尽量不要让一个方法的代码长度过长(一般不超50行),这样一眼基本上能看到方法中的所有变量,排查变量同名比较方便。
本章小结
1. PHP的变量该定义在哪;
变量可以在三个地方定义,在函数内部定义为局部变量,在函数外部:定义为全局变量,在函数参数列表定义为局部变量。
局部变量在函数内部定义,函数内部定义的变量仅限在函数内部访问,函数外部不可见。全局变量在函数外部定义,在函数中不能直接访问全局变量,但是在函数外部可以直接访问。在函数参数列表中声明的变量也是局部变量,这个变量是一个占位符,实际上在函数内部是通过另一个函数来获取到列表变量值的所以函数内部,实际上还是初始化了一个局部变量,所以说,参数列表中声明的变量也是一个局部变量。
2. 如何在函数中访问全局变量;
在函数中访问全局变量首先使用global关键字访问,也可以使用$GLOBALS超全局变量访问,还可以使用函数传参的方式访问。
超全局变量,其实也是全局变量,只是不需要用户定义,而是由系统事先定义好的,用户可以直接使用。函数外部定义的全局变量,会自动成为超全局变量$GLOBALS数组中的一个值,数组是用一个变量集合,使用键名来访问内部的变量。
3. PHP变量的类型;
1. 标准变量: 单值变量,整数,浮点数,布尔,字符串;
2. 复合类型: 数组和对象;
数组是指多个变量的集合,通过变量在集合中的索引来访问数组,索引是从0开始计数。对象是内部封装了属性和方法的抽象类型,属性相当于变量,方法相当于函数。
3.特殊类型: NULL, 资源类型;
4. 创建和使用作用域;
函数可以创建一个作用域,变量的访问收到作用域的影响。全局作用域,就是从脚本的运行,直到这个脚本被关闭,都是有效的,贯穿整个程序的生命周期。php中只有函数作用域,只要声明一个函数就会创造出一个作用域。作用域,就是定义变量的地方,函数外定义的变量是全局作用域,函数作用域内的变量仅限于函数内访问,系统预定义变量不受作用域的限制。
5. 什么是常量?如何正确使用常量
1.常量的定义: define()和const
1.常量其实就是只读变量,一旦定义,不允许再赋值,更不允许删除,特别适合于数据相对固定的数据,例如国籍,品牌等;
2.常量与超全局变量一样不受作用域的限制,可以在函数中直接访问;
3.常量不要用$开头,推荐全部使用大写字母,多个单词之间推荐使用下划线进行连接;
4.常量只能通过define()函数定义,而不能通过赋值语句;
5.常量必须使用标量进行初始化:字符串,数值,布尔值; 6.常量也指的是只读变量。不能修改,不能删除。
2.常量的作用域: 类似预定义变量,在函数中不用声明,可以直接使用;
3. define()声明的常量,可以使用标量或值为标量的变量表达式, const只能使用标量字面量const 可以声明类常量,define()不可以define()声明的常量,不受命名空间的限制,const则依赖于类,类依赖于命名空间。
Correcting teacher:天蓬老师Correction time:2019-03-22 09:00:48
Teacher's summary:所谓全局变量, 它的性质与常量是一样的, 就是不受作用域限制,在函数中使用的时候,需要套个马甲就行