Autor | Zpráva | ||
---|---|---|---|
Tori Profil |
#1 · Zasláno: 8. 11. 2010, 16:40:27
Pěkné odpoledne,
nevíte prosím, jestli v php existuje něco podobného, jako jsou v Javě generické třídy, vytvořené jako šablony? Čtu teď zajímavou knihu o OOP, kde jsou příklady v Javě, a k tomuto jsem nevygooglila php ekvivalent (ostatně, nevím ani pod čím hledat - "template class php" najde akorát šablonovací systémy). Zkrácený příklad z knihy: public class Stack<X> { private List<X> list; public Stack<X>() { list = new LinkedList<X>(); } public void push(X anX) { list.addElement(anX); } } Stack<Plate> s = new Stack<Plate>(); s.push(new Plate("White")); Plate p = s.pop(); Díky za radu |
||
DoubleThink Profil * |
#2 · Zasláno: 8. 11. 2010, 17:41:47
Ne.
|
||
Nox Profil |
#3 · Zasláno: 8. 11. 2010, 17:51:08
Myslim, že by to šlo dost jednoduše vytvořit, udělala bys obecnou třídu, kde by jsi akorát předala, co má uchovávat
Pak by se akorát kontroloval typ manuálně |
||
Lamicz Profil |
#4 · Zasláno: 8. 11. 2010, 20:38:49
IMHO by se za to dalo do jisté míry považovat SPL
|
||
vrtakcz Profil |
#5 · Zasláno: 8. 11. 2010, 21:02:14 · Upravil/a: vrtakcz
Standardně ne... Ale nic ti nebrání udělat si něco "podobného".
<?php abstract class Stack { private $type; private $list; public function __construct($type) { $this->type = $type; $this->list = new LinkedList(); } public function push($anX) { if (!($anX instanceof $this->type)) { throw new \InvalidArgumentException("anX must be instance of {$this->type}"); } $this->list->addElement($anX); } } $s = new Stack('Plate'); $s->push(new Plate("White")); $p = $s->pop(); |
||
__construct Profil |
#6 · Zasláno: 9. 11. 2010, 10:32:54
vrtakcz:
Od ktorej verzie PHP je možné vytvárať inštancie abstraktných tried ? Tento kus zdrojáku pravdepodobne skončí fatal errorom … |
||
Tori Profil |
#7 · Zasláno: 9. 11. 2010, 15:46:43
Nox:
Aha takhle.. Věděla jsem, že by to šlo udělat jako v tomto příkladu, ale v Javě se mi líbil právě ten šablonový zápis. |
||
Časová prodleva: 15 let
|
0