Autor Zpráva
Pan X
Profil
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
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
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
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
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
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
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() );

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: