Verzeichnisstruktur phpBB-3.2.0


Veröffentlicht
06.01.2017

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

config_php_file.php

Zuletzt modifiziert: 09.10.2024, 12:51 - Dateigröße: 3.88 KiB


001  <?php
002  /**
003  *
004  * This file is part of the phpBB Forum Software package.
005  *
006  * @copyright (c) phpBB Limited <https://www.phpbb.com>
007  * @license GNU General Public License, version 2 (GPL-2.0)
008  *
009  * For full copyright and license information, please see
010  * the docs/CREDITS.txt file.
011  *
012  */
013   
014  namespace phpbb;
015   
016  class config_php_file
017  {
018      /** @var string phpBB Root Path */
019      protected $phpbb_root_path;
020   
021      /** @var string php file extension  */
022      protected $php_ext;
023   
024      /**
025      * Indicates whether the php config file has been loaded.
026      *
027      * @var bool
028      */
029      protected $config_loaded = false;
030   
031      /**
032      * The content of the php config file
033      *
034      * @var array
035      */
036      protected $config_data = array();
037   
038      /**
039      * The path to the config file. (Default: $phpbb_root_path . 'config.' . $php_ext)
040      *
041      * @var string
042      */
043      protected $config_file;
044   
045      private $defined_vars;
046   
047      /**
048      * Constructor
049      *
050      * @param string $phpbb_root_path phpBB Root Path
051      * @param string $php_ext php file extension
052      */
053      function __construct($phpbb_root_path, $php_ext)
054      {
055          $this->phpbb_root_path = $phpbb_root_path;
056          $this->php_ext = $php_ext;
057          $this->config_file = $this->phpbb_root_path . 'config.' . $this->php_ext;
058      }
059   
060      /**
061      * Set the path to the config file.
062      *
063      * @param string $config_file
064      */
065      public function set_config_file($config_file)
066      {
067          $this->config_file = $config_file;
068          $this->config_loaded = false;
069      }
070   
071      /**
072      * Returns an associative array containing the variables defined by the config file.
073      *
074      * @return array Return the content of the config file or an empty array if the file does not exists.
075      */
076      public function get_all()
077      {
078          $this->load_config_file();
079   
080          return $this->config_data;
081      }
082   
083      /**
084      * Return the value of a variable defined into the config.php file or null if the variable does not exist.
085      *
086      * @param string $variable The name of the variable
087      * @return mixed Value of the variable or null if the variable is not defined.
088      */
089      public function get($variable)
090      {
091          $this->load_config_file();
092   
093          return isset($this->config_data[$variable]) ? $this->config_data[$variable] : null;
094      }
095   
096      /**
097      * Load the config file and store the information.
098      *
099      * @return null
100      */
101      protected function load_config_file()
102      {
103          if (!$this->config_loaded && file_exists($this->config_file))
104          {
105              $this->defined_vars = get_defined_vars();
106   
107              require($this->config_file);
108              $this->config_data = array_diff_key(get_defined_vars(), $this->defined_vars);
109   
110              $this->config_loaded = true;
111          }
112      }
113   
114      /**
115      * Convert either 3.0 dbms or 3.1 db driver class name to 3.1 db driver class name.
116      *
117      * If $dbms is a valid 3.1 db driver class name, returns it unchanged.
118      * Otherwise prepends phpbb\db\driver\ to the dbms to convert a 3.0 dbms
119      * to 3.1 db driver class name.
120      *
121      * @param string $dbms dbms parameter
122      * @return string driver class
123      * @throws \RuntimeException
124      */
125      public function convert_30_dbms_to_31($dbms)
126      {
127          // Note: this check is done first because mysqli extension
128          // supplies a mysqli class, and class_exists($dbms) would return
129          // true for mysqli class.
130          // However, per the docblock any valid 3.1 driver name should be
131          // recognized by this function, and have priority over 3.0 dbms.
132          if (strpos($dbms, 'phpbb\db\driver') === false && class_exists('phpbb\db\driver\\' . $dbms))
133          {
134              return 'phpbb\db\driver\\' . $dbms;
135          }
136   
137          if (class_exists($dbms))
138          {
139              // Additionally we could check that $dbms extends phpbb\db\driver\driver.
140              // http://php.net/manual/en/class.reflectionclass.php
141              // Beware of possible performance issues:
142              // http://stackoverflow.com/questions/294582/php-5-reflection-api-performance
143              // We could check for interface implementation in all paths or
144              // only when we do not prepend phpbb\db\driver\.
145   
146              /*
147              $reflection = new \ReflectionClass($dbms);
148   
149              if ($reflection->isSubclassOf('phpbb\db\driver\driver'))
150              {
151                  return $dbms;
152              }
153              */
154   
155              return $dbms;
156          }
157   
158          throw new \RuntimeException("You have specified an invalid dbms driver: $dbms");
159      }
160  }
161