Stránka: 1 z 1
| [ Príspevkov: 12 ] | |
Autor | Správa |
---|
Registrovaný: 29.01.10 Prihlásený: 21.01.22 Príspevky: 627 Témy: 122 | 122 Bydlisko: Veľká Lomni... |
Ahojte, tak som si povedal, že si skúsim vytvoriť svoj vlastný redakčný systém. Problém je v tom, že ma nenapadá ako urobiť niečo ako šablonovací systém. Moja prvá myšlienka bola takáto no nefunguje mi v tom dosadenie titulku a description. Pre lepšiu orientáciu kostra projektu: Kód: class -Page.php theme css -main.css -install.php -install.php
Page.php Kód: <?php
class Page { public $title; public $description; public $type;
public function __construct($title, $description, $type) { $this->title = $title; $this->description = $description; $this->type = $type; }
public function renderInstall() { include 'theme/install.php'; } }
install.php (v zložke theme) Kód: <!DOCTYPE html> <html> <head> <title><?= $page->title ?></title> <meta name="description" content="<?= $page->description ?>"> <meta charset="UTF-8"> <link rel="stylesheet" type="text/css" href="theme/css/main.css"> </head>
<body>
<div id="container"> <form method="post"> <fieldset> <legend>Admin</legend> </fieldset>
<fieldset> <legend>Databáza</legend> </fieldset>
<input type="submit" value="Inštalovať"> </form> </div>
</body> </html>
install.php Kód: <?php require 'class/Page.php'; $page = new Page('Inštalácia', 'Inštalácia systému', 'default'); $page->renderInstall(); ?>
_________________ PC: CPU: AMD Phenom II X4 965 Black Edition BE 3.4GHz @ 4.0GHz Noctua NH-D14 MB: Gigabyte GA-970A-UD3 VGA: Sapphire AMD Radeon HD7850 2GB GDDR5 RAM: Kingston 4GB 1333MHz DDR3 CL9 DIMM PSU: be quiet! Pure Power L7-430W 80PLUS Monitor: ASUS 21" 1680x1050 CASE: Cooler Master Elite 311 Basic HDD: 7200rpm 500 GB, 5400rpm 500 GB DVD: Samsung DVD OS: Windows7 x64 Tablet: Asus Google Nexus 7, 32 GB, 3G, Nvidia Tegra 3 T30L Quad-Core 1.3 GHz, Android 4.4 KitKat, Synman's GwT ROM Mobil: Motorola Moto G 2nd. generation Dual-sim NTB: Toshiba Satellite C855 - 12J CPU: Intel Pentium B960 2.20 GHz GPU: AMD Radeon HD7610M |
|
Registrovaný: 21.02.06 Prihlásený: 08.12.14 Príspevky: 5404 Témy: 30 | 30 Bydlisko: Bratislava |
Bolo by dobré sa najprv trošku zdokonaliť v základoch OOP. Kde v šablóne sa zoberie tá premenná $page (to je otázka, nad ktorou máš pouvažovať ty)?
_________________ Neradím a nekomunikujem cez SS, ak niečo potrebujete, máte iné možnosti: Ak vám zmizla téma, alebo sa vám niečo nepáči. Ak potrebujete nahlásiť príspevok/človeka, reportujte ho. Ak máte s niečim problém, riešte to v danej téme. |
|
Registrovaný: 29.01.10 Prihlásený: 21.01.22 Príspevky: 627 Témy: 122 | 122 Bydlisko: Veľká Lomni... |
Kde som urobil chybu ohľadom OOP? A práve to neviem, ako tam dostať tú premennú. (teda niečo ma napadlo, ale to by bolo dosť krkolomné).
EDIT:// Vyriešil som to tak, že ešte pred volaním tej funkcie som premenné zadefinoval ako $GLOBALS['premenna'] a potom iba dosadil. Je to dobré riešenie?
_________________ PC: CPU: AMD Phenom II X4 965 Black Edition BE 3.4GHz @ 4.0GHz Noctua NH-D14 MB: Gigabyte GA-970A-UD3 VGA: Sapphire AMD Radeon HD7850 2GB GDDR5 RAM: Kingston 4GB 1333MHz DDR3 CL9 DIMM PSU: be quiet! Pure Power L7-430W 80PLUS Monitor: ASUS 21" 1680x1050 CASE: Cooler Master Elite 311 Basic HDD: 7200rpm 500 GB, 5400rpm 500 GB DVD: Samsung DVD OS: Windows7 x64 Tablet: Asus Google Nexus 7, 32 GB, 3G, Nvidia Tegra 3 T30L Quad-Core 1.3 GHz, Android 4.4 KitKat, Synman's GwT ROM Mobil: Motorola Moto G 2nd. generation Dual-sim NTB: Toshiba Satellite C855 - 12J CPU: Intel Pentium B960 2.20 GHz GPU: AMD Radeon HD7610M |
|
Registrovaný: 21.02.06 Prihlásený: 08.12.14 Príspevky: 5404 Témy: 30 | 30 Bydlisko: Bratislava |
:-| nie, ani náhodou to nie je dobré riešenie. Stále sa pýtaš, kde si urobil chybu ohľadom OOP? Pozri si, ako sú robené niektoré šablonóvacie triedy.
_________________ Neradím a nekomunikujem cez SS, ak niečo potrebujete, máte iné možnosti: Ak vám zmizla téma, alebo sa vám niečo nepáči. Ak potrebujete nahlásiť príspevok/človeka, reportujte ho. Ak máte s niečim problém, riešte to v danej téme. |
|
Registrovaný: 29.01.10 Prihlásený: 21.01.22 Príspevky: 627 Témy: 122 | 122 Bydlisko: Veľká Lomni... |
A čo takto? Kód: <?php
class Page { private $title; private $description; private $page; private $path;
public function __construct( $title, $description, $page ) { $this->title = $title; $this->description = $description; $this->page = $page; }
public function getPath() { $this->path = "theme/$this->page.php"; }
public function render() { include $this->path; } } A potom v install.php (v theme) iba volám $this->title atď.
_________________ PC: CPU: AMD Phenom II X4 965 Black Edition BE 3.4GHz @ 4.0GHz Noctua NH-D14 MB: Gigabyte GA-970A-UD3 VGA: Sapphire AMD Radeon HD7850 2GB GDDR5 RAM: Kingston 4GB 1333MHz DDR3 CL9 DIMM PSU: be quiet! Pure Power L7-430W 80PLUS Monitor: ASUS 21" 1680x1050 CASE: Cooler Master Elite 311 Basic HDD: 7200rpm 500 GB, 5400rpm 500 GB DVD: Samsung DVD OS: Windows7 x64 Tablet: Asus Google Nexus 7, 32 GB, 3G, Nvidia Tegra 3 T30L Quad-Core 1.3 GHz, Android 4.4 KitKat, Synman's GwT ROM Mobil: Motorola Moto G 2nd. generation Dual-sim NTB: Toshiba Satellite C855 - 12J CPU: Intel Pentium B960 2.20 GHz GPU: AMD Radeon HD7610M |
|
Registrovaný: 21.02.06 Prihlásený: 08.12.14 Príspevky: 5404 Témy: 30 | 30 Bydlisko: Bratislava |
Skúšal si to vôbec? Tu ti ťažko poradíme, keď ty by si potreboval popísať návrh celého šablónovacieho systému (a to sa mi nechce). Keď zavoláš metódu render, čo ti includne? Lebo path v tej chvíli existovať nemusí.
To isté v getPath (aj keď by sa to skôr malo volať setPath), myslíš, že ten zápis je správny? Že ti to bude fungovať?
_________________ Neradím a nekomunikujem cez SS, ak niečo potrebujete, máte iné možnosti: Ak vám zmizla téma, alebo sa vám niečo nepáči. Ak potrebujete nahlásiť príspevok/človeka, reportujte ho. Ak máte s niečim problém, riešte to v danej téme. |
|
Registrovaný: 29.01.10 Prihlásený: 21.01.22 Príspevky: 627 Témy: 122 | 122 Bydlisko: Veľká Lomni... |
Ano skusal som a funguje to.
_________________ PC: CPU: AMD Phenom II X4 965 Black Edition BE 3.4GHz @ 4.0GHz Noctua NH-D14 MB: Gigabyte GA-970A-UD3 VGA: Sapphire AMD Radeon HD7850 2GB GDDR5 RAM: Kingston 4GB 1333MHz DDR3 CL9 DIMM PSU: be quiet! Pure Power L7-430W 80PLUS Monitor: ASUS 21" 1680x1050 CASE: Cooler Master Elite 311 Basic HDD: 7200rpm 500 GB, 5400rpm 500 GB DVD: Samsung DVD OS: Windows7 x64 Tablet: Asus Google Nexus 7, 32 GB, 3G, Nvidia Tegra 3 T30L Quad-Core 1.3 GHz, Android 4.4 KitKat, Synman's GwT ROM Mobil: Motorola Moto G 2nd. generation Dual-sim NTB: Toshiba Satellite C855 - 12J CPU: Intel Pentium B960 2.20 GHz GPU: AMD Radeon HD7610M |
|
Registrovaný: 21.02.06 Prihlásený: 08.12.14 Príspevky: 5404 Témy: 30 | 30 Bydlisko: Bratislava |
Aj keď nezavoláš getPath? Lebo v predchádzajúcom kóde ju nemáš a príde mi, ako zbytočná. Prečo path nenastavíš priamo v konštruktore? Ale je to lepšia z možností, ako globálna premenná, ak ti to funguje a stačí, tak to použi. A nebol som si istý týmto zápisom: Kód: $this->path = "theme/$this->page.php"; nepoužívam úvodzovky (dvojité), ale ak to v pohode zožerie aj $this->page, tak je to ok.
_________________ Neradím a nekomunikujem cez SS, ak niečo potrebujete, máte iné možnosti: Ak vám zmizla téma, alebo sa vám niečo nepáči. Ak potrebujete nahlásiť príspevok/človeka, reportujte ho. Ak máte s niečim problém, riešte to v danej téme. |
|
Registrovaný: 29.01.10 Prihlásený: 21.01.22 Príspevky: 627 Témy: 122 | 122 Bydlisko: Veľká Lomni... |
K tomu getPath. Vlastne ani neviem, prečo to mám oddelené. Niekde som čítal, že na každú vec má byť jedna funkcia...
_________________ PC: CPU: AMD Phenom II X4 965 Black Edition BE 3.4GHz @ 4.0GHz Noctua NH-D14 MB: Gigabyte GA-970A-UD3 VGA: Sapphire AMD Radeon HD7850 2GB GDDR5 RAM: Kingston 4GB 1333MHz DDR3 CL9 DIMM PSU: be quiet! Pure Power L7-430W 80PLUS Monitor: ASUS 21" 1680x1050 CASE: Cooler Master Elite 311 Basic HDD: 7200rpm 500 GB, 5400rpm 500 GB DVD: Samsung DVD OS: Windows7 x64 Tablet: Asus Google Nexus 7, 32 GB, 3G, Nvidia Tegra 3 T30L Quad-Core 1.3 GHz, Android 4.4 KitKat, Synman's GwT ROM Mobil: Motorola Moto G 2nd. generation Dual-sim NTB: Toshiba Satellite C855 - 12J CPU: Intel Pentium B960 2.20 GHz GPU: AMD Radeon HD7610M |
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
Taká funkcia zmysel má, ale tá tvoja robí niečo iné, ako by sa dalo predpokladať podľa názvu (očakával by som, že getPath vráti nejakú cestu a nie to, že bude niečo nastavovať).
|
|
Registrovaný: 21.02.06 Prihlásený: 08.12.14 Príspevky: 5404 Témy: 30 | 30 Bydlisko: Bratislava |
Hlavne píš triedy tak, aby dávali zmysel a boli aj idiot-proof. Ak niekto bude inicializovať triedu Page (ktorú by som skôr pomenoval Template) a zabudne zavolať getPath, tak mu to fungovať nebude. Nevidím dôvod, prečo nenastaviť cestu v constructe podľa $page a potom dať možnosť userovi to prepísať cez setPath (ak by chcel nastaviť inú cestu).
_________________ Neradím a nekomunikujem cez SS, ak niečo potrebujete, máte iné možnosti: Ak vám zmizla téma, alebo sa vám niečo nepáči. Ak potrebujete nahlásiť príspevok/človeka, reportujte ho. Ak máte s niečim problém, riešte to v danej téme. |
|
Registrovaný: 02.06.08 Prihlásený: 19.07.16 Príspevky: 3325 Témy: 147 | 147 Bydlisko: Žilina / Os... |
Daj si do youtube, MVC PHP a prvý odkaz je celý seriál, skús spraviť niečo podľa toho, ak vieš OOP trochu lepšie tak nieje problém si to rozšíriť, jednoduchá kostra, na ktorej sa dá stavať Takto ako to máš to je nemožné rozširovať ... Pozri si moju prácu, nieje to nič super, to píšem občas vo vlaku, teraz nato nemám čas, aspoň kvôli štruktúre: https://github.com/majky358/mvc/
_________________ PC - ASUS M2N-MX Se+ | AMD X2 4200+ | 2GB RAM | Nvidia 8600GT | WD 320GB | 350W |NTB - ASUS K50AB SX-010 | | ASUS X550L | SteelSeries Mousepad | A4tech XL-750BF | HTC Explorer | CCNA (640-802) | |
|
Stránka: 1 z 1
| [ Príspevkov: 12 ] | |
|