From 8c980b267fd16adb7860789136a38ee6617f5738 Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20CHAZALLET?= Date: Tue, 6 Nov 2012 16:06:58 +0100 Subject: [PATCH] =?utf8?q?Rajout=20du=20mod=C3=A8le=20C?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- module/Galerie/Module.php | 6 ++ .../src/Galerie/Controller/IndexController.php | 14 ++++ module/Galerie/src/Galerie/Model/GalerieC.php | 71 +++++++++++++++++++ module/Galerie/src/Galerie/Model/GalerieCTable.php | 73 ++++++++++++++++++++ module/Galerie/view/galerie/index/index.phtml | 12 ++++ 5 files changed, 176 insertions(+) create mode 100644 module/Galerie/src/Galerie/Model/GalerieC.php create mode 100644 module/Galerie/src/Galerie/Model/GalerieCTable.php diff --git a/module/Galerie/Module.php b/module/Galerie/Module.php index 3e3843d..74876bb 100644 --- a/module/Galerie/Module.php +++ b/module/Galerie/Module.php @@ -13,6 +13,7 @@ use Zend\Mvc\ModuleRouteListener; use Galerie\Model\GalerieArrayTable; use Galerie\Model\GalerieATable; use Galerie\Model\GalerieBTable; +use Galerie\Model\GalerieCTable; class Module implements AutoloaderProviderInterface, @@ -64,6 +65,11 @@ class Module implements $sm->get('Zend\Db\Adapter\Adapter') ); }, + 'Galerie\Model\GalerieCTable' => function($sm) { + return new GalerieCTable( + $sm->get('Zend\Db\Adapter\Adapter') + ); + }, ), ); } diff --git a/module/Galerie/src/Galerie/Controller/IndexController.php b/module/Galerie/src/Galerie/Controller/IndexController.php index de82f92..7fba8bc 100644 --- a/module/Galerie/src/Galerie/Controller/IndexController.php +++ b/module/Galerie/src/Galerie/Controller/IndexController.php @@ -10,6 +10,9 @@ class IndexController extends AbstractActionController private $_galerieArrayTable; private $_galerieATable; + private $_galerieBTable; + private $_galerieCTable; + private function _getGalerieArrayTable() { @@ -38,6 +41,15 @@ class IndexController extends AbstractActionController return $this->_galerieBTable; } + private function _getGalerieCTable() + { + if (!$this->_galerieCTable) { + $sm = $this->getServiceLocator(); + $this->_galerieCTable = $sm->get('Galerie\Model\GalerieCTable'); + } + return $this->_galerieCTable; + } + public function indexAction() { return new ViewModel(array( @@ -47,6 +59,8 @@ class IndexController extends AbstractActionController 'GalerieA_one' => $this->_getGalerieATable()->getGalerie(1), 'GalerieB_all' => $this->_getGalerieBTable()->fetchAll(), 'GalerieB_one' => $this->_getGalerieBTable()->getGalerie(1), + 'GalerieC_all' => $this->_getGalerieCTable()->fetchAll(), + 'GalerieC_one' => $this->_getGalerieCTable()->getGalerie(1), )); } diff --git a/module/Galerie/src/Galerie/Model/GalerieC.php b/module/Galerie/src/Galerie/Model/GalerieC.php new file mode 100644 index 0000000..dcf51c7 --- /dev/null +++ b/module/Galerie/src/Galerie/Model/GalerieC.php @@ -0,0 +1,71 @@ +columns as $col) { + if (array_key_exists($col, $data)) { + $this->$col = $data[$col]; + } elseif ($overwrite) { + $this->$col = null; + } + } + } + + public function toArray() { + $result = array(); + foreach($this->columns as $col) { + $result[$col] = $this->$col; + } + return $result; + } + + public function toUpdatableArray() { + $result = array(); + foreach($this->updatable_columns as $col) { + $result[$col] = $this->$col; + } + return $result; + } + + public function toPrimaryArray() { + $result = array(); + foreach($this->primary_columns as $col) { + $result[$col] = $this->$col; + } + return $result; + } + +} diff --git a/module/Galerie/src/Galerie/Model/GalerieCTable.php b/module/Galerie/src/Galerie/Model/GalerieCTable.php new file mode 100644 index 0000000..92dd6ba --- /dev/null +++ b/module/Galerie/src/Galerie/Model/GalerieCTable.php @@ -0,0 +1,73 @@ +adapter = $adapter; + + // Utilisation du patron de conception Prototype + // pour la création des objets ResultSet + $this->resultSetPrototype = new ResultSet(); + $this->resultSetPrototype->setArrayObjectPrototype( + new GalerieC() + ); + + // Initialisation du gestionnaire + $this->initialize(); + } + + public function fetchAll() + { + return $this->select(); + } + + public function getGalerie($id) + { + if ($id === null) { + $row = null; + } else { + $row = $this->select(array( + 'id' => (int) $id, + ))->current(); + } + if (!$row) { + throw new \Exception("cannot get row $id in table 'galerie'"); + } + return $row; + } + + public function saveGalerie(GalerieC $galerie) + { + if ($galerie->id === null) { + $this->insert( + $galerie->toUpdatableArray() + ); + } elseif ($this->getGalerie($galerie->id)) { + $this->update( + $galerie->toUpdatableArray(), + $galerie->toPrimaryArray() + ); + } else { + throw new \Exception("cannot update row {$galerie->id} in table 'galerie'"); + } + } + + public function deleteGalerie($id) + { + $this->delete(array( + 'id' => (int) $id + ) + ); + } + +} diff --git a/module/Galerie/view/galerie/index/index.phtml b/module/Galerie/view/galerie/index/index.phtml index 254f478..c6d2828 100644 --- a/module/Galerie/view/galerie/index/index.phtml +++ b/module/Galerie/view/galerie/index/index.phtml @@ -35,3 +35,15 @@

Identifiant : getId(); ?>

+ + +

GalerieC

+

test de fetchAll()

+ +
count(); ?>
+
toArray()); ?>
+ +

test de getGalerie

+ +
+

Identifiant : id; ?>

-- 1.7.10.4