英文商城网站建设,公信域名和网站建设是一样的吗,做一个自适应网站多少钱,15年做哪个网站能致富概况
三元运算符的功能与“if…else”流程语句一致。
在一般情况下#xff0c;三元操作替换if条件语句可以精简代码#xff0c;并且更为直观#xff0c;但是在下面的情况中使用三元操作将会返回警告。
借图#xff1a; 案例
比如原代码#xff1a;
class classA{publ…概况
三元运算符的功能与“if…else”流程语句一致。
在一般情况下三元操作替换if条件语句可以精简代码并且更为直观但是在下面的情况中使用三元操作将会返回警告。
借图 案例
比如原代码
class classA{public static function get_instance($param) {... if(isset(self::$_instance-$param)){return self::$_instance-$param;}else{return NULL;} }
}而一旦改写三元操作的时候
class classA{public static function get_instance($param) {... return isset(self::$_instance-$param) ? self::$_instance-$param : NULL;}
}系统会提示 PHP Notice: Only variable references should be returned by reference in...
分析
为什么呢
为什么第一种写法正确 函数声明为返回引用对象属性也是引用如果$param为空直接返回对象实例即返回一个对象引用否则使用if分支每个分支都返回对象属性引用或NULL都符合引用要求 为什么第二种写法出错 问题在使用三元操作符三元操作符整体返回一个值而不是引用此时虽然内容是属性但类型上仍是个值而不是引用所以不匹配函数声明为返回引用这个要求
总结
函数声明返回引用每个返回节点都必须返回真正的变量引用第一种用if分支每个分支都返回引用第二种三元操作符整体返回一个值就算内容是引用也不算所以正确应该是第一种if分支写法而不是使用三元操作符。 NULL本身不是一个变量,所以严格来说返回NULL也不算返回变量引用。 但是NULL作为一个特殊值,它可以作为非引用值正常返回,不会报错。