Есть ли способ создать экземпляр класса и определить все переменные в одной строке? Создание его, затем определение всех переменных, затем вызов его, занимает почти столько же строк, сколько сам необработанный 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();
Если вы хотите передать свои собственные значения, используйте ваш конструктор для настройки свойств в аргументах:
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,
Вы можете попробовать этот способ, поставив __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();