是如何没有定义我就定义吗? 类似于 C语言中的if define 吗?? 要是在PHP 手册里面能找到就好了。。 比如:defined('THINK_PATH') or define('THINK_PATH', dirname(__FILE__).'/');
defined('THINK_PATH') or define('THINK_PATH', dirname(__FILE__).'/');
人生最曼妙的风景,竟是内心的淡定与从容!
这里的知识点还有一个“短路求值”
PHP或C或很多现代语言都有这个特性,在计算逻辑或表达式的时候,计算左侧如果是true,那么就不再计算右侧,直接返回true,所以A or B;可以达到if(!A) B;的效果
A or B;
if(!A) B;
同理,计算逻辑与的时候,如果左侧是false,那么同样会发生短路,不计算右侧直接返回false A and B;类似if(A) B;
A and B;
if(A) B;
短路求值在语意上比较接近英文,又回避了“if必加花括号”带来的视觉污染(?),所以还算比较通行的做法(虽然严格意义上来说不算是好习惯)
http://php.net/manual/zh/function.defined.phphttp://php.net/manual/zh/function.define.php
=w= 手册上有的...defined() 检测某个常量的名称是否存在. 如果已定义返回 true 未定义返回 false
defined('THINK_PATH') or define('THINK_PATH', dirname(FILE).'/');
先检查常量 THINK_PATH 是否被定义, 如果没有被定义,就定义一个常量 THINK_PATH 值dirname(FILE).'/'
类似于if(!A){B}的语句,但是书写成A or B 的话更加的简介,如果定义了THINK_PATH,那么条件为真,就不走后面,如果没有定义THINK_PATH就会走后面的语句。
这里的知识点还有一个“短路求值”
PHP或C或很多现代语言都有这个特性,在计算逻辑或表达式的时候,计算左侧如果是true,那么就不再计算右侧,直接返回true,所以
A or B;
可以达到if(!A) B;
的效果同理,计算逻辑与的时候,如果左侧是false,那么同样会发生短路,不计算右侧直接返回false
A and B;
类似if(A) B;
短路求值在语意上比较接近英文,又回避了“if必加花括号”带来的视觉污染(?),所以还算比较通行的做法(虽然严格意义上来说不算是好习惯)
http://php.net/manual/zh/function.defined.php
http://php.net/manual/zh/function.define.php
=w= 手册上有的...defined() 检测某个常量的名称是否存在. 如果已定义返回 true 未定义返回 false
defined('THINK_PATH') or define('THINK_PATH', dirname(FILE).'/');
先检查常量 THINK_PATH 是否被定义, 如果没有被定义,就定义一个常量 THINK_PATH 值dirname(FILE).'/'
类似于if(!A){B}的语句,但是书写成A or B 的话更加的简介,如果定义了THINK_PATH,那么条件为真,就不走后面,如果没有定义THINK_PATH就会走后面的语句。