Мои квадраты не будут отображать php на фоне?

Я исправил несколько вещей, но на экране ничего не отображается, просто пусто, нет ошибок, нет ничего. Это как-то связано с тем, как я возвращаю рисунок? Запустил его в терминале на Linux Mint 13, и он пришел с этой проблемой первым header ('Content-type: image/png'); так может быть размещение? Должно ли это быть с оператором return? Должен ли я создать файл вместо использования включения или требовать введения новых квадратов?

<?php
header ('Content-type: image/png');

class Shape {

private $size = 0;

public function __construct() {
  $foregroundRhex = substr($foregroundhex,0,2);
  $foregroundGhex = substr($foregroundhex,2,2);
  $foregroundBhex = substr($foregroundhex,4,2);

  $foregroundRed = hexdec($foregroundRhex);
  $foregroundGreen = hexdec($foregroundGhex);
  $foregroundBlue = hexdec($foregroundBhex);

  $foregroundcolor = imagecolorallocate($canvas, $foregroundRed,$foregroundGreen,        $foregroundBlue);
  $backgroundcolor = imagecolorallocate($canvas, $backgroundRed, $backgroundGreen, $backgroundBlue);
}

function draw(){
return 
    $canvas = imagecreatetruecolor($size, $size) or die('Cannot Initialize the Image Stream Yoh!');
    $correctpos = ($size - $position);
    imagerectangle($canvas, $correctpos, $correctpos, $length, $length, $foregroundcolor);
    imagefill($canvas, 0, 0, $backgroundcolor); 
    imagepng($canvas);
    imagedestroy($canvas);
 }
}
class Square extends Shape {

function __construct($x, $y) {
    $this->size = $x;
    $this->size = $y;
}

function draw() {
    return 
    $canvas = imagecreatetruecolor($size, $size) or die('Cannot Initialize the Image Stream Yoh!');
    $correctpos = ($size - $position);
    imagerectangle($canvas, $correctpos, $correctpos, $length, $length, $foregroundcolor);
    imagefill($canvas, 0, 0, $backgroundcolor); 
    imagepng($canvas);
    imagedestroy($canvas);
 }
}

$shapes = array(
new Square(150, '000099', 'ff0000', 5, 25), 
new Square(150, '009900', 'ff0000', 4, 19)
);

?>

2 ответа

$foregroundRhex = substr($foregroundhex,0,2); Эта и 7 следующих за ней строк должны быть внутри функции (метода) или конструктора. Пространство, в котором они сейчас находятся, предназначено только для объявлений классов.

Ваша ошибка в том, что класс может содержать только определения свойств и методов. Итак, что вам нужно сделать в этом случае, это заключить весь этот код в метод (возможно, конструктор) следующим образом:

class Shape {
   private $size = 0;

   public function __construct() {
      $foregroundRhex = substr($foregroundhex,0,2);
      $foregroundGhex = substr($foregroundhex,2,2);
      $foregroundBhex = substr($foregroundhex,4,2);

      $foregroundRed = hexdec($foregroundRhex);
      $foregroundGreen = hexdec($foregroundGhex);
      $foregroundBlue = hexdec($foregroundBhex);

      $foregroundcolor = imagecolorallocate($canvas, $foregroundRed,$foregroundGreen,        $foregroundBlue);
      $backgroundcolor = imagecolorallocate($canvas, $backgroundRed, $backgroundGreen, $backgroundBlue);
   }

   function draw();
   }
}

Вы просто не можете иметь исполняемый код внутри класса, который не является ни частью метода (функции), ни определением свойства (переменной). Если вы думали, что просто определяете свойства: вы можете определить только значения констант во время компиляции как значения по умолчанию для свойств. Если вам нужно больше динамических значений (например, подстрок и т. Д.), Вам нужно определить их внутри __construct()'или.

Другие вопросы по тегам