diff --git a/src/Dibi/Bridges/Nette/Panel.php b/src/Dibi/Bridges/Nette/Panel.php index 51d83f2f..a2768aa7 100644 --- a/src/Dibi/Bridges/Nette/Panel.php +++ b/src/Dibi/Bridges/Nette/Panel.php @@ -13,8 +13,10 @@ use Nette\Diagnostics\Debugger; * * @package dibi\nette */ -class DibiNettePanel extends DibiObject implements Nette\Diagnostics\IBarPanel +class DibiNettePanel implements Nette\Diagnostics\IBarPanel { + use DibiStrict; + /** @var int maximum SQL length */ static public $maxLength = 1000; diff --git a/src/Dibi/Bridges/Tracy/Panel.php b/src/Dibi/Bridges/Tracy/Panel.php index ff9fd0f4..0d74b52d 100644 --- a/src/Dibi/Bridges/Tracy/Panel.php +++ b/src/Dibi/Bridges/Tracy/Panel.php @@ -16,8 +16,10 @@ use DibiHelpers; * Dibi panel for Tracy. * @package dibi\nette */ -class Panel extends \DibiObject implements Tracy\IBarPanel +class Panel implements Tracy\IBarPanel { + use \DibiStrict; + /** @var int maximum SQL length */ static public $maxLength = 1000; diff --git a/src/Dibi/Connection.php b/src/Dibi/Connection.php index 2bf9b903..afcb2ab7 100644 --- a/src/Dibi/Connection.php +++ b/src/Dibi/Connection.php @@ -14,8 +14,10 @@ * @property-read int $affectedRows * @property-read int $insertId */ -class DibiConnection extends DibiObject +class DibiConnection { + use DibiStrict; + /** @var array of function (DibiEvent $event); Occurs after query is executed */ public $onEvent; diff --git a/src/Dibi/DataSource.php b/src/Dibi/DataSource.php index c5e3c1d1..8fb6a103 100644 --- a/src/Dibi/DataSource.php +++ b/src/Dibi/DataSource.php @@ -11,8 +11,10 @@ * * @package dibi */ -class DibiDataSource extends DibiObject implements IDataSource +class DibiDataSource implements IDataSource { + use DibiStrict; + /** @var DibiConnection */ private $connection; diff --git a/src/Dibi/DateTime.php b/src/Dibi/DateTime.php index 506dfde3..66820e97 100644 --- a/src/Dibi/DateTime.php +++ b/src/Dibi/DateTime.php @@ -13,6 +13,7 @@ */ class DibiDateTime extends DateTime { + use DibiStrict; public function __construct($time = 'now', DateTimeZone $timezone = NULL) { diff --git a/src/Dibi/Drivers/FirebirdDriver.php b/src/Dibi/Drivers/FirebirdDriver.php index 33dc4287..dd9f00f9 100644 --- a/src/Dibi/Drivers/FirebirdDriver.php +++ b/src/Dibi/Drivers/FirebirdDriver.php @@ -20,8 +20,10 @@ * * @package dibi\drivers */ -class DibiFirebirdDriver extends DibiObject implements IDibiDriver, IDibiResultDriver, IDibiReflector +class DibiFirebirdDriver implements IDibiDriver, IDibiResultDriver, IDibiReflector { + use DibiStrict; + const ERROR_EXCEPTION_THROWN = -836; /** @var resource Connection resource */ diff --git a/src/Dibi/Drivers/MsSql2005Driver.php b/src/Dibi/Drivers/MsSql2005Driver.php index 564acff1..2dba3e06 100644 --- a/src/Dibi/Drivers/MsSql2005Driver.php +++ b/src/Dibi/Drivers/MsSql2005Driver.php @@ -21,8 +21,10 @@ * * @package dibi\drivers */ -class DibiMsSql2005Driver extends DibiObject implements IDibiDriver, IDibiResultDriver +class DibiMsSql2005Driver implements IDibiDriver, IDibiResultDriver { + use DibiStrict; + /** @var resource Connection resource */ private $connection; diff --git a/src/Dibi/Drivers/MsSql2005Reflector.php b/src/Dibi/Drivers/MsSql2005Reflector.php index 1179a8ec..99a1f124 100644 --- a/src/Dibi/Drivers/MsSql2005Reflector.php +++ b/src/Dibi/Drivers/MsSql2005Reflector.php @@ -12,8 +12,10 @@ * @package dibi\drivers * @internal */ -class DibiMsSql2005Reflector extends DibiObject implements IDibiReflector +class DibiMsSql2005Reflector implements IDibiReflector { + use DibiStrict; + /** @var IDibiDriver */ private $driver; diff --git a/src/Dibi/Drivers/MsSqlDriver.php b/src/Dibi/Drivers/MsSqlDriver.php index 43b0a92c..a4329563 100644 --- a/src/Dibi/Drivers/MsSqlDriver.php +++ b/src/Dibi/Drivers/MsSqlDriver.php @@ -20,8 +20,10 @@ * * @package dibi\drivers */ -class DibiMsSqlDriver extends DibiObject implements IDibiDriver, IDibiResultDriver +class DibiMsSqlDriver implements IDibiDriver, IDibiResultDriver { + use DibiStrict; + /** @var resource Connection resource */ private $connection; diff --git a/src/Dibi/Drivers/MsSqlReflector.php b/src/Dibi/Drivers/MsSqlReflector.php index 1bf91a47..7246341d 100644 --- a/src/Dibi/Drivers/MsSqlReflector.php +++ b/src/Dibi/Drivers/MsSqlReflector.php @@ -12,8 +12,10 @@ * @package dibi\drivers * @internal */ -class DibiMsSqlReflector extends DibiObject implements IDibiReflector +class DibiMsSqlReflector implements IDibiReflector { + use DibiStrict; + /** @var IDibiDriver */ private $driver; diff --git a/src/Dibi/Drivers/MySqlDriver.php b/src/Dibi/Drivers/MySqlDriver.php index e8f0c5a0..d57bc2fd 100644 --- a/src/Dibi/Drivers/MySqlDriver.php +++ b/src/Dibi/Drivers/MySqlDriver.php @@ -26,8 +26,10 @@ * * @package dibi\drivers */ -class DibiMySqlDriver extends DibiObject implements IDibiDriver, IDibiResultDriver +class DibiMySqlDriver implements IDibiDriver, IDibiResultDriver { + use DibiStrict; + const ERROR_ACCESS_DENIED = 1045; const ERROR_DUPLICATE_ENTRY = 1062; const ERROR_DATA_TRUNCATED = 1265; diff --git a/src/Dibi/Drivers/MySqlReflector.php b/src/Dibi/Drivers/MySqlReflector.php index db504a7c..1f653604 100644 --- a/src/Dibi/Drivers/MySqlReflector.php +++ b/src/Dibi/Drivers/MySqlReflector.php @@ -12,8 +12,10 @@ * @package dibi\drivers * @internal */ -class DibiMySqlReflector extends DibiObject implements IDibiReflector +class DibiMySqlReflector implements IDibiReflector { + use DibiStrict; + /** @var IDibiDriver */ private $driver; diff --git a/src/Dibi/Drivers/MySqliDriver.php b/src/Dibi/Drivers/MySqliDriver.php index 1ab331e3..18d77506 100644 --- a/src/Dibi/Drivers/MySqliDriver.php +++ b/src/Dibi/Drivers/MySqliDriver.php @@ -27,8 +27,10 @@ * * @package dibi\drivers */ -class DibiMySqliDriver extends DibiObject implements IDibiDriver, IDibiResultDriver +class DibiMySqliDriver implements IDibiDriver, IDibiResultDriver { + use DibiStrict; + const ERROR_ACCESS_DENIED = 1045; const ERROR_DUPLICATE_ENTRY = 1062; const ERROR_DATA_TRUNCATED = 1265; diff --git a/src/Dibi/Drivers/OdbcDriver.php b/src/Dibi/Drivers/OdbcDriver.php index 8bd6757d..086eadbb 100644 --- a/src/Dibi/Drivers/OdbcDriver.php +++ b/src/Dibi/Drivers/OdbcDriver.php @@ -19,8 +19,10 @@ * * @package dibi\drivers */ -class DibiOdbcDriver extends DibiObject implements IDibiDriver, IDibiResultDriver, IDibiReflector +class DibiOdbcDriver implements IDibiDriver, IDibiResultDriver, IDibiReflector { + use DibiStrict; + /** @var resource Connection resource */ private $connection; diff --git a/src/Dibi/Drivers/OracleDriver.php b/src/Dibi/Drivers/OracleDriver.php index b3eeb534..11a02f4b 100644 --- a/src/Dibi/Drivers/OracleDriver.php +++ b/src/Dibi/Drivers/OracleDriver.php @@ -23,8 +23,10 @@ * * @package dibi\drivers */ -class DibiOracleDriver extends DibiObject implements IDibiDriver, IDibiResultDriver, IDibiReflector +class DibiOracleDriver implements IDibiDriver, IDibiResultDriver, IDibiReflector { + use DibiStrict; + /** @var resource Connection resource */ private $connection; diff --git a/src/Dibi/Drivers/PdoDriver.php b/src/Dibi/Drivers/PdoDriver.php index c5342507..f04c3c4b 100644 --- a/src/Dibi/Drivers/PdoDriver.php +++ b/src/Dibi/Drivers/PdoDriver.php @@ -20,8 +20,10 @@ * * @package dibi\drivers */ -class DibiPdoDriver extends DibiObject implements IDibiDriver, IDibiResultDriver +class DibiPdoDriver implements IDibiDriver, IDibiResultDriver { + use DibiStrict; + /** @var PDO Connection resource */ private $connection; diff --git a/src/Dibi/Drivers/PostgreDriver.php b/src/Dibi/Drivers/PostgreDriver.php index a21bbb92..9b36a384 100644 --- a/src/Dibi/Drivers/PostgreDriver.php +++ b/src/Dibi/Drivers/PostgreDriver.php @@ -20,8 +20,10 @@ * * @package dibi\drivers */ -class DibiPostgreDriver extends DibiObject implements IDibiDriver, IDibiResultDriver, IDibiReflector +class DibiPostgreDriver implements IDibiDriver, IDibiResultDriver, IDibiReflector { + use DibiStrict; + /** @var resource Connection resource */ private $connection; diff --git a/src/Dibi/Drivers/Sqlite3Driver.php b/src/Dibi/Drivers/Sqlite3Driver.php index ca91be6c..dbdee6f8 100644 --- a/src/Dibi/Drivers/Sqlite3Driver.php +++ b/src/Dibi/Drivers/Sqlite3Driver.php @@ -20,8 +20,10 @@ * * @package dibi\drivers */ -class DibiSqlite3Driver extends DibiObject implements IDibiDriver, IDibiResultDriver +class DibiSqlite3Driver implements IDibiDriver, IDibiResultDriver { + use DibiStrict; + /** @var SQLite3 Connection resource */ private $connection; diff --git a/src/Dibi/Drivers/SqliteReflector.php b/src/Dibi/Drivers/SqliteReflector.php index f0789e46..b3003adb 100644 --- a/src/Dibi/Drivers/SqliteReflector.php +++ b/src/Dibi/Drivers/SqliteReflector.php @@ -12,8 +12,10 @@ * @package dibi\drivers * @internal */ -class DibiSqliteReflector extends DibiObject implements IDibiReflector +class DibiSqliteReflector implements IDibiReflector { + use DibiStrict; + /** @var IDibiDriver */ private $driver; diff --git a/src/Dibi/Event.php b/src/Dibi/Event.php index a1b172b8..4d06647d 100644 --- a/src/Dibi/Event.php +++ b/src/Dibi/Event.php @@ -13,6 +13,8 @@ */ class DibiEvent { + use DibiStrict; + /** event type */ const CONNECT = 1, SELECT = 4, diff --git a/src/Dibi/Fluent.php b/src/Dibi/Fluent.php index 255e73f2..f95fb477 100644 --- a/src/Dibi/Fluent.php +++ b/src/Dibi/Fluent.php @@ -23,8 +23,10 @@ * @method DibiFluent leftJoin($table) * @method DibiFluent on($cond) */ -class DibiFluent extends DibiObject implements IDataSource +class DibiFluent implements IDataSource { + use DibiStrict; + const REMOVE = FALSE; /** @var array */ diff --git a/src/Dibi/Helpers.php b/src/Dibi/Helpers.php index 61993d3f..fc11828d 100644 --- a/src/Dibi/Helpers.php +++ b/src/Dibi/Helpers.php @@ -11,6 +11,7 @@ */ class DibiHelpers { + use DibiStrict; /** * Prints out a syntax highlighted version of the SQL command or DibiResult. diff --git a/src/Dibi/Literal.php b/src/Dibi/Literal.php index 63031932..183c4211 100644 --- a/src/Dibi/Literal.php +++ b/src/Dibi/Literal.php @@ -11,8 +11,10 @@ * * @package dibi */ -class DibiLiteral extends DibiObject +class DibiLiteral { + use DibiStrict; + /** @var string */ private $value; diff --git a/src/Dibi/Loggers/FileLogger.php b/src/Dibi/Loggers/FileLogger.php index 40bc552c..2e57d481 100644 --- a/src/Dibi/Loggers/FileLogger.php +++ b/src/Dibi/Loggers/FileLogger.php @@ -11,8 +11,10 @@ * * @package dibi */ -class DibiFileLogger extends DibiObject +class DibiFileLogger { + use DibiStrict; + /** @var string Name of the file where SQL errors should be logged */ public $file; diff --git a/src/Dibi/Loggers/FirePhpLogger.php b/src/Dibi/Loggers/FirePhpLogger.php index cf7e3eb6..9f6144aa 100644 --- a/src/Dibi/Loggers/FirePhpLogger.php +++ b/src/Dibi/Loggers/FirePhpLogger.php @@ -11,8 +11,10 @@ * * @package dibi */ -class DibiFirePhpLogger extends DibiObject +class DibiFirePhpLogger { + use DibiStrict; + /** maximum number of rows */ static public $maxQueries = 30; diff --git a/src/Dibi/Reflection/Column.php b/src/Dibi/Reflection/Column.php index cec546cd..d8f7d060 100644 --- a/src/Dibi/Reflection/Column.php +++ b/src/Dibi/Reflection/Column.php @@ -22,8 +22,10 @@ * @property-read bool $autoIncrement * @property-read mixed $default */ -class DibiColumnInfo extends DibiObject +class DibiColumnInfo { + use DibiStrict; + /** @var array */ private static $types; diff --git a/src/Dibi/Reflection/Database.php b/src/Dibi/Reflection/Database.php index 8cff21bc..81aa1ca2 100644 --- a/src/Dibi/Reflection/Database.php +++ b/src/Dibi/Reflection/Database.php @@ -15,8 +15,10 @@ * @property-read array $tables * @property-read array $tableNames */ -class DibiDatabaseInfo extends DibiObject +class DibiDatabaseInfo { + use DibiStrict; + /** @var IDibiReflector */ private $reflector; diff --git a/src/Dibi/Reflection/ForeignKey.php b/src/Dibi/Reflection/ForeignKey.php index d9cb6d3b..0093b8d8 100644 --- a/src/Dibi/Reflection/ForeignKey.php +++ b/src/Dibi/Reflection/ForeignKey.php @@ -15,8 +15,10 @@ * @property-read string $name * @property-read array $references */ -class DibiForeignKeyInfo extends DibiObject +class DibiForeignKeyInfo { + use DibiStrict; + /** @var string */ private $name; diff --git a/src/Dibi/Reflection/Index.php b/src/Dibi/Reflection/Index.php index 8a5e7f4f..c0848063 100644 --- a/src/Dibi/Reflection/Index.php +++ b/src/Dibi/Reflection/Index.php @@ -16,8 +16,10 @@ * @property-read bool $unique * @property-read bool $primary */ -class DibiIndexInfo extends DibiObject +class DibiIndexInfo { + use DibiStrict; + /** @var array (name, columns, [unique], [primary]) */ private $info; diff --git a/src/Dibi/Reflection/Result.php b/src/Dibi/Reflection/Result.php index 80661893..9f5b9ad8 100644 --- a/src/Dibi/Reflection/Result.php +++ b/src/Dibi/Reflection/Result.php @@ -14,8 +14,10 @@ * @property-read array $columns * @property-read array $columnNames */ -class DibiResultInfo extends DibiObject +class DibiResultInfo { + use DibiStrict; + /** @var IDibiResultDriver */ private $driver; diff --git a/src/Dibi/Reflection/Table.php b/src/Dibi/Reflection/Table.php index 301880ed..58a0a0b9 100644 --- a/src/Dibi/Reflection/Table.php +++ b/src/Dibi/Reflection/Table.php @@ -19,8 +19,10 @@ * @property-read array $indexes * @property-read DibiIndexInfo $primaryKey */ -class DibiTableInfo extends DibiObject +class DibiTableInfo { + use DibiStrict; + /** @var IDibiReflector */ private $reflector; diff --git a/src/Dibi/Result.php b/src/Dibi/Result.php index f2be5277..48492e28 100644 --- a/src/Dibi/Result.php +++ b/src/Dibi/Result.php @@ -26,8 +26,10 @@ * * @property-read int $rowCount */ -class DibiResult extends DibiObject implements IDataSource +class DibiResult implements IDataSource { + use DibiStrict; + /** @var array IDibiResultDriver */ private $driver; diff --git a/src/Dibi/ResultIterator.php b/src/Dibi/ResultIterator.php index c78a6f57..3b41d50b 100644 --- a/src/Dibi/ResultIterator.php +++ b/src/Dibi/ResultIterator.php @@ -22,6 +22,8 @@ */ class DibiResultIterator implements Iterator, Countable { + use DibiStrict; + /** @var DibiResult */ private $result; diff --git a/src/Dibi/Object.php b/src/Dibi/Strict.php similarity index 96% rename from src/Dibi/Object.php rename to src/Dibi/Strict.php index 960b48ee..145baac3 100644 --- a/src/Dibi/Object.php +++ b/src/Dibi/Strict.php @@ -7,10 +7,10 @@ /** - * Object is the ultimate ancestor of all instantiable classes. + * Better OOP experience. * @package dibi */ -abstract class DibiObject +trait DibiStrict { /** @var array [method => [type => callback]] */ private static $extMethods; diff --git a/src/Dibi/Translator.php b/src/Dibi/Translator.php index 6f5bef6d..24f7be4f 100644 --- a/src/Dibi/Translator.php +++ b/src/Dibi/Translator.php @@ -11,8 +11,10 @@ * * @package dibi */ -final class DibiTranslator extends DibiObject +final class DibiTranslator { + use DibiStrict; + /** @var DibiConnection */ private $connection; diff --git a/src/Dibi/dibi.php b/src/Dibi/dibi.php index 4ff33afd..e1e00dbb 100644 --- a/src/Dibi/dibi.php +++ b/src/Dibi/dibi.php @@ -14,6 +14,8 @@ */ class dibi { + use DibiStrict; + const AFFECTED_ROWS = 'a', IDENTIFIER = 'n'; diff --git a/src/Dibi/exceptions.php b/src/Dibi/exceptions.php index 5963c9cf..3f5cb39f 100644 --- a/src/Dibi/exceptions.php +++ b/src/Dibi/exceptions.php @@ -13,6 +13,8 @@ */ class DibiException extends Exception { + use DibiStrict; + /** @var string */ private $sql; @@ -116,6 +118,8 @@ class DibiDriverException extends DibiException */ class DibiPcreException extends Exception { + use DibiStrict; + public function __construct($message = '%msg.') { static $messages = [ diff --git a/src/loader.php b/src/loader.php index 78f11357..55947cbe 100644 --- a/src/loader.php +++ b/src/loader.php @@ -46,7 +46,7 @@ spl_autoload_register(function ($class) { 'DibiNettePanel' => 'Bridges/Nette/Panel.php', 'DibiNotImplementedException' => 'exceptions.php', 'DibiNotSupportedException' => 'exceptions.php', - 'DibiObject' => 'Object.php', + 'DibiStrict' => 'Strict.php', 'DibiOdbcDriver' => 'Drivers/OdbcDriver.php', 'DibiOracleDriver' => 'Drivers/OracleDriver.php', 'DibiPcreException' => 'exceptions.php', diff --git a/tests/dibi/Object.phpt b/tests/dibi/Strict.phpt similarity index 94% rename from tests/dibi/Object.phpt rename to tests/dibi/Strict.phpt index ef30319c..7460ffb5 100644 --- a/tests/dibi/Object.phpt +++ b/tests/dibi/Strict.phpt @@ -5,12 +5,9 @@ use Tester\Assert; require __DIR__ . '/bootstrap.php'; -class TestClass extends DibiObject +class TestClass { - public function callParent() - { - parent::callParent(); - } + use DibiStrict; public function getBar() { @@ -23,6 +20,14 @@ class TestClass extends DibiObject } } +class TestChild extends TestClass +{ + public function callParent() + { + parent::callParent(); + } +} + // calling Assert::exception(function () { @@ -35,7 +40,7 @@ Assert::exception(function () { }, 'LogicException', 'Call to undefined static method TestClass::undeclared().'); Assert::exception(function () { - $obj = new TestClass; + $obj = new TestChild; $obj->callParent(); }, 'LogicException', 'Call to undefined method parent::callParent().');