



No i jeszcze jedno .. Jak dziedziczyć w Kohanie ? Bo widzę że moje wszystkie modele i kontrolery już dziedziczą klasy wyznaczone przez Kohane


Przepraszam jeżeli są to jakieś durne pytania, ale niepotrafie zastosować tego w praktyce

Pozdrawiam
abstract class menuList { protected $sortBy; protected $sql; protected $tableName; protected $fieldName; protected $idName; protected $checkBy; private $db; abstract public function PrintList(); abstract protected function prepear(); public function __construct($tableName, $fieldName, $idName) { ...} protected function getItemDB() { ...} protected function addWhereAnd($item) { ...} protected function addWhereOr($item) { ...} public function sortByName($rodzaj = 'ASC') { ...} public function sortById($rodzaj = 'ASC') { ...} public function checkById(){ ...} public function checkByName(){ ...} }
include_once 'abstract.menuList.php'; /** * Klasa odpowiedzialna za wyświetlenie listy Radio na podstawie słowników * z bazy danych * * @author Paweł Wołkowski * * @param uchwyt $con połaczenie z bazą danych * @param string $tableName nazwa tabeli z której będzie tworzona rozwijalna lista * @param string $fieldName wyświetlane pole w liście * @param string $idName pole odpowiedzialne za identyfikator zrwacany z listy (id tabeli) * @param variant $checkVal wartość domyślnego zaznaczenia (default = 0) * @param boolean $aktywny wyświetlaj tylko aktywne wiersze (default = true) */ class radioList extends menuList { private $checkVal; private $aktywny; private $obrazki = False; private $scierzka; private $sortName; public function __construct($tableName, $fieldName, $idName, $checkVal = 0, $aktywny = True) { parent::__construct($tableName, $fieldName, $idName); } protected function prepear() { if($this->aktywny == TRUE) { $this->addWhereAnd("aktywny = 't'"); } if($this->checkVal != 0) $this->addWhereOr($this->idName = $this->checkVal); $this->sortById(); } /** * Funckaja ustawia parametr obrazki na true/false jeżeli w liście radio zamiast tekstu * mają być wyświetlane obrazki * @param boolean */ public function setObrazki($obrazki) { $this->obrazki = $obrazki; } /** * Funckaja ustawia parametr ścierzka na string jeżeli w liście radio zamiast tekstu * mają być wyświetlane obrazki wg podanej ścierzki * @param string $scierzka */ public function setScierzka($scierzka = 'pic/') { $this->scierzka = $scierzka; } public function PrintList() { $ar = $this->getItemDB(); foreach ($ar as $pole) { if($this->checkVal == $pole[$this->fieldName]) { $selected = ' checked="checked" '; }else { $selected = ''; } if($this->obrazki){ $label = '<img src="pic/'.$pole[$this->fieldName].'.png" width="16" height="16" alt="'.$pole[$this->fieldName].'" title="'.$pole[$this->fieldName].'"/>'; }else{ $label = $pole[$this->fieldName]; } $tekst .= '<input type="radio" '.$selected.' name="'.$this->tableName.'" value="'.$pole['id'].'" /><label for="imie">'.$label.'</label>'; } return $tekst; } }
include_once 'abstract.menuList.php'; /** * * * @author Paweł Wołkowski * */ final class selectMenu extends menuList { private $aktywny; private $checkVal; private $wolne; private $firstField = '___BRAK___'; public function __construct($tableName, $fieldName, $idName, $checkVal = '', $aktywny = False, $wolne = False) { parent::__construct($tableName, $fieldName, $idName); $this->aktywny = $aktywny; $this->checkVal = $checkVal; $this->wolne = $wolne; $this->prepear(); } protected function prepear() { if($this->aktywny == TRUE) { $this->addWhereAnd("aktywny = 't'"); if($this->checkVal != '') { $this->addWhereOr("$this->idName = $this->checkVal"); } } if($this->wolne == TRUE) { $this->addWhereAnd("stan = 'W'"); if($this->checkVal != '') { $this->addWhereOr("$this->idName = $this->checkVal"); } } $this->checkByName(); $this->sortByName(); } public function PrintList() { $ar = $this->getItemDB(); $tekst = '<SELECT NAME="'.$this->idName.'" SIZE="1" style="width:111">'. "\n"; $tekst .= '<OPTION VALUE="">'.$this->firstField.'</OPTION>'. "\n"; foreach ($ar as $pole) { if($this->checkVal == $pole[$this->checkBy]) { $selected = ' SELECTED = "SELECTED" '; }else { $selected = ''; } $tekst .= '<OPTION VALUE="'.$pole[$this->idName].'"'.$selected.'>'.$pole[$this->fieldName].'</OPTION>'. "\n"; } $tekst .= '</SELECT>'. "\n"; return $tekst; } } $test = new selectMenu('nawigacja', 'numer_ewidencyjny', 'id_naw','30');//nawigacja nazwa tabeli, numer_ewidencyjny - wyświetlana wartość, id_naw zwracany identyfikator, 30 - zaznaczona pozycja $test->checkById(); $test->sortByName('DESC');//standardowo malejąco ale jak trzeba to można rosnąco
protected $_name; protected $_size; protected $_type; public function __construct() { //tu następuje zainicjowanie pól klasy odpowiednimi wartościami } public function create() { } public function remove() { } }
public function __construct() { parent::__construct(); } public function crop() { } public function scale() { } } } private $_content; public function __construct($content) { parent::__construct(); $this->_content = $content; } public function addContent($addedContent) { //tralala } }
<?php abstract class TextItem { protected $author; protected $title; protected $content; protected $created_at; protected $viewed = 0; // ilość wyświetleń abstract function load($id); // metoda wczytująca z bazy i wypełniająca obiekt pobranymi danymi public function increaseViewed() { ++$this->viewed; } // tutaj cała masa getterów/setterów } class News extends TextItem { protected $short_content; // News ma jeszcze skrócona tresc protected $display_on_abc; // News ma jeszcze właściwość "Wyświetlaj w ABC" public function load($id) { //.... } // gettery/settery dla dwóch nowych pól } class Article extends TextItem { // A to akurat nie ma niczego specjalnego, ale oczywiście mogło by mieć. Np.: zaimplementowany podział treści na strony public function load($id) { //.... } }