facades.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php namespace Laravel\Facades;
  2. use Laravel\IoC;
  3. /**
  4. * The Laravel framework makes thorough use of dependency injection assisted by an application
  5. * inversion of control container. This allows for great flexibility, easy testing, and better
  6. * architecture. However, most PHP framework users may be used to accessing classes through
  7. * a variety of static methods. Laravel provides "facades" to simulate this behavior while
  8. * still using heavy dependency injection.
  9. *
  10. * Each class that is commonly used by the developer has a corresponding facade defined in
  11. * this file. All of the various facades inherit from the abstract Facade class, which only
  12. * has a single __callStatic magic method. The facade simply resolves the requested class
  13. * out of the IoC container and calls the appropriate method.
  14. */
  15. abstract class Facade {
  16. /**
  17. * Magic Method for passing methods to a class registered in the IoC container.
  18. * This provides a convenient method of accessing functions on classes that
  19. * could not otherwise be accessed staticly.
  20. *
  21. * Facades allow Laravel to still have a high level of dependency injection
  22. * and testability while still accomodating the common desire to conveniently
  23. * use classes via static methods.
  24. */
  25. public static function __callStatic($method, $parameters)
  26. {
  27. return call_user_func_array(array(IoC::container()->resolve(static::$resolve), $method), $parameters);
  28. }
  29. }
  30. class Asset extends Facade { public static $resolve = 'laravel.asset'; }
  31. class Auth extends Facade { public static $resolve = 'laravel.auth'; }
  32. class Cache extends Facade { public static $resolve = 'laravel.cache'; }
  33. class Config extends Facade { public static $resolve = 'laravel.config'; }
  34. class Cookie extends Facade { public static $resolve = 'laravel.cookie'; }
  35. class Crypter extends Facade { public static $resolve = 'laravel.crypter'; }
  36. class DB extends Facade { public static $resolve = 'laravel.database'; }
  37. class Download extends Facade { public static $resolve = 'laravel.download'; }
  38. class File extends Facade { public static $resolve = 'laravel.file'; }
  39. class Form extends Facade { public static $resolve = 'laravel.form'; }
  40. class Hasher extends Facade { public static $resolve = 'laravel.hasher'; }
  41. class HTML extends Facade { public static $resolve = 'laravel.html'; }
  42. class Input extends Facade { public static $resolve = 'laravel.input'; }
  43. class Lang extends Facade { public static $resolve = 'laravel.lang'; }
  44. class Loader extends Facade { public static $resolve = 'laravel.loader'; }
  45. class Package extends Facade { public static $resolve = 'laravel.package'; }
  46. class Redirect extends Facade { public static $resolve = 'laravel.redirect'; }
  47. class Request extends Facade { public static $resolve = 'laravel.request'; }
  48. class Response extends Facade { public static $resolve = 'laravel.response'; }
  49. class Session extends Facade { public static $resolve = 'laravel.session'; }
  50. class URL extends Facade { public static $resolve = 'laravel.url'; }
  51. class Validator extends Facade { public static $resolve = 'laravel.validator'; }
  52. class View extends Facade { public static $resolve = 'laravel.view'; }