开发者

PHP Checking variables isset, empty, defined etc

i was looking at a tutorial from ZendCasts where i wondered about the code he used. a simplified version below

class TestClass {
    private $_var;
    private static function getDefaultView() {
        if (self::$_var === null) { ... } // this is the line in question
    }
}

i wonder why is something开发者_如何学JAVA like isset(self::$_var) not used instead? when i use self:: i need the $ sign to refer to variables? i cant do self::_var? how does == differ from ===


These are several questions.

I wonder why is something like isset(self::$_var) not used instead

It's indifferent. The advantage of using isset is that a notice is not emitted if the variable ins't defined. In that case, self::$_var is always defined because it's a declared (non-dynamic) property. isset also returns false if the variable is null.

when i use self:: i need the $ sign to refer to variables?

Note that this is not a regular variable, it's a class property (hence the self, which refers to the class of the method). Yes, except if this is a constant. E.g.:

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

how does == differ from ===

This has been asked multiple times in this site alone.


  1. For the == and === operators, see the manual page.
  2. For the self, see here


The === operator means "equal and of same type", so no automatic type casting happens. Like 0 == "0" is true, however 0 === "0" is not.

The self::$var syntax is just the syntax. use $ to refer to a variable, no $ to refer to a function.

The self:: syntax is used for static access (class variables, class methods, vs. instance variables refereed to by this).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜