(Daha fazla sözleşmeler / arayüzleri olmadan) bir özel yöntem / işlevi görünüşte sadece ilgilendiğiniz beri onu statik bir metod veya bir nesne yöntemi (... hm, nesne olsun fark etmez bir şekilde kod yazabilirsiniz yöntem ... bu doğru gelmiyor, doğru adı ...) ya da basit bir işlev budur.
class LogDummy {
public static function write($s) {
echo 'LogDummy::write: ', $s, "\n";
}
public function writeMe($s) {
echo 'LogDummy->writeMe: ', $s, "\n";
}
}
class Database {
private static $log=null;
public static function setLog($fnLog) {
self::$log = $fnLog;
}
public static function log($s) {
call_user_func_array(self::$log, array($s));
}
}
// static method
Database::setLog(array('LogDummy', 'write'));
Database::log('foo');
// member method
$l = new LogDummy;
Database::setLog(array($l, 'writeMe'));
Database::log('bar');
// plain old function
function dummylog($s) {
echo 'dummylog: ', $s, "\n";
}
Database::setLog('dummylog');
Database::log('baz');
// anonymous function
Database::setLog( function($s) {
echo 'anonymous: ', $s, "\n";
} );
Database::log('ham');
baskılar
LogDummy::write: foo
LogDummy->writeMe: bar
dummylog: baz
anonymous: ham