]> git.mxchange.org Git - friendica.git/blobdiff - src/Database/Database.php
Update src/Module/Magic.php
[friendica.git] / src / Database / Database.php
index a5fe7f978a1278eb08dcb4ac49edb9dbd99f4baf..b1ea6c1e4ffe4fa2b6db24e31cd93d57dba639b3 100644 (file)
@@ -36,6 +36,7 @@ use PDO;
 use PDOException;
 use PDOStatement;
 use Psr\Log\LoggerInterface;
+use Psr\Log\NullLogger;
 
 /**
  * This class is for the low level database stuff that does driver specific things.
@@ -54,15 +55,15 @@ class Database
        /**
         * @var IManageConfigValues
         */
-       protected $config;
+       protected $config = null;
        /**
         * @var Profiler
         */
-       protected $profiler;
+       protected $profiler = null;
        /**
         * @var LoggerInterface
         */
-       protected $logger;
+       protected $logger = null;
        protected $server_info = '';
        /** @var PDO|mysqli */
        protected $connection;
@@ -80,18 +81,36 @@ class Database
        /** @var ViewDefinition */
        protected $viewDefinition;
 
-       public function __construct(IManageConfigValues $config, Profiler $profiler, DbaDefinition $dbaDefinition, ViewDefinition $viewDefinition, LoggerInterface $logger)
+       public function __construct(IManageConfigValues $config, DbaDefinition $dbaDefinition, ViewDefinition $viewDefinition)
        {
                // We are storing these values for being able to perform a reconnect
                $this->config         = $config;
-               $this->profiler       = $profiler;
                $this->dbaDefinition  = $dbaDefinition;
                $this->viewDefinition = $viewDefinition;
-               $this->logger         = $logger;
+
+               // Use dummy values - necessary for the first factory call of the logger itself
+               $this->logger = new NullLogger();
+               $this->profiler = new Profiler($config);
 
                $this->connect();
        }
 
+       /**
+        * @param IManageConfigValues $config
+        * @param Profiler            $profiler
+        * @param LoggerInterface     $logger
+        *
+        * @return void
+        *
+        * @todo Make this method obsolete - use a clean pattern instead ...
+        */
+       public function setDependency(IManageConfigValues $config, Profiler $profiler, LoggerInterface $logger)
+       {
+               $this->logger   = $logger;
+               $this->profiler = $profiler;
+               $this->config   = $config;
+       }
+
        /**
         * Tries to connect to database
         *
@@ -748,7 +767,7 @@ class Database
         *
         * @param string $sql SQL statement
         *
-        * @return boolean Was the query successfull? False is returned only if an error occurred
+        * @return boolean Was the query successful? False is returned only if an error occurred
         * @throws \Exception
         */
        public function e(string $sql): bool
@@ -1302,7 +1321,7 @@ class Database
         * @param array|boolean $old_fields array with the old field values that are about to be replaced (true = update on duplicate, false = don't update identical fields)
         * @param array         $params     Parameters: "ignore" If set to "true" then the update is done with the ignore parameter
         *
-        * @return boolean was the update successfull?
+        * @return boolean was the update successful?
         * @throws \Exception
         * @todo Implement "bool $update_on_duplicate" to avoid mixed type for $old_fields
         */