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

それをより速く行うための簡単な方法はありません。その時点で$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 に答える
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 に答える
1

変数が未定義であるというプロンプトが表示されないように使用できます。

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

演算子を使用@するのが最短の方法です。

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

PHP 7以降、演算子も使用できます??

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

@これは、少し長くなりますが、オペレーターが行うことを正確に行います。

于 2021-06-16T14:14:50.627 に答える