PluginProbe
JCH Optimize / trunk
JCH Optimize vtrunk
6.0.2 6.0.1 trunk 1.0.1 1.0.2 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.2.0 1.2.1 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.1.0 2.10.0 2.2.0 2.2.1 All 58 releases
jch-optimize / lib / src / Service / Provider / Callbacks.php

Callbacks.php in JCH Optimize trunk, at lib/src/Service/Provider/Callbacks.php

160 lines 5.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * JCH Optimize - Performs several front-end optimizations for fast downloads
5 *
6 * @package jchoptimize/core
7 * @author Samuel Marshall <samuel@jch-optimize.net>
8 * @copyright Copyright (c) 2022 Samuel Marshall / JCH Optimize
9 * @license GNU/GPLv3, or later. See LICENSE file
10 *
11 * If LICENSE file missing, see <http://www.gnu.org/licenses/>.
12 */
13
14 namespace JchOptimize\Core\Service\Provider;
15
16 use _JchOptimizeVendor\V91\Joomla\DI\Container;
17 use _JchOptimizeVendor\V91\Joomla\DI\ServiceProviderInterface;
18 use JchOptimize\Core\Cdn\Cdn;
19 use JchOptimize\Core\Css\Callbacks\CorrectUrls;
20 use JchOptimize\Core\Css\Callbacks\Dependencies\CriticalCssDependencies;
21 use JchOptimize\Core\Css\Callbacks\ExtractCriticalCss;
22 use JchOptimize\Core\Css\Callbacks\FormatCss;
23 use JchOptimize\Core\Css\Callbacks\HandleAtRules;
24 use JchOptimize\Core\Css\Callbacks\PostProcessCriticalCss;
25 use JchOptimize\Core\Debug\JchProfiler;
26 use JchOptimize\Core\Debug\JchProfilerInterface;
27 use JchOptimize\Core\FeatureHelpers\DynamicSelectors;
28 use JchOptimize\Core\Html\Callbacks\Cdn as CdnCallback;
29 use JchOptimize\Core\Html\Callbacks\CombineJsCss;
30 use JchOptimize\Core\Html\Callbacks\JavaScriptConfigureHelper;
31 use JchOptimize\Core\Html\Callbacks\LazyLoad;
32 use JchOptimize\Core\Html\FilesManager;
33 use JchOptimize\Core\Html\HtmlProcessor;
34 use JchOptimize\Core\Html\JsLayout\JsLayoutPlanner;
35 use JchOptimize\Core\Platform\ExcludesInterface;
36 use JchOptimize\Core\Platform\UtilityInterface;
37 use JchOptimize\Core\Preloads\Http2Preload;
38 use JchOptimize\Core\Registry;
39
40 use function defined;
41
42 defined('_JCH_EXEC') or die('Restricted access');
43
44 class Callbacks implements ServiceProviderInterface
45 {
46 public function register(Container $container): void
47 {
48 //Html callback
49 $container->set(CdnCallback::class, [$this, 'getCdnCallbackService']);
50 $container->set(CombineJsCss::class, [$this, 'getCombineJsCssService']);
51 $container->set(LazyLoad::class, [$this, 'getLazyLoadService']);
52 $container->set(JavaScriptConfigureHelper::class, [$this, 'getJavaScriptConfigureHelperService']);
53 //Css Callback;
54 $container->set(CorrectUrls::class, [$this, 'getCorrectUrlsService']);
55 $container->set(ExtractCriticalCss::class, [$this, 'getExtractCriticalCssService']);
56 $container->set(FormatCss::class, [$this, 'getFormatCssService']);
57 $container->set(HandleAtRules::class, [$this, 'getHandleAtRulesService']);
58 $container->set(PostProcessCriticalCss::class, [$this, 'getPostProcessCriticalCssService']);
59
60 $container->share(CriticalCssDependencies::class, [$this, 'getDependenciesProviderService']);
61 $container->share(JchProfiler::class, [$this, 'getCriticalCssDomainProfilerService']);
62 }
63
64 public function getCdnCallbackService(Container $container): CdnCallback
65 {
66 return new CdnCallback(
67 $container,
68 $container->get(Registry::class),
69 $container->get(Cdn::class)
70 );
71 }
72
73 public function getCombineJsCssService(Container $container): CombineJsCss
74 {
75 return new CombineJsCss(
76 $container,
77 $container->get(Registry::class),
78 $container->get(FilesManager::class),
79 $container->get(HtmlProcessor::class),
80 $container->get(ExcludesInterface::class)
81 );
82 }
83
84 public function getLazyLoadService(Container $container): LazyLoad
85 {
86 return new LazyLoad(
87 $container,
88 $container->get(Registry::class),
89 $container->get(Http2Preload::class)
90 );
91 }
92
93 public function getJavaScriptConfigureHelperService(Container $container): JavaScriptConfigureHelper
94 {
95 return new JavaScriptConfigureHelper(
96 $container,
97 $container->get(Registry::class),
98 $container->get(FilesManager::class),
99 $container->get(HtmlProcessor::class),
100 $container->get(ExcludesInterface::class),
101 $container->get(JsLayoutPlanner::class),
102 );
103 }
104
105 public function getCorrectUrlsService(Container $container): CorrectUrls
106 {
107 return new CorrectUrls(
108 $container,
109 $container->get(Registry::class),
110 $container->get(Cdn::class),
111 $container->get(Http2Preload::class),
112 $container->get(UtilityInterface::class)
113 );
114 }
115
116 public function getExtractCriticalCssService(Container $container): ExtractCriticalCss
117 {
118 return new ExtractCriticalCss(
119 $container,
120 $container->get(Registry::class),
121 $container->get(CriticalCssDependencies::class),
122 $container->get(DynamicSelectors::class),
123 $container->get(CorrectUrls::class)
124 );
125 }
126
127 public function getFormatCssService(Container $container): FormatCss
128 {
129 return new FormatCss(
130 $container,
131 $container->get(Registry::class)
132 );
133 }
134
135 public function getHandleAtRulesService(Container $container): HandleAtRules
136 {
137 return new HandleAtRules(
138 $container,
139 $container->get(Registry::class)
140 );
141 }
142
143 public function getPostProcessCriticalCssService(Container $container): PostProcessCriticalCss
144 {
145 return new PostProcessCriticalCss(
146 $container,
147 $container->get(Registry::class),
148 $container->get(CriticalCssDependencies::class)
149 );
150 }
151
152 public function getDependenciesProviderService(Container $container): CriticalCssDependencies
153 {
154 return new CriticalCssDependencies(
155 $container->get(HtmlProcessor::class),
156 $container->get(JchProfilerInterface::class)
157 );
158 }
159 }
160