Как обратиться к функции через $this в цикле?
Чтобы это работало надо при вытаскивании из базы как-нибудь превратить массив данных в объект Product.
И собирать массив объектов.
А у вас пока какая-то каша малаша получается.
Вот это бессмысленно и беспощадно$all_products = SELECT * FROM ...

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

    return $this;
Я так понимаю вы пытаетесь переизобрести коллекции, но выходит хреново. Посмотрите как реализованы коллекции в чем то более нормальном чем ваш полтораколесный велосипед. Или пишите свой, но хоть почитайте что-то по теме для начала.