Я новичок, пытаясь изучить PHP.

Я создал класс под названием Image (в файле image.php), который содержит несколько основных функций. Я хотел бы иметь возможность создать «новый» объект изображения, связанный с jpeg на моем жестком диске, а затем передать это имя файла в качестве параметра функциям класса, чтобы они выполняли на нем свои параметры.

Все, что я хочу сделать на этом этапе, - это заставить функцию выводить изображение в браузер. В настоящее время у меня работает функция отображения, когда я ее вызываю, но я должен назвать файл прямо в коде функции. Как я могу определить имя файла вне класса, а затем передать его в функцию класса?

class Image
{
    // property declaration
    public $filename = 'Not set';

    public function displayImage()
    {
    // File
    $filename = imagecreatefromjpeg("9.jpg");

    // Content type
    header('Content-type: image/jpeg');

    // Output
    imagejpeg($filename);
    }
}

Пытаюсь создать экземпляр и позвонить сюда:

include 'image.php';
$first = new Image();
$first->filename = "9.jpg";
$first->displayImage();

Заранее спасибо!

0
user3687308 30 Май 2014 в 19:46
2
imagecreatefromjpeg($this->filename)
 – 
gen_Eric
30 Май 2014 в 19:48

2 ответа

Лучший ответ

Вам нужно изменить синтаксис:

class Image {

   public $filename;

   // This is the constructor, called every new instance
   function __construct($imageurl="default.jpg") {
       $this->$filename = $imageurl;
   }

   public function displayImage(){
       header('Content-type: image/jpeg');
       $img = imagecreatefromjpeg($this->filename);
       imagejpeg($img);
   }
}

Теперь вы можете назвать это несколькими способами:

include 'image.php';

// Option 1:
$first = new Image("9.jpg");
$first->displayImage();

// Option 2:
$second = new Image();
$second->filename = "9.jpg";
$second->displayImage();
0
Kivylius 30 Май 2014 в 20:10
Спасибо! Я мог что-то упустить с вариантом 1. Мне не повезло с ним, но я смог заставить свой код работать с вариантом 2. Я смог использовать этот формат для вызова нескольких других функций, которые я хотел вызвать в похожая мода.
 – 
user3687308
31 Май 2014 в 04:52

Используйте этот синтаксис:

public function displayImage($image)

Затем укажите его в своей функции как $ image вместо «9.jpg».

И вы должны вызвать функцию:

displayImage("9.jpg");
1
Jean-François Savard 27 Апр 2016 в 19:36