Форум → Программирование → PHP для идиотов → Профи обосрались - 2. Partial classes, base functions extending
Профи обосрались - 2. Partial classes, base functions extending
Страницы: ← Предыдущая страница →
-
-
28 апреля 2010 г. 22:44, спустя 4 минуты 45 секунд
нахуй!
цепочка обязанностей нужнаСпустя 62 сек.<?php
abstract class FO_Base_Sefurls extends FormObject_Plugin
{
public function __construct()
{
$slug = new FOField_Textbox("slug", "URL");
$slug->addValidator(new FOValidator_NoEmpty());
$this->addField($slug, "SEO");
$this->addField(new FOField_Textbox("meta_keywords", "Meta Keywords"), "SEO");
$this->addField(new FOField_Textbox("meta_description", "Meta Description"), "SEO");
}
public abstract function getLinkId($id);
public function getItemTable()
{
return "sefurls";
}
public function getItem($id)
{
return $this->getDb()->get($this->getItemTable(), array(
"url" => $this->getLinkId($id)
));
}
public function onAfterEdit($data, $id, $form)
{
$this->updateLink($data, $id);
}
public function onAfterNew($data, $id, $form)
{
$this->updateLink($data, $id);
}
public function onAfterDelete($data, $id, $form)
{
$this->getDb()->delete($this->getItemTable(), array(
"url" => $this->getLinkId($id)
));
}
protected function updateLink($data, $id)
{
$url = $this->getLinkId($id);
$r = $this->getDb()->get($this->getItemTable(), array("url" => $url));
if(!$r)
{
$data['url'] = $url;
$this->getDb()->insert($this->getItemTable(), $data);
}
else
{
$this->getDb()->update($this->getItemTable(), $data, array(
"url" => $url
));
}
}
}
вот такой вот очаровательный плагинчик к форме получился имхо, самодостаточный базовый класс, на основе которого я дальше расширяю функционал
например seourls для отелей - вуаля :)<?php
require_once 'FO_Base.part.Sefurls.php';
class FO_Hotels_Sefurls extends FO_Base_Sefurls
{
public function getLinkId($id)
{
return "hotels/$id";
}
}Сапожник без сапог
Страницы: ← Предыдущая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!