Rev 29 | Rev 35 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 29 | Rev 34 | ||
|---|---|---|---|
| Line 1... | Line 1... | ||
| 1 | <?php
|
1 | <?php
|
| 2 | 2 | ||
| - | 3 | require_once __DIR__ . '/../Application.php'; |
|
| 3 | require_once __DIR__ . '/../AbstractModel.php'; |
4 | require_once __DIR__ . '/../AbstractModel.php'; |
| 4 | 5 | ||
| 5 | /**
|
6 | /**
|
| 6 | * Generic database table model class
|
7 | * Generic database table model class
|
| 7 | *
|
8 | *
|
| 8 | * @author Thomas Lahn
|
9 | * @author Thomas Lahn
|
| 9 | * @property-read int $lastInsertId
|
10 | * @property-read int $lastInsertId
|
| 10 | * ID of the last inserted row, or the last value from
|
11 | * ID of the last inserted row, or the last value from
|
| 11 | a sequence object, depending on the underlying driver.
|
12 | a sequence object, depending on the underlying driver.
|
| 12 | */
|
13 | */
|
| 13 | abstract class Table extends AbstractModel |
14 | class Table extends AbstractModel |
| 14 | {
|
15 | {
|
| 15 | /**
|
16 | /**
|
| 16 | * Name of the table
|
17 | * Name of the table
|
| 17 | */
|
18 | */
|
| 18 | protected $_name = ''; |
19 | protected $_name = ''; |
| Line 23... | Line 24... | ||
| 23 | */
|
24 | */
|
| 24 | protected $_database; |
25 | protected $_database; |
| 25 | 26 | ||
| 26 | protected $_id = 'id'; |
27 | protected $_id = 'id'; |
| 27 | 28 | ||
| - | 29 | /**
|
|
| - | 30 | * Creates a new <code>Table</code> instance.
|
|
| - | 31 | *
|
|
| - | 32 | * Each of the parameters is optional and can also be given
|
|
| - | 33 | * by a protected property where the parameter name is preceded
|
|
| - | 34 | * by <code>_</code>. Parameter values overwrite the default
|
|
| - | 35 | * property values. It is recommended to use default property
|
|
| - | 36 | * values of inheriting classes except for small applications
|
|
| 28 | public function __construct() |
37 | * and testing purposes.
|
| - | 38 | *
|
|
| - | 39 | * @param Database $database
|
|
| - | 40 | * Database of the table (required in order to use a fitting
|
|
| - | 41 | * query language)
|
|
| - | 42 | * @param string $name
|
|
| - | 43 | * Table name
|
|
| - | 44 | * @param string $id
|
|
| - | 45 | * Name of the primary key column
|
|
| - | 46 | * @throws InvalidArgumentException
|
|
| - | 47 | */
|
|
| - | 48 | public function __construct(Database $database = null, $name = '', $id = '') |
|
| 29 | {
|
49 | {
|
| - | 50 | if ($database === null) |
|
| - | 51 | {
|
|
| 30 | $this->_database = Application::getInstance()->getDefaultDatabase(); |
52 | $this->_database = Application::getInstance()->getDefaultDatabase(); |
| - | 53 | }
|
|
| - | 54 | else
|
|
| - | 55 | {
|
|
| - | 56 | $this->_database = $database; |
|
| - | 57 | }
|
|
| - | 58 | ||
| - | 59 | if ($name !== '') |
|
| - | 60 | {
|
|
| - | 61 | $this->_name = $name; |
|
| - | 62 | }
|
|
| - | 63 | ||
| - | 64 | if (!$this->_name) |
|
| - | 65 | {
|
|
| - | 66 | throw new InvalidArgumentException('a table name is required'); |
|
| - | 67 | }
|
|
| - | 68 | ||
| - | 69 | if ($id !== '') |
|
| - | 70 | {
|
|
| - | 71 | $this->_id = $id; |
|
| - | 72 | }
|
|
| 31 | }
|
73 | }
|
| 32 | 74 | ||
| 33 | /**
|
75 | /**
|
| 34 | * Returns the database for the table
|
76 | * Returns the database for the table
|
| 35 | * @return Database
|
77 | * @return Database
|