gpt4 book ai didi

php - 为什么 PHP 的 empty() 函数在 CakePHP 2 中使用 $this->data 不能按预期工作?

转载 作者:行者123 更新时间:2023-12-04 06:08:06 25 4
gpt4 key购买 nike

为了减轻一些困惑,我已经完全重写了这个问题。

这是 Controller :

<?php
class StaffController extends AppController{
function test(){
$this->data = $this->Staff->find( 'list' );
}
}

这是整个 View :
<pre>
Count: <?php echo count( $this->data ) . "\n"; ?>
Empty: <?php echo ( empty( $this->data ) ? 'true' : 'false' ) . "\n"; ?>
Count: <?php echo count( $this->data ) . "\n"; ?>
<?php var_dump( $this->data ) ?>
</pre>

这是渲染的输出:
Count: 2
Empty: true
Count: 2
array(2) {
[1]=>
string(12) "Mock Staff 1"
[2]=>
string(12) "Mock Staff 2"
}

为什么会 empty()当两个 count() 都返回 True 时和 debug()显示已分配非空值?

这是 CakePHP 的错误吗? PHP错误? ???

如果我使用另一个变量而不是 $this->data :
function test(){
$this->set( 'data', $this->Staff->find( 'list' ) );
}

和观点:
<pre>
Count: <?php echo count( $data ) . "\n"; ?>
Empty: <?php echo ( empty( $data ) ? 'true' : 'false' ) . "\n"; ?>
Count: <?php echo count( $data ) . "\n"; ?>
<?php var_dump( $data ) ?>
</pre>

它按预期工作:
Count: 2
Empty: false
Count: 2
array(2) {
[1]=>
string(12) "Mock Staff 1"
[2]=>
string(12) "Mock Staff 2"
}

有接类人吗?

最佳答案

$this->data在 Cake View 中很特别。当您访问 $this->data在一个 View 中,您实际上最终调用了魔术方法 View::__get() , 和 empty()不适用于方法或函数——它只适用于变量。正如您所发现的,将数据传递给 View 的正确方法是使用 $this->set()在您的 Controller 中。澄清一下,$this View 中的对象与 $this 不同在您的 Controller 中。

关于php - 为什么 PHP 的 empty() 函数在 CakePHP 2 中使用 $this->data 不能按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8108711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com