Создание класса и объявление переменных в одной строке

Есть ли способ создать экземпляр класса и определить все переменные в одной строке? Создание его, затем определение всех переменных, затем вызов его, занимает почти столько же строк, сколько сам необработанный HTML-код.

У меня есть такой класс:

class Gallery {
public $image;
public $text;
public $heading;
public $link;

public function Item() {
echo '
<div class="gallery_item">
<div class="gallery_image">
<img src="' . $this->image . '">
</div>
<div class="gallery_text">
<h3> ' . $this->heading . '</h3>
<p> ' . $this->text . '</p>
<a href="' . $this->link . '">View Live Site</a>
</div>
</div>
';
}
}

И тогда я называю это с помощью:

<?php
$Gallery_1 = new Gallery();
$Gallery_1->image = "img/test.jpg";
$Gallery_1->heading = "Test Object";
$Gallery_1->text = "This is a sample text description for the gallery items. It can be long or short";
$Gallery_1->link ="#";
$Gallery_1->Item();
?>

Могу ли я сделать что-то вроде ниже? Приведенный ниже код не работает, но есть ли что-то подобное?

$Gallery_1 = new Gallery(image->"img/test.jpg", heading->"test", text->"text", link->"#");
$Gallery_1-Item();

0

Решение

Если вы хотите передать свои собственные значения, используйте ваш конструктор для настройки свойств в аргументах:

class Gallery
{
public $image;
public $text;
public $heading;
public $link;

public function __construct($image, $text, $heading, $link) // arguments
{
$this->image = $image;
$this->text = $text;
$this->heading = $heading;
$this->link = $link;
}

public function Item()
// rest of your codes

Так что, когда вы создаете экземпляр, просто заполните аргументы:

$gallery = new Gallery('img/test.jpg', 'test', 'text', 'link#');
$gallery->Item(); // echoes the html markup,
2

Другие решения

Вы можете попробовать этот способ, поставив __construct функционировать в вашем классе.

public function __construct()
{
$this->image = "img/test.jpg";
$this->heading = "Test Object";
$this->text = "This is a sample text description for the gallery";
$this->link ="#";
}

Тогда просто создайте экземпляр своего Галерея учебный класс,

    //will call the __construct method internally
$Gallery_1 = new Gallery();
$Gallery_1->Item();

РЕДАКТИРОВАТЬ: Согласно вашему комментарию

  public function __construct($image,$heading,$text,$link)
{
$this->image = $image;
$this->heading = $heading;
$this->text = $text;
$this->link =link;
}

$image = "img/test.jpg";
$heading = "Test Object";
$text = "This is a sample text description for the gallery";
$link ="#";

$Gallery_1 = new Gallery($image,$heading,$text,$link);.
$Gallery_1->Item();
2

По вопросам рекламы [email protected]