From 86a2171e899b289f0775dfe533264c6731bdc199 Mon Sep 17 00:00:00 2001 From: John Webb Date: Tue, 29 Jul 2014 09:51:18 -0500 Subject: [PATCH] Added DataMapper UML --- Structural/DataMapper/README.md | 4 ++++ Structural/DataMapper/uml/uml.png | Bin 0 -> 4879 bytes Structural/DataMapper/uml/uml.svg | 1 + Structural/DataMapper/uml/uml.txt | 26 ++++++++++++++++++++++++++ 4 files changed, 31 insertions(+) create mode 100644 Structural/DataMapper/uml/uml.png create mode 100644 Structural/DataMapper/uml/uml.svg create mode 100644 Structural/DataMapper/uml/uml.txt diff --git a/Structural/DataMapper/README.md b/Structural/DataMapper/README.md index 61245de..70efe20 100644 --- a/Structural/DataMapper/README.md +++ b/Structural/DataMapper/README.md @@ -16,3 +16,7 @@ The key point of this pattern is, unlike Active Record pattern, the data model f ## Examples * DB Object Relational Mapper (ORM) : Doctrine2 uses DAO named as "EntityRepository" + +## UML Diagram + +![Alt DataMapper UML Diagram](uml/uml.png) diff --git a/Structural/DataMapper/uml/uml.png b/Structural/DataMapper/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..748156f5b0cb4b90a3c8364cef62068f198a2a5c GIT binary patch literal 4879 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... (skipping 20 lines) ...+mapObject(array $row)}UserSyntax Error? \ No newline at end of file diff --git a/Structural/DataMapper/uml/uml.txt b/Structural/DataMapper/uml/uml.txt new file mode 100644 index 0000000..6fb4c02 --- /dev/null +++ b/Structural/DataMapper/uml/uml.txt @@ -0,0 +1,26 @@ +@startuml +class User { + protected $userId + protected $username + protected $email + +__construct($id = null, $username = null, $email = null) + +getUserId() + +setUserID($userId) + +getUsername() + +setUsername($username) + +getEmail() + +setEmail($email) +} + +class UserMapper { + protected $adapter + +__construct(DBAL $dbLayer) + +save(User $user) + +findById($id) + +findAll() + +mapObject(array $row) +} + +User +UserMapper +@enduml \ No newline at end of file