PHP的基础知识(二)

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

原文地址:https://www.cnblogs.com/hld123/p/12499980.html