Blame view

public/vendor/barryvdh/laravel-dompdf/src/ServiceProvider.php 2.5 KB
86143e36f   Андрей Ларионов   Коммит вторник
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
  <?php
  
  namespace Barryvdh\DomPDF;
  
  use Dompdf\Dompdf;
  use Exception;
  use Illuminate\Support\Str;
  use Illuminate\Support\ServiceProvider as IlluminateServiceProvider;
  
  class ServiceProvider extends IlluminateServiceProvider
  {
      /**
       * Indicates if loading of the provider is deferred.
       *
       * @var bool
       */
      protected $defer = false;
  
      /**
       * Register the service provider.
       *
       * @throws \Exception
       * @return void
       */
      public function register(): void
      {
          $configPath = __DIR__ . '/../config/dompdf.php';
          $this->mergeConfigFrom($configPath, 'dompdf');
  
          $this->app->bind('dompdf.options', function ($app) {
              $defines = $app['config']->get('dompdf.defines');
  
              if ($defines) {
                  $options = [];
                  /**
                   * @var string $key
                   * @var mixed $value
                   */
                  foreach ($defines as $key => $value) {
                      $key = strtolower(str_replace('DOMPDF_', '', $key));
                      $options[$key] = $value;
                  }
              } else {
                  $options = $app['config']->get('dompdf.options');
              }
  
              return $options;
          });
  
          $this->app->bind('dompdf', function ($app) {
  
              $options = $app->make('dompdf.options');
              $dompdf = new Dompdf($options);
              $path = realpath($app['config']->get('dompdf.public_path') ?: base_path('public'));
              if ($path === false) {
                  throw new \RuntimeException('Cannot resolve public path');
              }
              $dompdf->setBasePath($path);
  
              return $dompdf;
          });
          $this->app->alias('dompdf', Dompdf::class);
  
          $this->app->bind('dompdf.wrapper', function ($app) {
              return new PDF($app['dompdf'], $app['config'], $app['files'], $app['view']);
          });
      }
  
      /**
       * Check if package is running under Lumen app
       */
      protected function isLumen(): bool
      {
          return Str::contains($this->app->version(), 'Lumen') === true;
      }
  
      public function boot(): void
      {
          if (! $this->isLumen()) {
              $configPath = __DIR__ . '/../config/dompdf.php';
              $this->publishes([$configPath => config_path('dompdf.php')], 'config');
          }
      }
  
      /**
       * Get the services provided by the provider.
       *
       * @return array<string>
       */
      public function provides(): array
      {
          return ['dompdf', 'dompdf.options', 'dompdf.wrapper'];
      }
  }