PHP检查变量isset,empty,defined etc.等

时间:2010-07-14 11:20:32

标签: php

我正在查看ZendCasts的教程,我想知道他使用的代码。

下面的简化版本
class TestClass {
    private $_var;
    private static function getDefaultView() {
        if (self::$_var === null) { ... } // this is the line in question
    }
}

我想知道为什么不使用isset(self::$_var)这样的东西? 当我使用self::时,我需要$符号来引用变量?我不能self::_var吗? =====

的区别

3 个答案:

答案 0 :(得分:1)

这些是几个问题。

  

我想知道为什么像isset(self :: $ _ var)没有使用

这是无关紧要的。使用isset的优点是,如果未定义变量,则不会发出通知。在这种情况下,始终定义self::$_var,因为它是声明的(非动态)属性。如果变量为isset,则null也会返回false。

  

当我使用self ::我需要$符号来引用变量?

请注意,这不是常规变量,它是一个类属性(因此self,它指的是方法的类)。是的,除非这是一个常数。 E.g:

class TestClass {
    const VAR;
    private static function foo() {
        echo self::VAR;
    }
}
  

如何==与===

不同

仅在此网站上已多次询问此事。

答案 1 :(得分:1)

  1. 对于==和===运算符,请参阅the manual page
  2. 对于自我,请参阅here

答案 2 :(得分:1)

===运算符表示“相同且相同类型”,因此不会发生自动类型转换。与0 == "0"相同,但0 === "0"不是。

self::$var语法只是语法。使用$来引用变量,使用$来引用函数。

self::语法用于静态访问(类变量,类方法,与this所引用的实例变量相对应)。