0

なぜ私のクラスは絵を描かないのですか? 私がそれを実行する唯一の関数にすると、クラスでは機能しません:(。私はPHPクラスが初めてです(Javaクラスは私にとって新しいものではありません)。

<?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();
?>
4

1 に答える 1

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 変数として宣言する必要があります。

于 2012-07-16T17:40:55.777 に答える