Вход Регистрация
Файл: phpbb/request/deactivated_super_global.php
Строк: 97
<?php
/**
*
* This file is part of the phpBB Forum Software package.
*
* @copyright (c) phpBB Limited <https://www.phpbb.com>
* @license GNU General Public License, version 2 (GPL-2.0)
*
* For full copyright and license information, please see
* the docs/CREDITS.txt file.
*
*/

namespace phpbbrequest;

/**
* Replacement for a superglobal (like $_GET or $_POST) which calls
* trigger_error on all operations but isset, overloads the [] operator with SPL.
*/
class deactivated_super_global implements ArrayAccessCountableIteratorAggregate
{
    
/**
    * @var    string    Holds the name of the superglobal this is replacing.
    */
    
private $name;

    
/**
    * @var    phpbbrequestrequest_interface::POST|GET|REQUEST|COOKIE    Super global constant.
    */
    
private $super_global;

    
/**
    * @var    phpbbrequestrequest_interface    The request class instance holding the actual request data.
    */
    
private $request;

    
/**
    * Constructor generates an error message fitting the super global to be used within the other functions.
    *
    * @param    phpbbrequestrequest_interface    $request    A request class instance holding the real super global data.
    * @param    string                    $name        Name of the super global this is a replacement for - e.g. '_GET'.
    * @param    phpbbrequestrequest_interface::POST|GET|REQUEST|COOKIE    $super_global    The variable's super global constant.
    */
    
public function __construct(phpbbrequestrequest_interface $request$name$super_global)
    {
        
$this->request $request;
        
$this->name $name;
        
$this->super_global $super_global;
    }

    
/**
    * Calls trigger_error with the file and line number the super global was used in.
    */
    
private function error()
    {
        
$file '';
        
$line 0;

        
$message 'Illegal use of $' $this->name '. You must use the request class or request_var() to access input data. Found in %s on line %d. This error message was generated by deactivated_super_global.';

        
$backtrace debug_backtrace();
        if (isset(
$backtrace[1]))
        {
            
$file $backtrace[1]['file'];
            
$line $backtrace[1]['line'];
        }
        
trigger_error(sprintf($message$file$line), E_USER_ERROR);
    }

    
/**
    * Redirects isset to the correct request class call.
    *
    * @param    string    $offset    The key of the super global being accessed.
    *
    * @return    bool    Whether the key on the super global exists.
    */
    
public function offsetExists($offset)
    {
        return 
$this->request->is_set($offset$this->super_global);
    }

    
/**#@+
    * Part of the ArrayAccess implementation, will always result in a FATAL error.
    */
    
public function offsetGet($offset)
    {
        
$this->error();
    }

    public function 
offsetSet($offset$value)
    {
        
$this->error();
    }

    public function 
offsetUnset($offset)
    {
        
$this->error();
    }
    
/**#@-*/

    /**
    * Part of the Countable implementation, will always result in a FATAL error
    */
    
public function count()
    {
        
$this->error();
    }

    
/**
    * Part of the Traversable/IteratorAggregate implementation, will always result in a FATAL error
    */
    
public function getIterator()
    {
        
$this->error();
    }
}
Онлайн: 2
Реклама