2012-07-16 4 views
0

왜 내 수업에서 그림을 그리지 않습니까? 내가 그것을 그것을 실행하는 유일한 기능을하지만, 클래스에 내가 PHP 클래스에 새로운 오전. :( 작동 나던 (Java 클래스를 나에게 새로운 것이 아니다)합니다.그림이 그려지지 않는 이유는 무엇입니까? (PHP)

<?php 

class Schild 
{ 

    public function __construct(){ 
     $text = $_GET['text']; 
     $picture = imagecreatefrompng("bild.png"); 
     $pika = imagecreatefromjpeg("pika.jpg"); 
     $pika_size = getimagesize("pika.jpg"); 
    } 

    public function drawPicture() 
    { 
     $im = imagecolorallocate ($picture, 255, 0, 255); 
     imagettftext($picture, 111, 0, 100, 100,$im , "Marmellata(Jam)_demo.ttf", $text); 

     # int ImageCopy (resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h) 
     imagecopy($picture, $pika, 50, 50, 0, 0, $pika_size[0], $pika_size[1]); 

     $zufall = rand(1,99999999); 

     #header("Content-Type: image/jpeg"); 
     imagejpeg($picture); 
     imagedestroy($picture); 

    } 
} 

$schild1 = new Schild(); 
$schild1->drawPicture(); 
?> 
+0

클래스 일 때 어떤 결과가 발생합니까? 결과는 무엇입니까? 무엇을 시도 했습니까 – SomeKittens

답변

3
<?php 

class Schild 
{ 
    protected $picture; 
    protected $pika; 
    protected $pika_size; 
    protected $text; 

    public function __construct(){ 
     $this->text = $_GET['text']; 
     $this->picture = imagecreatefrompng("bild.png"); 
     $this->pika = imagecreatefromjpeg("pika.jpg"); 
     $this->pika_size = getimagesize("pika.jpg"); 
    } 

    public function drawPicture() 
    { 
     $im = imagecolorallocate ($this->picture, 255, 0, 255); 
     imagettftext($this->picture, 111, 0, 100, 100,$im , "Marmellata(Jam)_demo.ttf", $this->text); 

     # int ImageCopy (resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h) 
     imagecopy($this->picture, $this->pika, 50, 50, 0, 0, $this->pika_size[0], $this->pika_size[1]); 

     $zufall = rand(1,99999999); 

     #header("Content-Type: image/jpeg"); 
     imagejpeg($this->picture); 
     imagedestroy($this->picture); 

    } 
} 

$schild1 = new Schild(); 
$schild1->drawPicture(); 
?> 

이 문제는 __construct에 변수를 선언하지만 로컬 변수이므로 __construct() 실행이 완료되면 모든 로컬 변수가 삭제되므로 다른 함수에서 액세스 할 수 있도록 $this 키워드를 사용하여 CLASS 변수로 선언해야합니다.

+1

대단히 고마워요 :) – Furtano

+0

불량배 - 실제로 한 일과 이유를 말하면서 한 줄 또는 두 줄 (텍스트)을 추가하여 포스터와 다른 사람들이 복사 및 붙여 넣기를 배울 수 있습니다. –

+1

@RyanB 원래 게시물 다음에 약 10 초 동안 설명을 추가했습니다. –

관련 문제