有可能php中的echo也会像var_dump一样工作吗?

时间:2010-09-08 12:13:28

标签: php

我不是在PHP中编程,而是PHP本身。 是否有可能php的创建者将回调转储为例如数组 var_dump呢?

3 个答案:

答案 0 :(得分:4)

  

php的创建者是否有可能使回转转储为例如var_dump这样的数组?

我认为你的意思是如果echo传递了一个无法显示为字符串的变量,显示转储,而不是显示其数据类型的当前行为(例如Array)?< / p>

这确实有意义,但也很危险:如果一个对象包含最终用户不应该看到的数据怎么办?

我怀疑echo函数(或更确切地说,PHP的字符串解析函数)将经历如此彻底的改变,正是出于这个原因。

答案 1 :(得分:2)

对现有功能的这种彻底改变将成为许多破坏代码的一个秘诀。所以我会说不。

那就是说,这是我们正在谈论的PHP,所以它不会让我感到惊讶....

答案 2 :(得分:2)

在php中你可以创建一个像数组一样行走的对象,像数组一样嘎嘎叫,但仍然是一个带有可自定义的__toString方法的对象。

class ary implements ArrayAccess
{
 function __construct() {
  $this->a = func_get_args();
 }
 function offsetExists($k) {
  return isset($this->a[$k]);
 }
 function offsetGet($k) {
  return $this->a[$k];
 }
 function offsetSet($k, $v) {
  $this->a[$k] = $v;
 }
 function offsetUnset($k) {
  unset($this->a[$k]);
 }
 function __toString() {
  return implode(', ', $this->a);
 }
}

$a = new ary(11, 22, 33);
$a[1] = 66;
echo $a;

当然,最好是数组已经是普通对象,就像其他语言一样,但我不认为这会在最近的将来发生。