Project

General

Profile

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
 * A base class from which all classes which have configurable properties are 
23
 * extended. Provides a generic setter with integrated validation.  
24
 * 
25
 * @package log4php
26
 * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
27
 * @version $Revision $
28
 * @since 2.2
29
 */
30
abstract class LoggerConfigurable {
31
	
32
	/** Setter function for boolean type. */
33
	protected function setBoolean($property, $value) {
34
		try {
35
			$this->$property = LoggerOptionConverter::toBooleanEx($value);
36
		} catch (Exception $ex) {
37
			$value = var_export($value, true);
38
			$this->warn("Invalid value given for '$property' property: [$value]. Expected a boolean value. Property not changed.");
39
		}
40
	}
41
	
42
	/** Setter function for integer type. */
43
	protected function setInteger($property, $value) {
44
		try {
45
			$this->$property = LoggerOptionConverter::toIntegerEx($value);
46
		} catch (Exception $ex) {
47
			$value = var_export($value, true);
48
			$this->warn("Invalid value given for '$property' property: [$value]. Expected an integer. Property not changed.");
49
		}
50
	}
51
	
52
	/** Setter function for LoggerLevel values. */
53
	protected function setLevel($property, $value) {
54
		try {
55
			$this->$property = LoggerOptionConverter::toLevelEx($value);
56
		} catch (Exception $ex) {
57
			$value = var_export($value, true);
58
			$this->warn("Invalid value given for '$property' property: [$value]. Expected a level value. Property not changed.");
59
		}
60
	}
61
	
62
	/** Setter function for integer type. */
63
	protected function setPositiveInteger($property, $value) {
64
		try {
65
			$this->$property = LoggerOptionConverter::toPositiveIntegerEx($value);
66
		} catch (Exception $ex) {
67
			$value = var_export($value, true);
68
			$this->warn("Invalid value given for '$property' property: [$value]. Expected a positive integer. Property not changed.");
69
		}
70
	}
71
	
72
	/** Setter for file size. */
73
	protected function setFileSize($property, $value) {
74
		try {
75
			$this->$property = LoggerOptionConverter::toFileSizeEx($value);
76
		} catch (Exception $ex) {
77
			$value = var_export($value, true);
78
			$this->warn("Invalid value given for '$property' property: [$value]. Expected a file size value.  Property not changed.");
79
		}
80
	}
81
	
82
	/** Setter function for numeric type. */
83
	protected function setNumeric($property, $value) {
84
		try {
85
			$this->$property = LoggerOptionConverter::toNumericEx($value);
86
		} catch (Exception $ex) {
87
			$value = var_export($value, true);
88
			$this->warn("Invalid value given for '$property' property: [$value]. Expected a number. Property not changed.");
89
		}
90
	}
91
	
92
	/** Setter function for string type. */
93
	protected function setString($property, $value, $nullable = false) {
94
		if ($value === null) {
95
			if($nullable) {
96
				$this->$property= null;
97
			} else {
98
				$this->warn("Null value given for '$property' property. Expected a string. Property not changed.");
99
			}
100
		} else {
101
			try {
102
				$this->$property = LoggerOptionConverter::toStringEx($value);
103
			} catch (Exception $ex) {
104
				$value = var_export($value, true);
105
				$this->warn("Invalid value given for '$property' property: [$value]. Expected a string. Property not changed.");
106
			}
107
		}
108
	}
109
	
110
	/** Triggers a warning. */
111
	protected function warn($message) {
112
		$class = get_class($this);
113
		trigger_error("log4php: $class: $message", E_USER_WARNING);
114
	}
115
}
116

    
117

    
118

    
119
?>
(5-5/19)