Completed
Push — master ( efdf8d...2fd22e )
by Michael
02:24
created
src/AbstractActiveRecord.php 2 patches
Indentation   +233 added lines, -233 removed lines patch added patch discarded remove patch
@@ -17,237 +17,237 @@
 block discarded – undo
17 17
  */
18 18
 abstract class AbstractActiveRecord implements ActiveRecordInterface
19 19
 {
20
-	/** @var \PDO The PDO object. */
21
-	private $pdo;
22
-
23
-	/** @var null|int The ID. */
24
-	private $id;
25
-
26
-	/**
27
-	 * Construct an abstract pdo active record with the given pdo.
28
-	 *
29
-	 * @param \PDO $pdo
30
-	 */
31
-	public function __construct(\PDO $pdo)
32
-	{
33
-		$pdo->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_ASSOC);
34
-		$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
35
-
36
-		$this->setPdo($pdo);
37
-	}
38
-
39
-	/**
40
-	 * {@inheritdoc}
41
-	 */
42
-	public function create()
43
-	{
44
-		try {
45
-			$pdoStatement = $this->getPdo()->prepare($this->getCreateQuery());
46
-			$pdoStatement->execute($this->getActiveRecordData());
47
-
48
-			$this->setId(intval($this->getPdo()->lastInsertId()));
49
-		} catch(\PDOException $e) {
50
-			throw new ActiveRecordException('Can\'t create the record.', 0, $e);
51
-		}
52
-
53
-		return $this;
54
-	}
55
-
56
-	/**
57
-	 * Returns the create query.
58
-	 *
59
-	 * @return string the create query.
60
-	 */
61
-	private function getCreateQuery()
62
-	{
63
-		$columns = array_keys($this->getActiveRecordData());
64
-		$values = [];
65
-
66
-		foreach ($columns as $key => $value) {
67
-			$values[] = ':' . $value;
68
-		}
69
-
70
-		return sprintf('INSERT INTO %s (%s) VALUES (%s)', $this->getActiveRecordName(), implode(', ', $columns), implode(', ', $values));
71
-	}
72
-
73
-	/**
74
-	 * {@inheritdoc}
75
-	 */
76
-	public function read($id)
77
-	{
78
-		try {
79
-			$pdoStatement = $this->getPdo()->prepare($this->getReadQuery());
80
-			$pdoStatement->execute(['id' => $id]);
81
-
82
-			$this->setActiveRecordData($pdoStatement->fetch());
83
-			$this->setId($id);
84
-		} catch (\PDOException $e) {
85
-			throw new ActiveRecordException('Can\'t read the record.', 0, $e);
86
-		}
87
-
88
-		return $this;
89
-	}
90
-
91
-	/**
92
-	 * Returns the read query.
93
-	 *
94
-	 * @return string the read query.
95
-	 */
96
-	private function getReadQuery()
97
-	{
98
-		return sprintf('SELECT * FROM `%s` WHERE `id` = :id', $this->getActiveRecordName());
99
-	}
100
-
101
-	/**
102
-	 * {@inheritdoc}
103
-	 */
104
-	public function update()
105
-	{
106
-		if (!$this->exists()) {
107
-			throw new ActiveRecordException('Can\'t update a non-existent record.');
108
-		}
109
-
110
-		try {
111
-			$pdoStatement = $this->getPdo()->prepare($this->getUpdateQuery());
112
-			$pdoStatement->execute(['id' => $this->getId()] + $this->getActiveRecordData());
113
-		} catch (\PDOException $e) {
114
-			throw new ActiveRecordException('Can\'t update the record.', 0, $e);
115
-		}
116
-
117
-		return $this;
118
-	}
119
-
120
-	/**
121
-	 * Returns the update query.
122
-	 *
123
-	 * @return string the update query.
124
-	 */
125
-	private function getUpdateQuery()
126
-	{
127
-		$values = [];
128
-
129
-		foreach (array_keys($this->getActiveRecordData()) as $key => $value) {
130
-			$values[] = $value . ' = :' . $value;
131
-		}
132
-
133
-		return sprintf('UPDATE %s SET %s WHERE `id` = :id', $this->getActiveRecordName(), implode(', ', $values));
134
-	}
135
-
136
-	/**
137
-	 * {@inheritdoc}
138
-	 */
139
-	public function delete()
140
-	{
141
-		if (!$this->exists()) {
142
-			throw new ActiveRecordException('Can\'t delete a non-existent record.');
143
-		}
144
-
145
-		try {
146
-			$pdoStatement = $this->getPdo()->prepare($this->getDeleteQuery());
147
-			$pdoStatement->execute(['id' => $this->getId()]);
148
-
149
-			$this->setId(null);
150
-		} catch (\PDOException $e) {
151
-			throw new ActiveRecordException('Can\'t delete the record.', 0, $e);
152
-		}
153
-
154
-		return $this;
155
-	}
156
-
157
-	/**
158
-	 * Returns the delete query.
159
-	 *
160
-	 * @return string the delete query.
161
-	 */
162
-	private function getDeleteQuery()
163
-	{
164
-		return sprintf('DELETE FROM %s WHERE `id` = :id', $this->getActiveRecordName());
165
-	}
166
-
167
-	/**
168
-	 * {@inheritdoc}
169
-	 */
170
-	public function exists()
171
-	{
172
-		return $this->getId() !== null;
173
-	}
174
-
175
-	/**
176
-	 * Returns the PDO.
177
-	 *
178
-	 * @return \PDO the PDO.
179
-	 */
180
-	public function getPdo()
181
-	{
182
-		return $this->pdo;
183
-	}
184
-
185
-	/**
186
-	 * Set the PDO.
187
-	 *
188
-	 * @param \PDO $pdo
189
-	 * @return $this
190
-	 */
191
-	protected function setPdo($pdo)
192
-	{
193
-		$this->pdo = $pdo;
194
-
195
-		return $this;
196
-	}
197
-
198
-	/**
199
-	 * Returns the ID.
200
-	 *
201
-	 * @return null|int The ID.
202
-	 */
203
-	public function getId()
204
-	{
205
-		return $this->id;
206
-	}
207
-
208
-	/**
209
-	 * Set the ID.
210
-	 *
211
-	 * @param int $id
212
-	 * @return $this
213
-	 */
214
-	protected function setId($id)
215
-	{
216
-		$this->id = $id;
217
-
218
-		return $this;
219
-	}
220
-
221
-	/**
222
-	 * Returns the active record name.
223
-	 *
224
-	 * @return string the active record name.
225
-	 */
226
-	abstract protected function getActiveRecordName();
227
-
228
-	/**
229
-	 * Returns the active record data.
230
-	 *
231
-	 * @return array the active record data.
232
-	 */
233
-	abstract protected function getActiveRecordData();
234
-
235
-	/**
236
-	 * Set the active record data.
237
-	 *
238
-	 * @param array $fetch
239
-	 * @return null
240
-	 */
241
-	protected function setActiveRecordData(array $fetch)
242
-	{
243
-		$data = $this->getActiveRecordData();
244
-
245
-		foreach ($data as $key => &$value) {
246
-			if (!isset($fetch[$key])) {
247
-				throw new ActiveRecordException(sprintf('Can\'t read the expected column "%s". It\'s not returnd by the database', $key));
248
-			}
249
-
250
-			$value = $fetch[$key];
251
-		}
252
-	}
20
+    /** @var \PDO The PDO object. */
21
+    private $pdo;
22
+
23
+    /** @var null|int The ID. */
24
+    private $id;
25
+
26
+    /**
27
+     * Construct an abstract pdo active record with the given pdo.
28
+     *
29
+     * @param \PDO $pdo
30
+     */
31
+    public function __construct(\PDO $pdo)
32
+    {
33
+        $pdo->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_ASSOC);
34
+        $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
35
+
36
+        $this->setPdo($pdo);
37
+    }
38
+
39
+    /**
40
+     * {@inheritdoc}
41
+     */
42
+    public function create()
43
+    {
44
+        try {
45
+            $pdoStatement = $this->getPdo()->prepare($this->getCreateQuery());
46
+            $pdoStatement->execute($this->getActiveRecordData());
47
+
48
+            $this->setId(intval($this->getPdo()->lastInsertId()));
49
+        } catch(\PDOException $e) {
50
+            throw new ActiveRecordException('Can\'t create the record.', 0, $e);
51
+        }
52
+
53
+        return $this;
54
+    }
55
+
56
+    /**
57
+     * Returns the create query.
58
+     *
59
+     * @return string the create query.
60
+     */
61
+    private function getCreateQuery()
62
+    {
63
+        $columns = array_keys($this->getActiveRecordData());
64
+        $values = [];
65
+
66
+        foreach ($columns as $key => $value) {
67
+            $values[] = ':' . $value;
68
+        }
69
+
70
+        return sprintf('INSERT INTO %s (%s) VALUES (%s)', $this->getActiveRecordName(), implode(', ', $columns), implode(', ', $values));
71
+    }
72
+
73
+    /**
74
+     * {@inheritdoc}
75
+     */
76
+    public function read($id)
77
+    {
78
+        try {
79
+            $pdoStatement = $this->getPdo()->prepare($this->getReadQuery());
80
+            $pdoStatement->execute(['id' => $id]);
81
+
82
+            $this->setActiveRecordData($pdoStatement->fetch());
83
+            $this->setId($id);
84
+        } catch (\PDOException $e) {
85
+            throw new ActiveRecordException('Can\'t read the record.', 0, $e);
86
+        }
87
+
88
+        return $this;
89
+    }
90
+
91
+    /**
92
+     * Returns the read query.
93
+     *
94
+     * @return string the read query.
95
+     */
96
+    private function getReadQuery()
97
+    {
98
+        return sprintf('SELECT * FROM `%s` WHERE `id` = :id', $this->getActiveRecordName());
99
+    }
100
+
101
+    /**
102
+     * {@inheritdoc}
103
+     */
104
+    public function update()
105
+    {
106
+        if (!$this->exists()) {
107
+            throw new ActiveRecordException('Can\'t update a non-existent record.');
108
+        }
109
+
110
+        try {
111
+            $pdoStatement = $this->getPdo()->prepare($this->getUpdateQuery());
112
+            $pdoStatement->execute(['id' => $this->getId()] + $this->getActiveRecordData());
113
+        } catch (\PDOException $e) {
114
+            throw new ActiveRecordException('Can\'t update the record.', 0, $e);
115
+        }
116
+
117
+        return $this;
118
+    }
119
+
120
+    /**
121
+     * Returns the update query.
122
+     *
123
+     * @return string the update query.
124
+     */
125
+    private function getUpdateQuery()
126
+    {
127
+        $values = [];
128
+
129
+        foreach (array_keys($this->getActiveRecordData()) as $key => $value) {
130
+            $values[] = $value . ' = :' . $value;
131
+        }
132
+
133
+        return sprintf('UPDATE %s SET %s WHERE `id` = :id', $this->getActiveRecordName(), implode(', ', $values));
134
+    }
135
+
136
+    /**
137
+     * {@inheritdoc}
138
+     */
139
+    public function delete()
140
+    {
141
+        if (!$this->exists()) {
142
+            throw new ActiveRecordException('Can\'t delete a non-existent record.');
143
+        }
144
+
145
+        try {
146
+            $pdoStatement = $this->getPdo()->prepare($this->getDeleteQuery());
147
+            $pdoStatement->execute(['id' => $this->getId()]);
148
+
149
+            $this->setId(null);
150
+        } catch (\PDOException $e) {
151
+            throw new ActiveRecordException('Can\'t delete the record.', 0, $e);
152
+        }
153
+
154
+        return $this;
155
+    }
156
+
157
+    /**
158
+     * Returns the delete query.
159
+     *
160
+     * @return string the delete query.
161
+     */
162
+    private function getDeleteQuery()
163
+    {
164
+        return sprintf('DELETE FROM %s WHERE `id` = :id', $this->getActiveRecordName());
165
+    }
166
+
167
+    /**
168
+     * {@inheritdoc}
169
+     */
170
+    public function exists()
171
+    {
172
+        return $this->getId() !== null;
173
+    }
174
+
175
+    /**
176
+     * Returns the PDO.
177
+     *
178
+     * @return \PDO the PDO.
179
+     */
180
+    public function getPdo()
181
+    {
182
+        return $this->pdo;
183
+    }
184
+
185
+    /**
186
+     * Set the PDO.
187
+     *
188
+     * @param \PDO $pdo
189
+     * @return $this
190
+     */
191
+    protected function setPdo($pdo)
192
+    {
193
+        $this->pdo = $pdo;
194
+
195
+        return $this;
196
+    }
197
+
198
+    /**
199
+     * Returns the ID.
200
+     *
201
+     * @return null|int The ID.
202
+     */
203
+    public function getId()
204
+    {
205
+        return $this->id;
206
+    }
207
+
208
+    /**
209
+     * Set the ID.
210
+     *
211
+     * @param int $id
212
+     * @return $this
213
+     */
214
+    protected function setId($id)
215
+    {
216
+        $this->id = $id;
217
+
218
+        return $this;
219
+    }
220
+
221
+    /**
222
+     * Returns the active record name.
223
+     *
224
+     * @return string the active record name.
225
+     */
226
+    abstract protected function getActiveRecordName();
227
+
228
+    /**
229
+     * Returns the active record data.
230
+     *
231
+     * @return array the active record data.
232
+     */
233
+    abstract protected function getActiveRecordData();
234
+
235
+    /**
236
+     * Set the active record data.
237
+     *
238
+     * @param array $fetch
239
+     * @return null
240
+     */
241
+    protected function setActiveRecordData(array $fetch)
242
+    {
243
+        $data = $this->getActiveRecordData();
244
+
245
+        foreach ($data as $key => &$value) {
246
+            if (!isset($fetch[$key])) {
247
+                throw new ActiveRecordException(sprintf('Can\'t read the expected column "%s". It\'s not returnd by the database', $key));
248
+            }
249
+
250
+            $value = $fetch[$key];
251
+        }
252
+    }
253 253
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -46,7 +46,7 @@
 block discarded – undo
46 46
 			$pdoStatement->execute($this->getActiveRecordData());
47 47
 
48 48
 			$this->setId(intval($this->getPdo()->lastInsertId()));
49
-		} catch(\PDOException $e) {
49
+		} catch (\PDOException $e) {
50 50
 			throw new ActiveRecordException('Can\'t create the record.', 0, $e);
51 51
 		}
52 52
 
Please login to merge, or discard this patch.
src/AbstractActiveRecordSearch.php 2 patches
Indentation   +51 added lines, -51 removed lines patch added patch discarded remove patch
@@ -17,65 +17,65 @@
 block discarded – undo
17 17
  */
18 18
 abstract class AbstractActiveRecordSearch extends AbstractActiveRecord
19 19
 {
20
-	/**
21
-	 * {@inheritdoc}
22
-	 */
23
-	public function search($options = [])
24
-	{
25
-		try {
26
-			$pdoStatement = $this->getPdo()->prepare($this->getSearchQuery($options));
27
-			array_walk_recursive($options, function (&$value) use ($pdoStatement) {
28
-				static $index = 1;
20
+    /**
21
+     * {@inheritdoc}
22
+     */
23
+    public function search($options = [])
24
+    {
25
+        try {
26
+            $pdoStatement = $this->getPdo()->prepare($this->getSearchQuery($options));
27
+            array_walk_recursive($options, function (&$value) use ($pdoStatement) {
28
+                static $index = 1;
29 29
 
30
-				$pdoStatement->bindParam($index++, $value);
31
-			});
30
+                $pdoStatement->bindParam($index++, $value);
31
+            });
32 32
 
33
-			$pdoStatement->execute();
34
-			$result = [];
33
+            $pdoStatement->execute();
34
+            $result = [];
35 35
 
36
-			while ($fetch = $pdoStatement->fetch()) {
37
-				$new = new static($this->getPdo());
36
+            while ($fetch = $pdoStatement->fetch()) {
37
+                $new = new static($this->getPdo());
38 38
 
39
-				$new->setId(intval($fetch['id']));
40
-				$new->setActiveRecordData($fetch);
39
+                $new->setId(intval($fetch['id']));
40
+                $new->setActiveRecordData($fetch);
41 41
 
42
-				$result[] = $new;
43
-			}
42
+                $result[] = $new;
43
+            }
44 44
 
45
-			return $result;
46
-		} catch (\PDOException $e) {
47
-			throw new ActiveRecordException('Can\'t search the record.', 0, $e);
48
-		}
49
-	}
45
+            return $result;
46
+        } catch (\PDOException $e) {
47
+            throw new ActiveRecordException('Can\'t search the record.', 0, $e);
48
+        }
49
+    }
50 50
 
51
-	/**
52
-	 * Returns the search query with the given options.
53
-	 *
54
-	 * @param array $options = []
55
-	 * @return string the search query with the given options.
56
-	 */
57
-	private function getSearchQuery($options = [])
58
-	{
59
-		$columns = array_keys($this->getActiveRecordData());
60
-		$columns[] = 'id';
61
-		$values = [];
51
+    /**
52
+     * Returns the search query with the given options.
53
+     *
54
+     * @param array $options = []
55
+     * @return string the search query with the given options.
56
+     */
57
+    private function getSearchQuery($options = [])
58
+    {
59
+        $columns = array_keys($this->getActiveRecordData());
60
+        $columns[] = 'id';
61
+        $values = [];
62 62
 
63
-		foreach ($options as $key => $value) {
64
-			if (!in_array($key, $columns)) {
65
-				throw new ActiveRecordException(sprintf('Option key "%s" doesn\'t exists.', $key));
66
-			}
63
+        foreach ($options as $key => $value) {
64
+            if (!in_array($key, $columns)) {
65
+                throw new ActiveRecordException(sprintf('Option key "%s" doesn\'t exists.', $key));
66
+            }
67 67
 
68
-			if (is_numeric($value)) {
69
-				$values[] = $key . ' = ?';
70
-			} elseif (is_string($value)) {
71
-				$values[] = $key . ' LIKE ?';
72
-			} elseif(is_array($value) && !empty($value)) {
73
-				$values[] = $key . ' IN(' . implode(',', array_fill(0, count($value), '?')) . ')';
74
-			} else {
75
-				throw new ActiveRecordException('Option value not supported.');
76
-			}
77
-		}
68
+            if (is_numeric($value)) {
69
+                $values[] = $key . ' = ?';
70
+            } elseif (is_string($value)) {
71
+                $values[] = $key . ' LIKE ?';
72
+            } elseif(is_array($value) && !empty($value)) {
73
+                $values[] = $key . ' IN(' . implode(',', array_fill(0, count($value), '?')) . ')';
74
+            } else {
75
+                throw new ActiveRecordException('Option value not supported.');
76
+            }
77
+        }
78 78
 
79
-		return sprintf('SELECT * FROM %s %s %s', $this->getActiveRecordName(), empty($values) ? '' : 'WHERE', implode(' AND ', $values));
80
-	}
79
+        return sprintf('SELECT * FROM %s %s %s', $this->getActiveRecordName(), empty($values) ? '' : 'WHERE', implode(' AND ', $values));
80
+    }
81 81
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -24,7 +24,7 @@  discard block
 block discarded – undo
24 24
 	{
25 25
 		try {
26 26
 			$pdoStatement = $this->getPdo()->prepare($this->getSearchQuery($options));
27
-			array_walk_recursive($options, function (&$value) use ($pdoStatement) {
27
+			array_walk_recursive($options, function(&$value) use ($pdoStatement) {
28 28
 				static $index = 1;
29 29
 
30 30
 				$pdoStatement->bindParam($index++, $value);
@@ -69,7 +69,7 @@  discard block
 block discarded – undo
69 69
 				$values[] = $key . ' = ?';
70 70
 			} elseif (is_string($value)) {
71 71
 				$values[] = $key . ' LIKE ?';
72
-			} elseif(is_array($value) && !empty($value)) {
72
+			} elseif (is_array($value) && !empty($value)) {
73 73
 				$values[] = $key . ' IN(' . implode(',', array_fill(0, count($value), '?')) . ')';
74 74
 			} else {
75 75
 				throw new ActiveRecordException('Option value not supported.');
Please login to merge, or discard this patch.