Kdy se připojit k databázi?
- Jakub Lédl
- Člen | 55
Kdy je nejlepší doba na připojení k databázi? Co jsem zatím viděl, řeší se to buď takto:
<?php
abstract class BasePresenter extends /*Nette\Application\*/Presenter {
...
protected function startup() {
$this->db = new DibiConnection(array(
...
));
}
}
?>
nebo takto:
<?php
// bootstrap.php
$application->onStartup[] = 'BaseModel::initialize';
?>
Osobně se mi nejjednodušší a nejpohodlnější zdá volat přímo v
bootstrap.php
dibi::connect(Environment::getConfig('database'));
. Jelikož jsem
to neviděl v žádném příkladu, je nějaký logický důvod to nedělat
(předpokládejme, že chci tahat data z DB při každém requestu)?
- Petr Motejlek
- Člen | 293
Lazy neni spatne, problem je, ze kdyz pouzivas treba dataSource(), tak se o chybe spojeni dozvis obvykle az ve chvili, kdy v sablone nad tim datasourcem volas foreach. Lepsi reseni je v pripade, ze vis, ze aplikace bez DB nema cenu, dat dibi::connect() uz do bootstrapu, resp. si vytvorit funkcicku a tu pridat to $application->onStartup pole. Kdyz aplikace potrebuje DB jen obcas, stejne se k ni pripojuji uz v bootstrapu, radsi at mi to zdechne ve chvili, kdy jde jeste nejak normalne presmerovat na ErrorPresenter.
- PetrP
- Člen | 587
Připojování do db by si měl řešit Model.
A je už jedno jak přesně:
$application->onStartup[] = 'BaseModel::initialize';
//nebo v
BaseModel::__construct();
//nebo v
BaseModel::getConnection();
To že použiju lazy a dozvím se to až v šabloně mi nevadí, protože laděnka případný výstup zakryje.
Řeší se to třeba tady:
https://forum.nette.org/…tion-z-nette
nebo
https://forum.nette.org/…ipojeni-k-db
Stačí jen hledat.
Editoval PetrP (20. 1. 2010 18:06)