Про ООП

Вопросы, не относящиеся ни к одному разделу

Про ООП

Сообщение guyasyou » 05 янв 2014, 00:44 ,  »  Сообщение:#1

Хочу переделать магазин в
Пожалуйста зарегистрируйтесь, чтобы увидеть ссылку
. он там сделан больше в процедурном виде.

Проблема в том, что продается услуга, и она может быть 2х видов:
1)команда в консоль игрового сервера
2)исполнить определенный код PHP
(либо то или другое должно исполниться при успешной покупке)

для каждого товара код или команда разные.
Думал реализовать как то так: Создать некий абстрактный класс товара, а его будут наследовать классы конкретных товаров. В классе параметры товара: название, цена, и методы- команда в консоль и исполняемый скрипт.
Но возникают вопросы... Как делать список товаров, не проходиться же по файлам? Как обращатся к методу конкретного товара после успешной покупки. и т.п.

В верном ли направлении иду?
Как это можно реализовать?
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 559
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: Про ООП

Сообщение cmsservice » 05 янв 2014, 13:54 ,  »  Сообщение:#2

В общих чертах идешь правильной дорогой. У абстрактного класса товара делаешь метод который будет вызываться после того как оплата подтверждена. Например PaymentSuccess(). В наследниках определяешь, что этот метод должен делать, т.е. для первого класса товара определяешь выполнение команды, а для второго - код (по сути тоже команда, но кастомная).

При покупке передаешь класс конкретного товара, который создается соответствующим кодом, отвечающим за биллинг. Т.к. этот код знает о методах родительского класса, то он их и вызывает, а конкретная реализация предоставляется соответствующим классом. Это же азы. Если возникают такие вопросы, то ИМХО сначала стоит почитать внимательно про основы ООП безотносительно языка программирования.
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва

Re: Про ООП

Сообщение guyasyou » 05 янв 2014, 16:16 ,  »  Сообщение:#3

Я кстати читал Мэтт Зандстра - PHP. Объекты, шаблоны и методики программирования, но как то без практики не очень ясно.
Какой конкретно шаблон тут подойдет? Поразбираю его
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 559
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: Про ООП

Сообщение guyasyou » 05 янв 2014, 20:07 ,  »  Сообщение:#4

Я правильно понял суть?

Код: Выделить всё
<?php
abstract class Product {
   protected $handle;
   protected $name;
   protected $description;
   protected $price;
   
   abstract protected function success($param = false);
   
   public function toConsole($command) {
      if (string($command)) {
         echo 'Отправлено в консоль: '.$command;
      }
   }
}

class FirstProduct extends Product {
   public $handle = 'First';
   public $name = 'Первый продукт';
   public $description = 'Описание первого продукта';
   public $price = '25';
   
   public function success($param = false) {
      echo 'Услуга реализована';
   }
}

class TwoProduct extends Product {
   public $handle = 'Two';
   public $name = 'Второй продукт';
   public $description = 'Описание второго продукта';
   public $price = '13';
   
   public function success($param = false) {
      echo 'Услуга реализована';
   }
}

class ProductFactory {
   public function getProductByHandle($handle) {
      $handle = $handle.'Product';
      return new $handle;
   }
}

$product = new ProductFactory;
$product = $product->getProductByHandle('Two');
var_dump($product);


Имена классов товаров будет хранится в бд. Я взял этот пример с методов оплаты в eConmmerce. Там метод устанавливаешь(в бд хандл прописывается) а потом по ней он грузит файл и класс.
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 559
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: Про ООП

Сообщение cmsservice » 05 янв 2014, 22:04 ,  »  Сообщение:#5

Ну да, в общих чертах так :)
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron