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: * The internal representation of caller location information.
23: *
24: * @version $Revision: 1379738 $
25: * @package log4php
26: * @since 0.3
27: */
28: class LoggerLocationInfo {
29:
30: /** The value to return when the location information is not available. */
31: const LOCATION_INFO_NA = 'NA';
32:
33: /**
34: * Caller line number.
35: * @var integer
36: */
37: protected $lineNumber;
38:
39: /**
40: * Caller file name.
41: * @var string
42: */
43: protected $fileName;
44:
45: /**
46: * Caller class name.
47: * @var string
48: */
49: protected $className;
50:
51: /**
52: * Caller method name.
53: * @var string
54: */
55: protected $methodName;
56:
57: /**
58: * All the information combined.
59: * @var string
60: */
61: protected $fullInfo;
62:
63: /**
64: * Instantiate location information based on a {@link PHP_MANUAL#debug_backtrace}.
65: *
66: * @param array $trace
67: * @param mixed $caller
68: */
69: public function __construct($trace, $fqcn = null) {
70: $this->lineNumber = isset($trace['line']) ? $trace['line'] : null;
71: $this->fileName = isset($trace['file']) ? $trace['file'] : null;
72: $this->className = isset($trace['class']) ? $trace['class'] : null;
73: $this->methodName = isset($trace['function']) ? $trace['function'] : null;
74: $this->fullInfo = $this->getClassName() . '.' . $this->getMethodName() .
75: '(' . $this->getFileName() . ':' . $this->getLineNumber() . ')';
76: }
77:
78: /** Returns the caller class name. */
79: public function getClassName() {
80: return ($this->className === null) ? self::LOCATION_INFO_NA : $this->className;
81: }
82:
83: /** Returns the caller file name. */
84: public function getFileName() {
85: return ($this->fileName === null) ? self::LOCATION_INFO_NA : $this->fileName;
86: }
87:
88: /** Returns the caller line number. */
89: public function getLineNumber() {
90: return ($this->lineNumber === null) ? self::LOCATION_INFO_NA : $this->lineNumber;
91: }
92:
93: /** Returns the caller method name. */
94: public function getMethodName() {
95: return ($this->methodName === null) ? self::LOCATION_INFO_NA : $this->methodName;
96: }
97:
98: /** Returns the full information of the caller. */
99: public function getFullInfo() {
100: return ($this->fullInfo === null) ? self::LOCATION_INFO_NA : $this->fullInfo;
101: }
102:
103: }
104: