Ich versuche herauszufinden, die beste Methode zum Hinzufügen von Protokollierung zu meinen statischen Methoden in Dienstprogrammklassen. Ich benutze log4php für die Protokollierung. Was würde Ich mag zu tun ist:Was ist die beste Methode zum Hinzufügen von Protokollierung zu statischen Methoden in Dienstprogrammklassen?
<?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");
}
}
Allerdings kann ich dies in PHP nicht tun und einen Syntaxfehler auf der Initialisierung der $log
statischen Variablen erhalten. Der einzige Weg, die ich herausfinden, wie dies zu tun ist ein init()
Aufruf an jede statische Methode hinzufügen:
<?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");
}
}
Aber dies scheint wie eine übermäßige Menge an redundanten Code zu geben, dass ich mit vielen vielen Utility-Klassen haben statische Methoden. Gibt es einen besseren Weg, dies zu tun?
Gibt es einen bestimmten Grund, dass Sie statische Methoden für alles verwenden? – Devon
Ich verwende keine statischen Methoden für alles. Nur so können Sie prozedurale Funktionen zusammenfassen. Wenn die Anwendung für ein Objekt mit zugeordneten Methoden geeignet ist, verwende ich nicht statische Methoden. – Talisphere