From a32e24262ff8423c7ecdfbe7b5d73fabd0c43040 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Tue, 6 Oct 2015 01:26:50 +0200 Subject: [PATCH] loader.php: uses SPL autoloader --- src/Dibi/Connection.php | 6 +- src/Dibi/Drivers/MsSql2005Driver.php | 3 - src/Dibi/Drivers/MsSqlDriver.php | 1 - src/Dibi/Drivers/MySqlDriver.php | 3 - src/Dibi/Drivers/MySqliDriver.php | 3 - src/Dibi/Drivers/PdoDriver.php | 4 -- src/Dibi/Drivers/Sqlite3Driver.php | 3 - src/loader.php | 82 ++++++++++++++++++++-------- 8 files changed, 60 insertions(+), 45 deletions(-) diff --git a/src/Dibi/Connection.php b/src/Dibi/Connection.php index 26e3b64b..8e870b0e 100644 --- a/src/Dibi/Connection.php +++ b/src/Dibi/Connection.php @@ -78,11 +78,7 @@ class DibiConnection extends DibiObject $class = $tmp = preg_replace(array('#\W#', '#sql#'), array('_', 'Sql'), ucfirst(strtolower($config['driver']))); $class = "Dibi{$class}Driver"; if (!class_exists($class)) { - include_once dirname(__FILE__) . "/Drivers/$tmp.php"; - - if (!class_exists($class, FALSE)) { - throw new DibiException("Unable to create instance of dibi driver '$class'."); - } + throw new DibiException("Unable to create instance of dibi driver '$class'."); } $config['name'] = $name; diff --git a/src/Dibi/Drivers/MsSql2005Driver.php b/src/Dibi/Drivers/MsSql2005Driver.php index d10d5c4c..d02f6590 100644 --- a/src/Dibi/Drivers/MsSql2005Driver.php +++ b/src/Dibi/Drivers/MsSql2005Driver.php @@ -6,9 +6,6 @@ */ -require_once dirname(__FILE__) . '/MsSql2005Reflector.php'; - - /** * The dibi driver for MS SQL Driver 2005 database. * diff --git a/src/Dibi/Drivers/MsSqlDriver.php b/src/Dibi/Drivers/MsSqlDriver.php index 8b7f1a8d..449f460a 100644 --- a/src/Dibi/Drivers/MsSqlDriver.php +++ b/src/Dibi/Drivers/MsSqlDriver.php @@ -5,7 +5,6 @@ * Copyright (c) 2005 David Grudl (https://davidgrudl.com) */ -require_once dirname(__FILE__) . '/MsSqlReflector.php'; /** * The dibi driver for MS SQL database. diff --git a/src/Dibi/Drivers/MySqlDriver.php b/src/Dibi/Drivers/MySqlDriver.php index 062e9505..9f54c93e 100644 --- a/src/Dibi/Drivers/MySqlDriver.php +++ b/src/Dibi/Drivers/MySqlDriver.php @@ -6,9 +6,6 @@ */ -require_once dirname(__FILE__) . '/MySqlReflector.php'; - - /** * The dibi driver for MySQL database. * diff --git a/src/Dibi/Drivers/MySqliDriver.php b/src/Dibi/Drivers/MySqliDriver.php index 4dac9ab6..426110db 100644 --- a/src/Dibi/Drivers/MySqliDriver.php +++ b/src/Dibi/Drivers/MySqliDriver.php @@ -6,9 +6,6 @@ */ -require_once dirname(__FILE__) . '/MySqlReflector.php'; - - /** * The dibi driver for MySQL database via improved extension. * diff --git a/src/Dibi/Drivers/PdoDriver.php b/src/Dibi/Drivers/PdoDriver.php index 88d25e15..19c65953 100644 --- a/src/Dibi/Drivers/PdoDriver.php +++ b/src/Dibi/Drivers/PdoDriver.php @@ -6,10 +6,6 @@ */ -require_once dirname(__FILE__) . '/MySqlReflector.php'; -require_once dirname(__FILE__) . '/SqliteReflector.php'; - - /** * The dibi driver for PDO. * diff --git a/src/Dibi/Drivers/Sqlite3Driver.php b/src/Dibi/Drivers/Sqlite3Driver.php index 96fb9750..1a629889 100644 --- a/src/Dibi/Drivers/Sqlite3Driver.php +++ b/src/Dibi/Drivers/Sqlite3Driver.php @@ -6,9 +6,6 @@ */ -require_once dirname(__FILE__) . '/SqliteReflector.php'; - - /** * The dibi driver for SQLite3 database. * diff --git a/src/loader.php b/src/loader.php index 6d1c6af9..b5f91241 100644 --- a/src/loader.php +++ b/src/loader.php @@ -11,26 +11,62 @@ if (PHP_VERSION_ID < 50404) { } -require_once dirname(__FILE__) . '/Dibi/interfaces.php'; -require_once dirname(__FILE__) . '/Dibi/Dibi.php'; -require_once dirname(__FILE__) . '/Dibi/DateTime.php'; -require_once dirname(__FILE__) . '/Dibi/Object.php'; -require_once dirname(__FILE__) . '/Dibi/Literal.php'; -require_once dirname(__FILE__) . '/Dibi/HashMap.php'; -require_once dirname(__FILE__) . '/Dibi/exceptions.php'; -require_once dirname(__FILE__) . '/Dibi/Connection.php'; -require_once dirname(__FILE__) . '/Dibi/Result.php'; -require_once dirname(__FILE__) . '/Dibi/ResultIterator.php'; -require_once dirname(__FILE__) . '/Dibi/Row.php'; -require_once dirname(__FILE__) . '/Dibi/Translator.php'; -require_once dirname(__FILE__) . '/Dibi/DataSource.php'; -require_once dirname(__FILE__) . '/Dibi/Fluent.php'; -require_once dirname(__FILE__) . '/Dibi/Reflection/Column.php'; -require_once dirname(__FILE__) . '/Dibi/Reflection/Database.php'; -require_once dirname(__FILE__) . '/Dibi/Reflection/ForeignKey.php'; -require_once dirname(__FILE__) . '/Dibi/Reflection/Index.php'; -require_once dirname(__FILE__) . '/Dibi/Reflection/Result.php'; -require_once dirname(__FILE__) . '/Dibi/Reflection/Table.php'; -require_once dirname(__FILE__) . '/Dibi/Event.php'; -require_once dirname(__FILE__) . '/Dibi/Loggers/FileLogger.php'; -require_once dirname(__FILE__) . '/Dibi/Loggers/FirePhpLogger.php'; +spl_autoload_register(function ($class) { + static $map = [ + 'dibi' => 'dibi.php', + 'Dibi' => 'dibi.php', + 'Dibi\Bridges\Nette\DibiExtension22' => 'Bridges/Nette/DibiExtension22.php', + 'Dibi\Bridges\Tracy\Panel' => 'Bridges/Tracy/Panel.php', + 'DibiColumnInfo' => 'Reflection/Column.php', + 'DibiConnection' => 'Connection.php', + 'DibiDatabaseInfo' => 'Reflection/Database.php', + 'DibiDataSource' => 'DataSource.php', + 'DibiDateTime' => 'DateTime.php', + 'DibiDriverException' => 'exceptions.php', + 'DibiEvent' => 'Event.php', + 'DibiException' => 'exceptions.php', + 'DibiFileLogger' => 'Loggers/FileLogger.php', + 'DibiFirebirdDriver' => 'Drivers/FirebirdDriver.php', + 'DibiFirePhpLogger' => 'Loggers/FirePhpLogger.php', + 'DibiFluent' => 'Fluent.php', + 'DibiForeignKeyInfo' => 'Reflection/ForeignKey.php', + 'DibiHashMap' => 'HashMap.php', + 'DibiHashMapBase' => 'HashMap.php', + 'DibiHelpers' => 'Helpers.php', + 'DibiIndexInfo' => 'Reflection/Index.php', + 'DibiLiteral' => 'Literal.php', + 'DibiMsSql2005Driver' => 'Drivers/MsSql2005Driver.php', + 'DibiMsSql2005Reflector' => 'Drivers/MsSql2005Reflector.php', + 'DibiMsSqlDriver' => 'Drivers/MsSqlDriver.php', + 'DibiMsSqlReflector' => 'Drivers/MsSqlReflector.php', + 'DibiMySqlDriver' => 'Drivers/MySqlDriver.php', + 'DibiMySqliDriver' => 'Drivers/MySqliDriver.php', + 'DibiMySqlReflector' => 'Drivers/MySqlReflector.php', + 'DibiNette21Extension' => 'Bridges/Nette/DibiExtension21.php', + 'DibiNettePanel' => 'Bridges/Nette/Panel.php', + 'DibiNotImplementedException' => 'exceptions.php', + 'DibiNotSupportedException' => 'exceptions.php', + 'DibiObject' => 'Object.php', + 'DibiOdbcDriver' => 'Drivers/OdbcDriver.php', + 'DibiOracleDriver' => 'Drivers/OracleDriver.php', + 'DibiPcreException' => 'exceptions.php', + 'DibiPdoDriver' => 'Drivers/PdoDriver.php', + 'DibiPostgreDriver' => 'Drivers/PostgreDriver.php', + 'DibiProcedureException' => 'exceptions.php', + 'DibiResult' => 'Result.php', + 'DibiResultInfo' => 'Reflection/Result.php', + 'DibiResultIterator' => 'ResultIterator.php', + 'DibiRow' => 'Row.php', + 'DibiSqlite3Driver' => 'Drivers/Sqlite3Driver.php', + 'DibiSqliteReflector' => 'Drivers/SqliteReflector.php', + 'DibiTableInfo' => 'Reflection/Table.php', + 'DibiTranslator' => 'Translator.php', + 'IDataSource' => 'interfaces.php', + 'IDibiDriver' => 'interfaces.php', + 'IDibiReflector' => 'interfaces.php', + 'IDibiResultDriver' => 'interfaces.php', + ]; + if (isset($map[$class])) { + require __DIR__ . '/Dibi/' . $map[$class]; + } +});