유틸리티 클래스의 정적 메서드에 로깅을 추가하는 가장 좋은 방법을 찾으려고합니다. 로깅을 위해 log4php를 사용하고 있습니다. 내가 뭘하고 싶은 것입니다 :유틸리티 클래스의 정적 메서드에 로깅을 추가하는 가장 좋은 방법은 무엇입니까?
<?php
require_once WEBSITE_BASE_DIR . "/log4php/Logger.php";
class TestUtil
{
private static $log = Logger::getLogger("testutil");
public static function utilMethod1()
{
self::$log->trace("Entering utilMethod1");
// ... do stuff ...
self::$log->trace("Exiting utilMethod1");
}
public static function utilMethod2()
{
self::$log->trace("Entering utilMethod2");
// ... do stuff ...
self::$log->trace("Exiting utilMethod2");
}
}
그러나, 나는 PHP에서이 작업을 수행하고 $log
정적 변수의 초기화에 구문 오류를 얻을 수 없습니다. 나는이 작업을 수행하는 방법을 알아낼 수있는 유일한 방법은 모든 정적 메소드에 init()
호출을 추가하는 것입니다
<?php
require_once WEBSITE_BASE_DIR . "/log4php/Logger.php";
class TestUtil
{
private static $log = NULL;
private static function init()
{
if (self::$log == NULL)
{
self::$log = Logger::getLogger("testutil");
}
}
public static function utilMethod1()
{
self::init();
self::$log->trace("Entering utilMethod1");
// ... do stuff ...
self::$log->trace("Exiting utilMethod1");
}
public static function utilMethod2()
{
self::init();
self::$log->trace("Entering utilMethod2");
// ... do stuff ...
self::$log->trace("Exiting utilMethod2");
}
}
그러나 이것은 내가 많은 많은 유틸리티 클래스를 가지고 제공, 중복 코드의 과도한 양처럼 보인다 정적 메소드. 이 작업을 수행하는 더 좋은 방법이 있습니까?
모든 경우에 정적 방법을 사용하는 특별한 이유가 있습니까? – Devon
나는 모든 것에 정적 메서드를 사용하지 않습니다. 절차 기능을 함께 그룹화하는 방법. 응용 프로그램이 연결된 메서드를 사용하여 개체에 적합한 경우 비 정적 메서드를 사용합니다. – Talisphere