public static function get($storage, $setting = null, $defaultValue = false)
    {
        $setting = self::parseSetting($setting);

        if (empty($setting) || empty($storage)) {
            return $defaultValue;
        }

        if (!is_array($storage)) {
            return $defaultValue;
        }

        /**
         * If $setting is an array, process it recursively.
         */
        if (is_array($setting)) {
            /**
             * Check if we have the first $setting element in the
             * configuration data array.
             */
            if (array_key_exists(0, $setting) && array_key_exists($setting[0], $storage)) {
                /**
                 * Remove first element from $setting.
                 */
                $key = array_shift($setting);
                /**
                 * At the end of the recursion $setting will be
                 * an empty array. In this case we simply return the
                 * current configuration data.
                 */
                if (empty($setting)) {
                    return false !== $storage[$key] ? $storage[$key] : $defaultValue;
                }
                /**
                 * Go down one element in the configuration data
                 * and call the method again, with the remainig setting.
                 */
                return self::get($storage[$key], $setting, $defaultValue);
            }
            /**
             * The requested setting doesn't exist in our
             * configuration data array.
             */
            return $defaultValue;
        }

        /**
         * If we arrive here, $setting must be a simple string.
         */
        if (array_key_exists($setting, $storage)) {
            return $storage[$setting];
        }

        /**
         * If we got this far, there is no data to return.
         */
        return $defaultValue;
    }
public static function get($storage, $setting = null, $defaultValue = false)
    {
        $setting = self::parseSetting($setting);

        if (empty($setting) || empty($storage)) {
            return $defaultValue;
        }

        if (!is_array($storage)) {
            return $defaultValue;
        }

        /**
         * If $setting is an array, process it recursively.
         */
        if (is_array($setting)) {
            /**
             * Check if we have the first $setting element in the
             * configuration data array.
             */
            if (array_key_exists(0, $setting) && array_key_exists($setting[0], $storage)) {
                /**
                 * Remove first element from $setting.
                 */
                $key = array_shift($setting);
                /**
                 * At the end of the recursion $setting will be
                 * an empty array. In this case we simply return the
                 * current configuration data.
                 */
                if (empty($setting)) {
                    return false !== $storage[$key] ? $storage[$key] : $defaultValue;
                }
                /**
                 * Go down one element in the configuration data
                 * and call the method again, with the remainig setting.
                 */
                return self::get($storage[$key], $setting, $defaultValue);
            }
            /**
             * The requested setting doesn't exist in our
             * configuration data array.
             */
            return $defaultValue;
        }

        /**
         * If we arrive here, $setting must be a simple string.
         */
        if (array_key_exists($setting, $storage)) {
            return $storage[$setting];
        }

        /**
         * If we got this far, there is no data to return.
         */
        return $defaultValue;
    }
public static function get ( $ storage , $ setting = null , $ defaultValue = false ) { $ setting = self :: parseSetting ( $ setting ) ; if ( empty ( $ setting ) || empty ( $ storage ) ) { return $ defaultValue ; } if ( ! is_array ( $ storage ) ) { return $ defaultValue ; } /**
         * If $setting is an array, process it recursively.
         */ if ( is_array ( $ setting ) ) { /**
             * Check if we have the first $setting element in the
             * configuration data array.
             */ if ( array_key_exists ( 0 , $ setting ) && array_key_exists ( $ setting [ 0 ] , $ storage ) ) { /**
                 * Remove first element from $setting.
                 */ $ key = array_shift ( $ setting ) ; /**
                 * At the end of the recursion $setting will be
                 * an empty array. In this case we simply return the
                 * current configuration data.
                 */ if ( empty ( $ setting ) ) { return false !== $ storage [ $ key ] ? $ storage [ $ key ] : $ defaultValue ; } /**
                 * Go down one element in the configuration data
                 * and call the method again, with the remainig setting.
                 */ return self :: get ( $ storage [ $ key ] , $ setting , $ defaultValue ) ; } /**
             * The requested setting doesn't exist in our
             * configuration data array.
             */ return $ defaultValue ; } /**
         * If we arrive here, $setting must be a simple string.
         */ if ( array_key_exists ( $ setting , $ storage ) ) { return $ storage [ $ setting ] ; } /**
         * If we got this far, there is no data to return.
         */ return $ defaultValue ; }
Retrieve a value from a storage array.

@param mixed $storage
@param mixed $setting Can be an array, a string,
or a special formatted string
(eg 'app/path/project').
@param mixed $defaultValue
@return mixed
Retrieve a value from a storage array .