Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
28.57% |
2 / 7 |
CRAP | |
67.57% |
25 / 37 |
| LoggerReflectionUtils | |
0.00% |
0 / 1 |
|
28.57% |
2 / 7 |
29.05 | |
67.57% |
25 / 37 |
| __construct($obj) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| setPropertiesByObject($obj, $properties, $prefix) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| setProperties($properties, $prefix) | |
0.00% |
0 / 1 |
6.09 | |
86.67% |
13 / 15 |
|||
| setProperty($name, $value) | |
0.00% |
0 / 1 |
3.33 | |
66.67% |
4 / 6 |
|||
| activate() | |
0.00% |
0 / 1 |
2.15 | |
66.67% |
2 / 3 |
|||
| createObject($class) | |
0.00% |
0 / 1 |
2.15 | |
66.67% |
2 / 3 |
|||
| setter($object, $name, $value) | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 6 |
|||
| <?php | |
| /** | |
| * Licensed to the Apache Software Foundation (ASF) under one or more | |
| * contributor license agreements. See the NOTICE file distributed with | |
| * this work for additional information regarding copyright ownership. | |
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |
| * (the "License"); you may not use this file except in compliance with | |
| * the License. You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| * | |
| * @package log4php | |
| */ | |
| /** | |
| * Provides methods for reflective use on php objects | |
| * @package log4php | |
| */ | |
| class LoggerReflectionUtils { | |
| /** the target object */ | |
| private $obj; | |
| /** | |
| * Create a new LoggerReflectionUtils for the specified Object. | |
| * This is done in prepartion for invoking {@link setProperty()} | |
| * one or more times. | |
| * @param object &$obj the object for which to set properties | |
| */ | |
| public function __construct($obj) { | |
| $this->obj = $obj; | |
| } | |
| /** | |
| * Set the properties of an object passed as a parameter in one | |
| * go. The <code>properties</code> are parsed relative to a | |
| * <code>prefix</code>. | |
| * | |
| * @param object $obj The object to configure. | |
| * @param array $properties An array containing keys and values. | |
| * @param string $prefix Only keys having the specified prefix will be set. | |
| */ | |
| // TODO: check, if this is really useful | |
| public static function setPropertiesByObject($obj, $properties, $prefix) { | |
| $pSetter = new LoggerReflectionUtils($obj); | |
| return $pSetter->setProperties($properties, $prefix); | |
| } | |
| /** | |
| * Set the properites for the object that match the | |
| * <code>prefix</code> passed as parameter. | |
| * | |
| * Example: | |
| * | |
| * $arr['xxxname'] = 'Joe'; | |
| * $arr['xxxmale'] = true; | |
| * and prefix xxx causes setName and setMale. | |
| * | |
| * @param array $properties An array containing keys and values. | |
| * @param string $prefix Only keys having the specified prefix will be set. | |
| */ | |
| public function setProperties($properties, $prefix) { | |
| $len = strlen($prefix); | |
| reset($properties); | |
| while(list($key,) = each($properties)) { | |
| if(strpos($key, $prefix) === 0) { | |
| if(strpos($key, '.', ($len + 1)) > 0) { | |
| continue; | |
| } | |
| $value = $properties[$key]; | |
| $key = substr($key, $len); | |
| if($key == 'layout' and ($this->obj instanceof LoggerAppender)) { | |
| continue; | |
| } | |
| $this->setProperty($key, $value); | |
| } | |
| } | |
| $this->activate(); | |
| } | |
| /** | |
| * Set a property on this PropertySetter's Object. If successful, this | |
| * method will invoke a setter method on the underlying Object. The | |
| * setter is the one for the specified property name and the value is | |
| * determined partly from the setter argument type and partly from the | |
| * value specified in the call to this method. | |
| * | |
| * <p>If the setter expects a String no conversion is necessary. | |
| * If it expects an int, then an attempt is made to convert 'value' | |
| * to an int using new Integer(value). If the setter expects a boolean, | |
| * the conversion is by new Boolean(value). | |
| * | |
| * @param string $name name of the property | |
| * @param string $value String value of the property | |
| */ | |
| public function setProperty($name, $value) { | |
| if($value === null) { | |
| return; | |
| } | |
| $method = "set" . ucfirst($name); | |
| if(!method_exists($this->obj, $method)) { | |
| throw new Exception("Error setting log4php property $name to $value: no method $method in class ".get_class($this->obj)."!"); | |
| } else { | |
| return call_user_func(array($this->obj, $method), $value); | |
| } | |
| } | |
| public function activate() { | |
| if(method_exists($this->obj, 'activateoptions')) { | |
| return call_user_func(array($this->obj, 'activateoptions')); | |
| } | |
| } | |
| /** | |
| * Creates an instances from the given class name. | |
| * | |
| * @param string $classname | |
| * @return an object from the class with the given classname | |
| */ | |
| public static function createObject($class) { | |
| if(!empty($class)) { | |
| return new $class(); | |
| } | |
| return null; | |
| } | |
| /** | |
| * @param object $object | |
| * @param string $name | |
| * @param mixed $value | |
| */ | |
| public static function setter($object, $name, $value) { | |
| if (empty($name)) { | |
| return false; | |
| } | |
| $methodName = 'set'.ucfirst($name); | |
| if (method_exists($object, $methodName)) { | |
| return call_user_func(array($object, $methodName), $value); | |
| } else { | |
| return false; | |
| } | |
| } | |
| } |