我在PHP中得到了一个非常奇怪的函数返回值行为


I got a very strange function returnvalue behaviour in PHP here

嗨,我对PHP有一个非常奇怪的行为,希望你能帮助我。

我有一个基于Symfony 1.4的PHP项目,基于PHP 5.4.7。

我有以下类函数来调整图像大小:

public function getResizedImageHorizontal($newWidth) {
    $image = null;
    $data = $this->getData();
    if(strlen($data["image"]) > 0) {
        $image = imagecreatefromstring($data["image"]);
        $newHeight = intval(imagesy($image) / 100) * ($newWidth / (imagesx($image) / 100));
        $newImage = imagecreatetruecolor($newWidth, $newHeight);
        imagecopyresampled($newImage, $image, 0, 0, 0, 0, $newWidth, $newHeight, imagesx($image), imagesy($image));
        ob_start();
        imagejpeg($newImage, null, 100);
        $image = ob_get_contents();
        ob_end_clean();
    }
    var_dump($image);
    return $image;
}

这是我在模板中的函数调用:

$image = $galleryObj->getResizedImageHorizontal(100);
var_dump($image);

因为我的函数没有得到任何结果(当我把代码直接放在模板中时,它工作得很好),我在上面的代码段中放了两个vardump来更清楚地解释它:

第一个vardump按预期返回调整大小的imagecontent(源是数据库中的blob),模板中的第二个直接调用,结果为空。

或者简而言之:直接在"return"之前的值是正确的:string(9474)"…

但在我的模板直接调用函数后立即:string(0)"

这里到底发生了什么,我是在PHP中发现了一些错误,还是通过从模板中执行东西,在与Symfony/Cotrine 1.4的组合中发现了这个错误?

我无法通过这个值,这很奇怪,这不太可能,但也许有人和我有同样的问题,所以我想我应该在这里问。

提前感谢~

我把这个问题搁置了很长一段时间,因为我还有其他事情要做,我现在重新解决了这个问题,发现我的旧帖子和Michal Trojanowski的评论完美地解决了它,谢谢!

以下是解决方案:

$image=$galleryObj->getRawValue()->getResizedImageHorizontal(100);