public function errx($msg) { $this->warnx($msg); exit; } public function warn($msg) { $e = error_get_last(); $this->warnx("{$msg}: {$e['message']}"); } public function warnx($msg) { slog("{$msg}"); } } YouTubeCacher::static_constructor(); function char_to_hex($ch) { return sprintf('%2X', ord($ch)); } function safe_filename($fn) { return preg_replace_callback('/[^a-zA-Z0-9_-]/', 'char_to_hex', $fn); } function fatal($msg) { slog($msg); exit; } function slog($msg) {