PHP的基础知识(二)
在OOP编程中,有一些基本的概念容易弄错或者混淆,在这里也记录一下。
1. static关键词
static可以用来声明类属性或方法,但是不能用来声明类,静态属性和方法都是属于类的。静态属性不能通过对象访问,但静态方法可以通过对象访问。
(1) 静态变量
静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直到整个程序运行结束。
(2) 用static关键词修饰的成员属性
保存在静态内存区,在首次被访问的时候,就被加载到静态内存区,优点是速度快、节省内存空间。
在类外访问:类名称::静态成员属性($一定不要忘记)
在类里面访问:self::静态成员属性($一定不要忘记)
说明:被static静态化的成员属性值是可以改的,而常量不可以
(3) 用static关键词修饰的成员方法
在类外访问:类名称::静态成员方法
在类里面访问:self::静态成员方法
说明:在静态化的成员方法中不能访问非静态化的成员属性和成员方法
2. 错误级别
在php.ini中可以设置服务器对错误的报警级别。在默认情况下,php将报告除了通知之外的所有错误。
错误报告级别是通过一些预定义的常量来设置的,
语法
int error_reporting ( [int level] )
如果参数 level 未指定,当前报错级别将被返回。下面几项是 level 可能的值:
如下表所示:
E_ERROR 报告运行时的致命错误
E_WARNING 报告运行的非致命错误
E_PARSE 报告解析错误
E_NOTICE 报告通告,注意,表示所做的事情可能是错误的.
E_CORE_ERROR 报告PHP引擎启动失败
E_CORE_WARNING 报告PHP引擎启动时非致命错误
E_COMPILE_ERROR 报告编译错误
E_COMPILE_WARNING 报告编译时出现的非致命错误
E_USER_ERROR 报告用户触发的错误
E_USER_WARNING 报告用户触发的警告
E_USER_NOTICE 报告用户触发的通告
E_ALL 报告所有的错误和警告
E_STRICT 报告不赞成的用法和不推荐的行为
在php.ini文件中,默认的报告是除了通知之外的所有错误,如下语句设定:
error_reporting = E_ALL & ~ (E_NOTICE)
在上面的表达式中,符号"&"表示几个条件这间的并列,而"~"表示否定,即NOT的含义.
如果想忽略警告信息,可以设定如下语句:
error_reporting = E_ALL & ~(E_NOTICE) & ~(E_WARNING)
在php.ini文件中,和错误有关的设置有如下几个:
(1)error_reporting 设定错误级别
(2)display_errors 是否显示错误报告,设置为ON则打开,设置为OFF则关闭所有错误提示
(3)log_errors 默认设置为OFF,是否记录错误日志;
(4)track_errors 默认设置为OFF,该选项可以帮助解决代码中的错误,而不是让PHP提供其默认的功能。
三、判断函数
变量类型判断:is_*()
四、isset()与empty()的区别
1)isset(): 检测变量是否已设置并且非 null
如果变量存在并且值不是 null 则返回 true,否则返回 false
注: isset() 只能用于变量,因为传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用 defined()函数。
2)empty():检查变量是否为空(使用该方法时千万要注意,容易跳坑)
当变量存在,并且是一个非空非零的值时返回 false 否则返回 true。变量不存在的时候也是返回true。
以下变量都被认为是空。
- ' ' (空字符串)
- 0 (作为整数的0)
- 0.0 (作为浮点数的0)
- "0" (作为字符串的0)
- null
- false
- array( )(一个空数组)
- $var;(一个声明了,但是没有值的变量)
使用场景:
当要判断一个变量是否已经声明的时候,可以使用 isset 函数
当要判断一个变量是否已经赋予数据且不为空,可以用 empty 函数
当要判断一个变量存在且不为空,先使用isset 函数,再用 empty 函数。
注意:
这里我们会发现 empty 和 isset 细节的区别其实就在为空和为 null,所以只要我们能区分空和null的概念就非常容易理解这两个函数的区别,
事实上为空包含了为 null 这个概念,为 null 只有变量未声明和赋为null 这两种。
参考链接:https://blog.csdn.net/yue7603835/article/details/72582191