1<?php 2 3/* 4 * This file is part of SwiftMailer. 5 * (c) 2004-2009 Chris Corbyn 6 * 7 * For the full copyright and license information, please view the LICENSE 8 * file that was distributed with this source code. 9 */ 10 11/** 12 * General utility class in Swift Mailer, not to be instantiated. 13 * 14 * @author Chris Corbyn 15 */ 16abstract class Swift 17{ 18 const VERSION = '6.2.7'; 19 20 public static $initialized = false; 21 public static $inits = []; 22 23 /** 24 * Registers an initializer callable that will be called the first time 25 * a SwiftMailer class is autoloaded. 26 * 27 * This enables you to tweak the default configuration in a lazy way. 28 * 29 * @param mixed $callable A valid PHP callable that will be called when autoloading the first Swift class 30 */ 31 public static function init($callable) 32 { 33 self::$inits[] = $callable; 34 } 35 36 /** 37 * Internal autoloader for spl_autoload_register(). 38 * 39 * @param string $class 40 */ 41 public static function autoload($class) 42 { 43 // Don't interfere with other autoloaders 44 if (0 !== strpos($class, 'Swift_')) { 45 return; 46 } 47 48 $path = __DIR__.'/'.str_replace('_', '/', $class).'.php'; 49 50 if (!file_exists($path)) { 51 return; 52 } 53 54 require $path; 55 56 if (self::$inits && !self::$initialized) { 57 self::$initialized = true; 58 foreach (self::$inits as $init) { 59 \call_user_func($init); 60 } 61 } 62 } 63 64 /** 65 * Configure autoloading using Swift Mailer. 66 * 67 * This is designed to play nicely with other autoloaders. 68 * 69 * @param mixed $callable A valid PHP callable that will be called when autoloading the first Swift class 70 */ 71 public static function registerAutoload($callable = null) 72 { 73 if (null !== $callable) { 74 self::$inits[] = $callable; 75 } 76 spl_autoload_register(['Swift', 'autoload']); 77 } 78} 79