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: * Converts PHP configuration files to a PHP array.
23: *
24: * The file should only hold the PHP config array preceded by "return".
25: *
26: * Example PHP config file:
27: * <code>
28: * <?php
29: * return array(
30: * 'rootLogger' => array(
31: * 'level' => 'info',
32: * 'appenders' => array('default')
33: * ),
34: * 'appenders' => array(
35: * 'default' => array(
36: * 'class' => 'LoggerAppenderEcho',
37: * 'layout' => array(
38: * 'class' => 'LoggerLayoutSimple'
39: * )
40: * )
41: * )
42: * )
43: * ?>
44: * </code>
45: *
46: * @package log4php
47: * @subpackage configurators
48: * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
49: * @version $Revision: 1343601 $
50: * @since 2.2
51: */
52: class LoggerConfigurationAdapterPHP implements LoggerConfigurationAdapter
53: {
54: public function convert($url) {
55: if (!file_exists($url)) {
56: throw new LoggerException("File [$url] does not exist.");
57: }
58:
59: // Load the config file
60: $data = @file_get_contents($url);
61: if ($data === false) {
62: $error = error_get_last();
63: throw new LoggerException("Error loading config file: {$error['message']}");
64: }
65:
66: $config = @eval('?>' . $data);
67:
68: if ($config === false) {
69: $error = error_get_last();
70: throw new LoggerException("Error parsing configuration: " . $error['message']);
71: }
72:
73: if (empty($config)) {
74: throw new LoggerException("Invalid configuration: empty configuration array.");
75: }
76:
77: if (!is_array($config)) {
78: throw new LoggerException("Invalid configuration: not an array.");
79: }
80:
81: return $config;
82: }
83: }
84:
85: