1<?php
2
3namespace Illuminate\Contracts\Foundation;
4
5use Closure;
6use Illuminate\Contracts\Container\Container;
7
8interface Application extends Container
9{
10    /**
11     * Get the version number of the application.
12     *
13     * @return string
14     */
15    public function version();
16
17    /**
18     * Get the base path of the Laravel installation.
19     *
20     * @return string
21     */
22    public function basePath();
23
24    /**
25     * Get the path to the bootstrap directory.
26     *
27     * @param  string  $path Optionally, a path to append to the bootstrap path
28     * @return string
29     */
30    public function bootstrapPath($path = '');
31
32    /**
33     * Get the path to the application configuration files.
34     *
35     * @param  string  $path Optionally, a path to append to the config path
36     * @return string
37     */
38    public function configPath($path = '');
39
40    /**
41     * Get the path to the database directory.
42     *
43     * @param  string  $path Optionally, a path to append to the database path
44     * @return string
45     */
46    public function databasePath($path = '');
47
48    /**
49     * Get the path to the environment file directory.
50     *
51     * @return string
52     */
53    public function environmentPath();
54
55    /**
56     * Get the path to the resources directory.
57     *
58     * @param  string  $path
59     * @return string
60     */
61    public function resourcePath($path = '');
62
63    /**
64     * Get the path to the storage directory.
65     *
66     * @return string
67     */
68    public function storagePath();
69
70    /**
71     * Get or check the current application environment.
72     *
73     * @param  string|array  $environments
74     * @return string|bool
75     */
76    public function environment(...$environments);
77
78    /**
79     * Determine if the application is running in the console.
80     *
81     * @return bool
82     */
83    public function runningInConsole();
84
85    /**
86     * Determine if the application is running unit tests.
87     *
88     * @return bool
89     */
90    public function runningUnitTests();
91
92    /**
93     * Determine if the application is currently down for maintenance.
94     *
95     * @return bool
96     */
97    public function isDownForMaintenance();
98
99    /**
100     * Register all of the configured providers.
101     *
102     * @return void
103     */
104    public function registerConfiguredProviders();
105
106    /**
107     * Register a service provider with the application.
108     *
109     * @param  \Illuminate\Support\ServiceProvider|string  $provider
110     * @param  bool   $force
111     * @return \Illuminate\Support\ServiceProvider
112     */
113    public function register($provider, $force = false);
114
115    /**
116     * Register a deferred provider and service.
117     *
118     * @param  string  $provider
119     * @param  string|null  $service
120     * @return void
121     */
122    public function registerDeferredProvider($provider, $service = null);
123
124    /**
125     * Resolve a service provider instance from the class name.
126     *
127     * @param  string  $provider
128     * @return \Illuminate\Support\ServiceProvider
129     */
130    public function resolveProvider($provider);
131
132    /**
133     * Boot the application's service providers.
134     *
135     * @return void
136     */
137    public function boot();
138
139    /**
140     * Register a new boot listener.
141     *
142     * @param  callable  $callback
143     * @return void
144     */
145    public function booting($callback);
146
147    /**
148     * Register a new "booted" listener.
149     *
150     * @param  callable  $callback
151     * @return void
152     */
153    public function booted($callback);
154
155    /**
156     * Run the given array of bootstrap classes.
157     *
158     * @param  array  $bootstrappers
159     * @return void
160     */
161    public function bootstrapWith(array $bootstrappers);
162
163    /**
164     * Determine if the application configuration is cached.
165     *
166     * @return bool
167     */
168    public function configurationIsCached();
169
170    /**
171     * Detect the application's current environment.
172     *
173     * @param  \Closure  $callback
174     * @return string
175     */
176    public function detectEnvironment(Closure $callback);
177
178    /**
179     * Get the environment file the application is using.
180     *
181     * @return string
182     */
183    public function environmentFile();
184
185    /**
186     * Get the fully qualified path to the environment file.
187     *
188     * @return string
189     */
190    public function environmentFilePath();
191
192    /**
193     * Get the path to the configuration cache file.
194     *
195     * @return string
196     */
197    public function getCachedConfigPath();
198
199    /**
200     * Get the path to the cached services.php file.
201     *
202     * @return string
203     */
204    public function getCachedServicesPath();
205
206    /**
207     * Get the path to the cached packages.php file.
208     *
209     * @return string
210     */
211    public function getCachedPackagesPath();
212
213    /**
214     * Get the path to the routes cache file.
215     *
216     * @return string
217     */
218    public function getCachedRoutesPath();
219
220    /**
221     * Get the current application locale.
222     *
223     * @return string
224     */
225    public function getLocale();
226
227    /**
228     * Get the application namespace.
229     *
230     * @return string
231     *
232     * @throws \RuntimeException
233     */
234    public function getNamespace();
235
236    /**
237     * Get the registered service provider instances if any exist.
238     *
239     * @param  \Illuminate\Support\ServiceProvider|string  $provider
240     * @return array
241     */
242    public function getProviders($provider);
243
244    /**
245     * Determine if the application has been bootstrapped before.
246     *
247     * @return bool
248     */
249    public function hasBeenBootstrapped();
250
251    /**
252     * Load and boot all of the remaining deferred providers.
253     *
254     * @return void
255     */
256    public function loadDeferredProviders();
257
258    /**
259     * Set the environment file to be loaded during bootstrapping.
260     *
261     * @param  string  $file
262     * @return $this
263     */
264    public function loadEnvironmentFrom($file);
265
266    /**
267     * Determine if the application routes are cached.
268     *
269     * @return bool
270     */
271    public function routesAreCached();
272
273    /**
274     * Set the current application locale.
275     *
276     * @param  string  $locale
277     * @return void
278     */
279    public function setLocale($locale);
280
281    /**
282     * Determine if middleware has been disabled for the application.
283     *
284     * @return bool
285     */
286    public function shouldSkipMiddleware();
287
288    /**
289     * Terminate the application.
290     *
291     * @return void
292     */
293    public function terminate();
294}
295