Мои квадраты не будут отображать 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()'или.