【问题标题】:return var doesn't work when var is huge?当 var 很大时,return var 不起作用?
【发布时间】:2010-06-24 17:34:51
【问题描述】:

所以我使用 PHPExcel (http://phpexcel.codeplex.com/) 来导入 Excel 工作表。在我的开发系统上一切正常,但在实时系统上却不太正常。

因此我进行了调试并查看了可能出现的问题。我发现一个方法显然返回 NULL,它应该返回一个对象。我查看了该方法,并var_dump()ed 方法中返回的 var。 var 不为空

伪代码:

class Bar()  
{  
 function methodInAClass()  
 {  
    $test = new Foobar;  
    [...]
    /* $test was an object here with a lot of data (var_dump()
     * took around 100.000 lines in an editor) */
    var_dump($test); 
    return $test;   
 }  
}  

$bar =& new Bar();  
$test2 = $bar->methodInAClass(); //$test2 is NULL here

我做错了什么?这是来自 php.ini 的问题吗?

【问题讨论】:

    标签: php memory codeplex phpexcel


    【解决方案1】:

    更高的内存限制似乎已经解决了这个问题!

    【讨论】:

    • 老实说,这听起来像是一个错误。如果是因为内存不足,那么您应该得到一个错误而不是损坏的数据。尝试向bugs.php.net提交错误
    【解决方案2】:

    如果返回的值是实际返回的对象,PHP 不应该关心它有多大(在本例中就是这样)。更明确的细节可能会有所帮助,因为您引用的示例应该可以正常工作......我对 PHPExcel 有一定的了解。你用的是什么版本?你要返回什么对象? (IIRC 库中没有 Foobar 对象)您是否使用任何内存缓存?

    【讨论】:

      【解决方案3】:

      我认为没有理由发生这种情况。除非你在做一些你没有向我们展示的有趣的事情,否则我看不出你如何在没有本机调试器的情况下检查这一点,例如,你可以在对象的内容上放置一个数据断点。

      顺便说一句,你没有理由应该使用$bar =& new Bar(); 而不是$bar = new Bar();(在 PHP5 中);事实上,前者已被弃用。

      【讨论】:

      • 我认为你的意思是反之亦然,不是吗? 没有理由你应该这样做 $bar = & new Bar();而不是 $bar = new Bar();
      猜你喜欢
      • 2016-02-24
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2015-08-17
      • 1970-01-01
      • 2020-06-11
      相关资源
      最近更新 更多