Heim > Artikel > Backend-Entwicklung > Was ich an der Funktion config_item im CodeIgniter-Quellcode nicht verstehe
<code class="php">if ( ! function_exists('get_config')) { /** * Loads the main config.php file * * This function lets us grab the config file even if the Config class * hasn't been instantiated yet * * @param array * @return array */ function &get_config(Array $replace = array()) { static $config; if (empty($config)) { $file_path = APPPATH.'config/config.php'; $found = FALSE; if (file_exists($file_path)) { $found = TRUE; require($file_path); } // Is the config file in the environment folder? if (file_exists($file_path = APPPATH.'config/'.ENVIRONMENT.'/config.php')) { require($file_path); } elseif ( ! $found) { set_status_header(503); echo 'The configuration file does not exist.'; exit(3); // EXIT_CONFIG } // Does the $config array exist in the file? if ( ! isset($config) OR ! is_array($config)) { set_status_header(503); echo 'Your config file does not appear to be formatted correctly.'; exit(3); // EXIT_CONFIG } } // Are any values being dynamically added or replaced? foreach ($replace as $key => $val) { $config[$key] = $val; } return $config; } } // ------------------------------------------------------------------------ if ( ! function_exists('config_item')) { /** * Returns the specified config item * * @param string * @return mixed */ function config_item($item) { static $_config; if (empty($_config)) { // references cannot be directly assigned to static variables, so we use an array $_config[0] =& get_config(); } return isset($_config[0][$item]) ? $_config[0][$item] : NULL; } }</code>Ich verstehe die Funktion des
-Symbols in $_config[0] =& get_config();
function &get_config(Array $replace = array())
und &
nicht = = Gibt es hier eine besondere Funktion der Verwendung des &
-Symbols = = Bitte antworten Sie ~
<code class="php">if ( ! function_exists('get_config')) { /** * Loads the main config.php file * * This function lets us grab the config file even if the Config class * hasn't been instantiated yet * * @param array * @return array */ function &get_config(Array $replace = array()) { static $config; if (empty($config)) { $file_path = APPPATH.'config/config.php'; $found = FALSE; if (file_exists($file_path)) { $found = TRUE; require($file_path); } // Is the config file in the environment folder? if (file_exists($file_path = APPPATH.'config/'.ENVIRONMENT.'/config.php')) { require($file_path); } elseif ( ! $found) { set_status_header(503); echo 'The configuration file does not exist.'; exit(3); // EXIT_CONFIG } // Does the $config array exist in the file? if ( ! isset($config) OR ! is_array($config)) { set_status_header(503); echo 'Your config file does not appear to be formatted correctly.'; exit(3); // EXIT_CONFIG } } // Are any values being dynamically added or replaced? foreach ($replace as $key => $val) { $config[$key] = $val; } return $config; } } // ------------------------------------------------------------------------ if ( ! function_exists('config_item')) { /** * Returns the specified config item * * @param string * @return mixed */ function config_item($item) { static $_config; if (empty($_config)) { // references cannot be directly assigned to static variables, so we use an array $_config[0] =& get_config(); } return isset($_config[0][$item]) ? $_config[0][$item] : NULL; } }</code>Ich verstehe die Funktion des
-Symbols in $_config[0] =& get_config();
function &get_config(Array $replace = array())
und &
nicht = = Gibt es hier eine besondere Funktion der Verwendung des &
-Symbols = = Bitte antworten Sie ~
Referenzübergabe und Referenzrückgabe können bis zu einem gewissen Grad Speicherplatz sparen und auch indirekt den Zielwert ändern.
Offizielle Dokumentation zur Referenzübergabe: http://www.php.net/manual/zh/sprache.references.pass.php
Offizielle Dokumentation zur Referenzrückgabe: http://php.net/manual/zh /Sprache .references.return.php
Hier erweitere ich ein Beispiel für die Rückgabe von Funktionsreferenzen
<code>function &get_config() { static $config = 0; $config += 1; echo sprintf("config=%d\n",$config); return $config; } $config_item = get_config(); $config_item = 100; $config_item = get_config(); $config_item = &get_config(); // 注意这里的& $config_item = 100; $config_item = get_config(); //输出 config=1 config=2 config=3 config=101</code>
Referenz übergeben, um Speicher zu sparen.
<code class="php">//它们都指向静态全局变量$config的zval $config1 = &get_config(); $config2 = &get_config();</code>