Overview

Packages

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

Classes

  • Logger
  • LoggerAppender
  • LoggerAppenderPool
  • LoggerAutoloader
  • LoggerConfigurable
  • LoggerConfiguratorDefault
  • LoggerFilter
  • LoggerHierarchy
  • LoggerLayout
  • LoggerLevel
  • LoggerLocationInfo
  • LoggerLoggingEvent
  • LoggerMDC
  • LoggerNDC
  • LoggerReflectionUtils
  • LoggerRoot
  • LoggerThrowableInformation

Interfaces

  • LoggerConfigurator

Exceptions

  • LoggerException
  • 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:  * Provides methods for reflective use on php objects
 23:  * @package log4php
 24:  */
 25: class LoggerReflectionUtils {
 26:         /** the target object */
 27:     private $obj;
 28:     
 29:     /**
 30:      * Create a new LoggerReflectionUtils for the specified Object. 
 31:      * This is done in prepartion for invoking {@link setProperty()} 
 32:      * one or more times.
 33:      * @param object &$obj the object for which to set properties
 34:      */
 35:     public function __construct($obj) {
 36:         $this->obj = $obj;
 37:     }
 38:     
 39:     /**
 40:      * Set the properties of an object passed as a parameter in one
 41:      * go. The <code>properties</code> are parsed relative to a
 42:      * <code>prefix</code>.
 43:      *
 44:      * @param object $obj The object to configure.
 45:      * @param array $properties An array containing keys and values.
 46:      * @param string $prefix Only keys having the specified prefix will be set.
 47:      */
 48:      // TODO: check, if this is really useful
 49:     public static function setPropertiesByObject($obj, $properties, $prefix) {
 50:         $pSetter = new LoggerReflectionUtils($obj);
 51:         return $pSetter->setProperties($properties, $prefix);
 52:     }
 53:     
 54:     
 55:     /**
 56:      * Set the properites for the object that match the
 57:      * <code>prefix</code> passed as parameter.
 58:      * 
 59:      * Example:
 60:      * 
 61:      * $arr['xxxname'] = 'Joe';
 62:      * $arr['xxxmale'] = true;
 63:      * and prefix xxx causes setName and setMale.   
 64:      *
 65:      * @param array $properties An array containing keys and values.
 66:      * @param string $prefix Only keys having the specified prefix will be set.
 67:      */
 68:     public function setProperties($properties, $prefix) {
 69:         $len = strlen($prefix);
 70:         reset($properties);
 71:         while(list($key,) = each($properties)) {
 72:             if(strpos($key, $prefix) === 0) {
 73:                 if(strpos($key, '.', ($len + 1)) > 0) {
 74:                     continue;
 75:                 }
 76:                 $value = $properties[$key];
 77:                 $key = substr($key, $len);
 78:                 if($key == 'layout' and ($this->obj instanceof LoggerAppender)) {
 79:                     continue;
 80:                 }
 81:                 $this->setProperty($key, $value);
 82:             }
 83:         }
 84:         $this->activate();
 85:     }
 86:     
 87:     /**
 88:      * Set a property on this PropertySetter's Object. If successful, this
 89:      * method will invoke a setter method on the underlying Object. The
 90:      * setter is the one for the specified property name and the value is
 91:      * determined partly from the setter argument type and partly from the
 92:      * value specified in the call to this method.
 93:      *
 94:      * <p>If the setter expects a String no conversion is necessary.
 95:      * If it expects an int, then an attempt is made to convert 'value'
 96:      * to an int using new Integer(value). If the setter expects a boolean,
 97:      * the conversion is by new Boolean(value).
 98:      *
 99:      * @param string $name  name of the property
100:      * @param string $value String value of the property
101:      */
102:     public function setProperty($name, $value) {
103:         if($value === null) {
104:             return;
105:         }
106:         
107:         $method = "set" . ucfirst($name);
108:         
109:         if(!method_exists($this->obj, $method)) {
110:             throw new Exception("Error setting log4php property $name to $value: no method $method in class ".get_class($this->obj)."!");
111:         } else {
112:             return call_user_func(array($this->obj, $method), $value);
113:         } 
114:     }
115:     
116:     public function activate() {
117:         if(method_exists($this->obj, 'activateoptions')) {
118:             return call_user_func(array($this->obj, 'activateoptions'));
119:         } 
120:     }
121:     
122:     /**
123:      * Creates an instances from the given class name.
124:      *
125:      * @param string $classname
126:      * @return an object from the class with the given classname
127:      */
128:     public static function createObject($class) {
129:         if(!empty($class)) {
130:             return new $class();
131:         }
132:         return null;
133:     }
134:     
135:     /**
136:      * @param object $object
137:      * @param string $name
138:      * @param mixed $value
139:      */
140:     public static function setter($object, $name, $value) {
141:         if (empty($name)) {
142:             return false;
143:         }
144:         $methodName = 'set'.ucfirst($name);
145:         if (method_exists($object, $methodName)) {
146:             return call_user_func(array($object, $methodName), $value);
147:         } else {
148:             return false;
149:         }
150:     }
151:     
152: }
153: 
Apache log4php API documentation generated by ApiGen 2.8.0