Overview

Packages

  • log4php
    • appenders
    • configurators
    • filters
    • helpers
    • layouts
    • pattern
    • renderers

Classes

  • LoggerPatternConverterClass
  • LoggerPatternConverterCookie
  • LoggerPatternConverterDate
  • LoggerPatternConverterEnvironment
  • LoggerPatternConverterFile
  • LoggerPatternConverterLevel
  • LoggerPatternConverterLine
  • LoggerPatternConverterLiteral
  • LoggerPatternConverterLocation
  • LoggerPatternConverterLogger
  • LoggerPatternConverterMDC
  • LoggerPatternConverterMessage
  • LoggerPatternConverterMethod
  • LoggerPatternConverterNDC
  • LoggerPatternConverterNewLine
  • LoggerPatternConverterProcess
  • LoggerPatternConverterRelative
  • LoggerPatternConverterRequest
  • LoggerPatternConverterServer
  • LoggerPatternConverterSession
  • LoggerPatternConverterSessionID
  • LoggerPatternConverterSuperglobal
  • LoggerPatternConverterThrowable
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * Licensed to the Apache Software Foundation (ASF) under one or more
  4:  * contributor license agreements. See the NOTICE file distributed with
  5:  * this work for additional information regarding copyright ownership.
  6:  * The ASF licenses this file to You under the Apache License, Version 2.0
  7:  * (the "License"); you may not use this file except in compliance with
  8:  * the License. You may obtain a copy of the License at
  9:  *
 10:  *     http://www.apache.org/licenses/LICENSE-2.0
 11:  *
 12:  * Unless required by applicable law or agreed to in writing, software
 13:  * distributed under the License is distributed on an "AS IS" BASIS,
 14:  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 15:  * See the License for the specific language governing permissions and
 16:  * limitations under the License.
 17:  *
 18:  * @package log4php
 19:  */
 20: 
 21: /**
 22:  * Returns a value from a superglobal array corresponding to the 
 23:  * given key.
 24:  * 
 25:  * Option: the key to look up within the superglobal array
 26:  * 
 27:  * Also, it is possible that a superglobal variable is not populated by PHP
 28:  * because of the settings in the variables-order ini directive. In this case
 29:  * the converter will return an empty value.
 30:  * 
 31:  * @see http://php.net/manual/en/language.variables.superglobals.php
 32:  * @see http://www.php.net/manual/en/ini.core.php#ini.variables-order
 33:  * 
 34:  * @package log4php
 35:  * @subpackage pattern
 36:  * @version $Revision: 1326626 $
 37:  * @since 2.3
 38:  */
 39: abstract class LoggerPatternConverterSuperglobal extends LoggerPatternConverter {
 40: 
 41:     /** 
 42:      * Name of the superglobal variable, to be defined by subclasses. 
 43:      * For example: "_SERVER" or "_ENV". 
 44:      */
 45:     protected $name;
 46:     
 47:     protected $value = '';
 48:     
 49:     public function activateOptions() {
 50:         // Read the key from options array
 51:         if (isset($this->option) && $this->option !== '') {
 52:             $key = $this->option;
 53:         }
 54:     
 55:         /*
 56:          * There is a bug in PHP which doesn't allow superglobals to be 
 57:          * accessed when their name is stored in a variable, e.g.:
 58:          * 
 59:          * $name = '_SERVER';
 60:          * $array = $$name;
 61:          * 
 62:          * This code does not work when run from within a method (only when run
 63:          * in global scope). But the following code does work: 
 64:          * 
 65:          * $name = '_SERVER';
 66:          * global $$name;
 67:          * $array = $$name;
 68:          * 
 69:          * That's why global is used here.
 70:          */
 71:         global ${$this->name};
 72:             
 73:         // Check the given superglobal exists. It is possible that it is not initialized.
 74:         if (!isset(${$this->name})) {
 75:             $class = get_class($this);
 76:             trigger_error("log4php: $class: Cannot find superglobal variable \${$this->name}.", E_USER_WARNING);
 77:             return;
 78:         }
 79:         
 80:         $source = ${$this->name};
 81:         
 82:         // When the key is set, display the matching value
 83:         if (isset($key)) {
 84:             if (isset($source[$key])) {
 85:                 $this->value = $source[$key]; 
 86:             }
 87:         }
 88:         
 89:         // When the key is not set, display all values
 90:         else {
 91:             $values = array();
 92:             foreach($source as $key => $value) {
 93:                 $values[] = "$key=$value";
 94:             }
 95:             $this->value = implode(', ', $values);          
 96:         }
 97:     }
 98:     
 99:     public function convert(LoggerLoggingEvent $event) {
100:         return $this->value;
101:     }
102: }
103: 
Apache log4php API documentation generated by ApiGen 2.8.0