|
|
|
| Сделала конструктор форм.
Тот код, что ниже, занимается выводом уже готовой формы на страницу + добавляет к ней дизайн в зависимости от выбора пользователя. Оставила только общую структуру и то, что касается сути дела.
<?php
//подключаем классы для работы с базой
foreach (glob("DatabaseClasses/*class.php") as $filename) {
include($filename);
}
interface ConstractForm{
function RedDesign();
function GreenDesign();
function Design($id_form);
}
class Constract implements ConstractForm{
public function __construct($id) {
$bd = new DbQuery; //ресурс для работы с базой данных
//собираем форму без дизайна
}
public function RedDesign(){
//определенный дизайн
}
public function GreenDesign(){
//определенный дизайн
}
public function Design($id_form){
$bd = new DbQuery; //ресурс для работы с базой данных
//подключение дизайна в зависимости от выбора пользователя
}
}
class ConstractFactory{
public static function Create($id)
{
return new Constract($id);
}
}
//вывод формы на страницу
$fo = ConstractFactory::Create(10);
echo $fo->Design('forms');
?>
|
Вопрос вот в чем. У меня в конструкторе класса создается объект, который работает с базой данных. И в методе класса Design у меня опять идет подключение к базе данных. Можно ли сделать так, чтобы подключение было только один раз? | |
|
|
|
|
|
|
|
для: Лена
(24.08.2010 в 20:59)
| | сильно не вникал, но такое чувство что ошибка в логике.
ну можно например создать в классе флаг подключения к базе данных и потом проверять его в том же методе design
p.s имхо, как по мне так неправильно вешать на интерпретатор такие функции. лучше шаблонизатор. польза и верстальщику и программисту.
да и интерфейс здесь вроде как оне умстен, опять же имхо | |
|
|
|
|
|
|
|
для: psychomc
(24.08.2010 в 21:06)
| | >сильно не вникал, но такое чувство что ошибка в логике.
>ну можно например создать в классе флаг подключения к базе данных и потом проверять его в том же методе design
Спасибо. Если я правильно поняла. Сделала так:
class Constract implements ConstractForm{
private $database;
public function __construct($id) {
$this->database= new DbQuery; //ресурс для работы с базой данных
И в методе Design:
public function Design($id_form){
$sql = "SELECT disign FROM " . $this->table . " WHERE id=" . (int)$id_form;
$disign = $this->database->my_sel1($sql);
>p.s имхо, как по мне так неправильно вешать на интерпретатор такие функции. лучше шаблонизатор. польза и верстальщику и программисту.
Согласна. Только тут сайт написан по типу "все в куче", логика и дизайн не разделены, решила сделать так же. Вспомнила про паттерн Factory, решила его попробовать.
>да и интерфейс здесь вроде как оне умстен, опять же имхо
Почему? У меня опыта в ООП, можно сказать, мало, как лучше не знаю... Я интерфейсы использую в основном, для того, чтобы потом можно было быстро разобраться, что делает класс и за что в нем отвечают методы - с интерфейсом мне это легче. | |
|
|
|
|
|
|
|
для: Лена
(24.08.2010 в 21:54)
| | да, вы правильно поняли....
по поводу интерфейса...
как правило применяется тогда, когда этот интерфейс наследуют несколько классов. а судя по его методам не похоже, что будет такое наследование. с другой стороны - делайте как вам удобнее и не заморачивайтесь ;) | |
|
|
|