1

我在视图层中使用 PHP 作为模板语言,是否可以使以下内容更简洁明了?

//in temp.phtlm
<?= (isset($user['name'])) ? $user['name'] : null; ?> 

不幸的是,我们甚至不能为此定义一个函数:

// as you know yet a notice is generated when calling a function with an undefined parameter
function echo($var)
{
        return (isset($var)) ? $var : null;
}
4

4 回答 4

2
//in temp.phtlm
<?=$var?>

//in whatever_your_script_name.php
$template->var = isset($var) ? htmlentities(whatever(convert(encode($var)))) : '';
$template->render('temp.phtml');
于 2012-12-07T07:58:40.320 回答
2

没有速记方法可以更快地做到这一点,不。如果此时 $var 不存在,任何其他方法都会引发错误。

根据您的结构/模板系统,您可以使用一个类来存储您的 var,并使用魔术方法 __get、__set、__isset、__unset 来调用您的变量。如果 var 不存在,那么这些方法可以只返回 null。不过,这需要对您的代码进行相当大的更改。您可以在此处找到有关魔术方法的手册:http: //php.net/manual/en/language.oop5.magic.php

至于你的原始代码,我会这样写:

<?php echo ( isset($var) ? $var : null ); ?> 
于 2012-12-07T07:56:48.173 回答
1

您可以使用它,这样您就不会被提示变量未定义:

$args = $args ?? null;
于 2021-06-15T13:13:11.853 回答
0

使用@运算符是最短的选择。

<?= @$user['name']; ?> 

从 PHP 7 开始,您也可以使用??运算符。

<?= $user['name'] ?? null; ?> 

这正是@操作员所做的事情,尽管时间更长。

于 2021-06-16T14:14:50.627 回答