2010-04-13 7 views
0

我遇到了一個非常奇怪的PHP行爲,我不明白爲什麼它的行爲如此。 我使用imagesetbrush功能是這樣的:以這種方式它的工作原理在gd函數上奇怪的PHP行爲

class foo 
{ 
    function setbrush($image) 
    { 
     //$this->_resource contains the main image resource 
     imagesetbrush($this->_resource, $image); 
    } 
} 
... 
$res=imagecreatefrompng("image.png"); 
$class->setbrush($res); 

,但如果我改變這樣的代碼:

class foo 
{ 
    function setbrush($image) 
    { 
     $res=imagecreatefrompng($image); 
     imagesetbrush($this->_resource, $res); 
    } 
} 
... 
$class->setbrush("image.png"); 

它不工作了。你看到一些錯誤嗎?它不顯示任何消息,它只是不執行該功能。

+0

當你有錯誤報告設置爲E_ALL? – 2010-04-13 15:24:05

回答

1

難道在函數調用之後,對變量$ res的引用會消失嗎? 你是否試過將它聲明爲一個類變量,就像$ _resource變量一樣?

+0

這個作品!我不知道爲什麼但這個作品!謝謝... – mck89 2010-04-13 15:26:18

+0

我已經明白了爲什麼它的行爲如此,所以我寫了它。 Imagesetbrush需要對圖像的引用,第二種方式是當函數完成時取消引用,以便PHP無法獲取畫筆資源。在zaf的方式中,參考被修復,所以它的工作原理。 – mck89 2010-04-13 15:36:01

0

在你的Foo類的目錄更改工作也許某個地方,所以也不再可能找到image.png打開//$this->_resource contains the main image resource