Только, только начал пытаться понимать ооп, решил сразу на практике. Ниже попытки создать класс карточку, где у каждого её объекта будет своё имя, описание, картинка, цена. Так как я сделал ниже, не работает ошибка "Constant expression contains invalid operations" На строке с созданием переменной $cardlayout PHP: <?php class ShoppingCard { public $cardname; public $carddesc; public $cardimag; public $cardcost; public $cardlayout = ' <div class="card cardshop"> <img class="'.$cardimag.'"> <div class="card-body"> <h5 class="card-title">'.$cardname.'</h5> <p class="carddesc">'.$carddesc.'</p> <div class="mbend rubcard">'.$cardcost.' руб.</div> <a '."href=\"$url/buy.php?buy=gsp\"".'class="btn button-card mbend btn-primary">Купить</a> </div> </div>'; } $gsp = new ShoppingCard(); $gsp -> cardname = 'Атомный реактор'; $gsp -> carddesc = 'Мощная штука'; $gsp -> cardimag = 'img/ar.png'; $gsp -> cardcost = '99'; echo $gsp -> cardlayout; ?> Было бы здорово, если бы кто-то показал как код должен выглядеть. Вероятно он очень плох, тема ооп мне даётся очень тяжко
Ошибку даже не пытался перевести? Ну и нельзя значение свойства объекта задавать через какие-то там к тому же неопределённые переменные ($cardimag и прочие).
обращение к свойствам объекта внутри класса через $this то есть PHP: public $cardlayout = ' <div class="card cardshop"> <img class="'.$this->cardimag.'"> а вообще оформление и код смешивать - это и есть кринж,
Ну я просто хотел узнать, как такой пример моего кода должен выглядеть. Но судя по ответам, в моём коде неправильно всё. Так что ладно, закроем тему
Твоя ошибка в том что $this можно использовать только внутри метода. PHP: <?php class ShoppingCard { public $cardname; public $carddesc; public $cardimag; public $cardcost; public $cardlayout; function __construct(){ $this->cardlayout = ' <div class="card cardshop"> <img src class="'.$this->cardimag.'"> <div class="card-body"> <h5 class="card-title">'.$this->cardname.'</h5> <p class="carddesc">'.$this->carddesc.'</p> <div class="mbend rubcard">'.$this->cardcost.' руб.</div> <a '."href=\"$url/buy.php?buy=gsp\"".'class="btn button-card mbend btn-primary">Купить</a> </div> </div>'; } } $gsp = new ShoppingCard(); $gsp -> cardname = 'Атомный реактор'; $gsp -> carddesc = 'Мощная штука'; $gsp -> cardimag = 'img/ar.png'; $gsp -> cardcost = '99'; echo $gsp -> cardlayout; ?>
Можно задавать значения свойств класса прямо в конструкторе: PHP: <?php class ShoppingCard { public $cardname; public $carddesc; public $cardimag; public $cardcost; public $cardlayout; function __construct($cardname,$carddesc,$cardimag,$cardcost){ $this->cardname = $cardname; $this->carddesc = $carddesc; $this->cardimag = $cardimag; $this->cardcost = $cardcost; } public function output(){ $this->cardlayout = ' <div class="card cardshop"> <img src class="'.$this->cardimag.'"> <div class="card-body"> <h5 class="card-title">'.$this->cardname.'</h5> <p class="carddesc">'.$this->carddesc.'</p> <div class="mbend rubcard">'.$this->cardcost.' руб.</div> <a '."href=\"$url/buy.php?buy=gsp\"".'class="btn button-card mbend btn-primary">Купить</a> </div> </div>'; echo $gsp -> cardlayout; } } $gsp = new ShoppingCard('Атомный реактор','Мощная штука','99'); $gsp->output(); ?>
Сейчас можно ещё круче PHP: class ShoppingCard { public function __construct(public $cardname, public $carddesc, public $cardimag, public $cardcost) {} // ..... }
Ясно, спасибо! --- Добавлено --- Работает, я бы не благодарил выше просто так. Не первый раз выручаешь Спасибо!