Autor | Zpráva | ||
---|---|---|---|
Pan X Profil |
#1 · Zasláno: 7. 1. 2012, 21:14:01 · Upravil/a: Pan X
Zdravím,
řeším menší problém s návrhem jednoduché aplikace. Potřebuji poradit s jednoduchým propojení tříd a vytvořením nějakého autoloaderu. Mám hlavní třídu <?php class Base { protected $control; protected $message; protected $mailer; public function __construct() { $this->control = new Control; $this->message = new Message; $this->mailer = new Mailer; } } ?> a potom další 3 různé třídy <?php class Mailer extends Base { ... } ?> <?php class Message extends Base { ... } ?> <?php class Control extends Base { ... } ?> Každá třída je v jiném souboru a já potřebuju na hlavní stránce nahrát jeden soubor require_once 'Loader.php' tak aby se automaticky načetly všechny třídy ve svých souborech a já snimi mohl jednoduše pracovat. Mohl by něko poradit jak se s tím vypořádat? Předem díky |
||
Alphard Profil |
#2 · Zasláno: 7. 1. 2012, 21:41:54
http://php.net/manual/en/language.oop5.autoload.php
Ale ty závislosti se mi moc nelíbí. Máte to promyšlené? |
||
Pan X Profil |
#3 · Zasláno: 8. 1. 2012, 01:01:56
na autoload jsem koukal... Bohužel at dělám co dělám nepodaří se mi rozhýbat. Vždy když soustím autoload využiju 100% paměti (na locale) a nikdy se nepovede spustit.
Promyšlené... asi spíše ne. Základy OOP mám ale mám problém navrhnout strukturu aplikace tak aby bylo vše jak má být. Nedaří se mi najít nic podle čeho by se to dalo doučit. Potřebuju nějakým způsobem do třídy Mailer dostat možnost pracovat s třídami Control a Message a nevím jak to tedy vyřešit jinak |
||
Alphard Profil |
#4 · Zasláno: 8. 1. 2012, 01:42:54
Já jsem rebel, který rád porušuje konvence v adresářové struktuře, takže si neumím představit život bez robotického loaderu. Najde třídy ať jsou kdekoliv ve skenovaném prostoru.
Pokud jde o ten návrh aplikace, vyhnul bych se hlavně konstrukci class A $var = new B class B extends A „Potřebuju nějakým způsobem do třídy Mailer dostat možnost pracovat s třídami Control a Message“ V tom nevidím problém, ale nedefinujte to kruhem přes Base. |
||
Mastodont Profil |
#5 · Zasláno: 8. 1. 2012, 08:47:01
nahrát jeden soubor require_once 'Loader.php' tak aby se automaticky načetly všechny třídy ve svých souborech
No pokud nechceš autoloader, tak v Loader.php inkluduj všechy potřebné soubory ... +1 k názoru, že tvůj návrh tříd je velmi nešťastný. |
||
Pan X Profil |
#6 · Zasláno: 8. 1. 2012, 13:26:00
Alphard:
„V tom nevidím problém, ale nedefinujte to kruhem přes Base.“ Mohl by někdo ukázat jak na to, nebo aspon od kud čerpat? „Já jsem rebel, který rád porušuje konvence v adresářové struktuře, takže si neumím představit život bez robotického loaderu. Najde třídy ať jsou kdekoliv ve skenovaném prostoru.“ Dá se použít samostatně? Koukal jsem na to a snažil se ho vypreparovat abych nemusel tahat celé nete kvůli tédle maličkosti. Kdyby to bylo neco většího využiju ho, ale u tohoto si nejsem moc jistý |
||
Johnik Profil |
#7 · Zasláno: 8. 1. 2012, 13:52:25 · Upravil/a: Johnik
class Control { } class Message { } class Mailer { private $control; private $message; public function __constuct(Control $control, Message $message) { $this->control = $control; $this->message = $message; } } $mailer = new Mailer( new Control(), new Message() ); |
||
Časová prodleva: 13 let
|
0