我目前一直在尝试将我的 PHP 和 HTML 分开。我试图在我的 HTML 文件中只使用内联 PHP。有时我会想检查数组中的变量是否在我之前设置echo
。
下面是这个问题的一个小测试:
<?
class test
{
private $args;
public function __construct($args = array())
{
$this->args = $args;
}
public function __get($name)
{
return $this->args[$name];
}
function test_i()
{
echo isset($this->i) ? "yes " : "no ";
}
}
$test = new test(array('i' => 'testing'));
//test i while inside the class using $this (returns no)
$test->test_i();
//test i outside of the class using $test (returns no)
echo isset($test->i) ? "yes " : "no ";
//set i to another variable (returns yes)
$ii = $test->i;
echo isset($ii) ? "yes " : "no ";
//returns testing
echo $test->i;
//prints: no no yes testing
?>
我最终想要在我的 HTML 文件中做的是:
<?=isset($this->var) ? $this->var : ''?>
''
每次都会返回。如果我echo $this->var
之后直接显示 var 的正确值。
为什么这总是返回假?
它与魔术getter方法有关吗?
是因为i
变量没有直接设置private i;
吗?
更新:这是这个问题的副本。添加魔法 isset 方法修复了它:
public function __isset($name)
{
return $this->args[$name];
}