mgr = new Manager(); $this->mgr->addConnection($conattr); $this->mgr->setAsGlobal(); $this->mgr->bootEloquent(); } public function get_one($f2) { // do WHERE and return result object return T1::where('f2', '=', $f2)->firstOrFail(); } public function get_all() { // return array of objects return T1::all(); } public function put($o) { // save object $o->save(); } public function remove($f1) { // lookup object based on primary key and delete $o = T1::find($f1); $o->delete(); } } class T1DatabaseAccessFactory { const ELOQUENT = 'Eloquent'; public static function get_database_access($id, $conattr) { if($id === T1DatabaseAccessFactory::ELOQUENT) { return new T1DatabaseAccessEloquent($conattr); } else { throw new Exception("Unknown T1DatabaseAccess id: $id"); } } } interface T1Presenter { public function display($data); } class T1PresenterHtmlTable implements T1Presenter { public function display($data) { $rows = ""; foreach($data as $row) { $f1 = $row->f1; $f2 = $row->f2; $rows .= sprintf("\r\n$f1\r\n$f2\r\n\r\n"); } return "\r\n\r\n\r\n\r\n\r\n$rows
F1F2
\r\n"; } } class T1PresenterFactory { const HTML_TABLE = 'HTML Table'; public static function get_presenter($id) { if($id === T1PresenterFactory::HTML_TABLE) { return new T1PresenterHtmlTable() ; } else { throw new Exception("Unknown T1Presenter id: $id"); } } } function test() { $data_access = T1DatabaseAccessFactory::get_database_access(T1DatabaseAccessFactory::ELOQUENT, array('driver' => 'mysql', 'host' => 'localhost', 'database' => 'Test', 'user' => 'root', 'password' => '')); $presenter = T1PresenterFactory::get_presenter(T1PresenterFactory::HTML_TABLE); $f1 = $data_access->get_one('BB')->f1; echo "$f1
\r\n"; $data = $data_access->get_all(); echo $presenter->display($data); $data_access->put(T1::create(array('f1' => 999, 'f2' => 'XXX'))); $data = $data_access->get_all(); echo $presenter->display($data); $data_access->remove(999); $data = $data_access->get_all(); echo $presenter->display($data); } test(); ?>