PHP如果是速记问题

时间:2011-01-03 07:28:25

标签: php

嘿所有人。我有一个关于PHP的问题,如果是速记。是否有可能使用PHP的速记首先包含一个文件,然后从该文件创建一个类?

这就是我的意思:

$object = ($userpresent) ? include file; new firstclass : include different file; new otherclass;

我知道上面的内容不正确。但有没有办法用速记来做到这一点?

由于

4 个答案:

答案 0 :(得分:2)

不,conditional operator ?:仅允许expressions作为操作数,但不允许statements

  

第三组是三元运算符:?:。它应该用于根据第三个表达式在两个表达式之间进行选择,而不是选择两个句子或执行路径。带圆括号的三元表达式是一个非常好的主意。

因此,您的代码将产生语法错误。

只需使用标准if语句,即更具可读性:

if ($userpresent) {
    include file;
    $object = new firstclass;
} else {
    include different file;
    $object = new otherclass;
}

答案 1 :(得分:1)

没有。这是ternary operation,它将返回并赋值(在您的情况下返回$ object)。做其他事情是行不通的。

答案 2 :(得分:0)

我试图想象为什么你需要使用这种语法来做它,但假设你有理由,并且可以包含这两个文件,你应该能够做到这样的事情:

$object = ($first = include($file1) && $second = include($file2) && $userpresent) ? new firstclass : new otherclass;

答案 3 :(得分:0)

回答“否”的答案是错误的 - 它并不漂亮,你应该为此做好准备,但它完全有可能。

$object = ($userpresent) ? (include "file" ? new firstclass : 0) : (include "different file" ?  new otherclass : 0);

这假设两个文件都没有在评估为false的文件级别执行自定义返回语句(它们几乎从不这样做) - 如果这样做,则用额外的new替换0 ...