@cubaPro

Как обратиться к функции через $this в цикле?

Имеется класс в котором находится функция вывода всех товаров. У каждого товара в базе имеется своя стоимость но функция get_price() выполняет различные манипуляции с ценой
class Product {
# получаем товары
public function get_all() {

    $all_products = SELECT * FROM ...

    foreach($all_products as $products) {
        $this->comission = 5;
        $this->base_price = 500;
    }

    return $this;
}
}
# формируем цену
public function get_price() {
    $price = (( $this->base_price ) + ( $this->comission / 100 ));

    return $price;
}
}


в итоге синтаксис должен получиться такой

$product = new Product;

foreach($product ->get_all() as $item) {
echo $item->get_price(); // тут надо применить функцию get_price() к каждой иттерации
}


Но конструкция не верна. get_price берет значение только первого ключа массива и применяет это значение ко всему. Каким образом можно применить функцию в цикле? Спасибо за помощь
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
Чтобы это работало надо при вытаскивании из базы как-нибудь превратить массив данных в объект Product.
И собирать массив объектов.

А у вас пока какая-то каша малаша получается.

Вот это бессмысленно и беспощадно
$all_products = SELECT * FROM ...

    foreach($all_products as $products) {
        $this->comission = 5;
        $this->base_price = 500;
    }

    return $this;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Я так понимаю вы пытаетесь переизобрести коллекции, но выходит хреново. Посмотрите как реализованы коллекции в чем то более нормальном чем ваш полтораколесный велосипед. Или пишите свой, но хоть почитайте что-то по теме для начала.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 11:08
5000 руб./за проект
19 апр. 2024, в 10:59
150000 руб./за проект
19 апр. 2024, в 10:02
6000 руб./за проект