• 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

  • 相关阅读:
    tensorflow入门笔记(五) name_scope和variable_scope
    tensorflow入门笔记(四) tf.summary 模块
    tensorflow入门笔记(三) tf.GraphKeys
    tensorflow入门笔记(二) 滑动平均模型
    tensorflow入门笔记(一) tf.app.flags.FLAGS
    iOS友盟推送注意点
    关于gif图片重用消失问题。
    百度地图使用经验
    SQLite语句
    app登录,client和serve的常用字段。
  • 原文地址:https://www.cnblogs.com/hld123/p/12499980.html
Copyright © 2020-2023  润新知