![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/syn.corals.io/vendor/orchestra/testbench-core/src/Concerns/ |
<?php namespace Orchestra\Testbench\Concerns; use Illuminate\Foundation\Application; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Facade; use PHPUnit\Framework\TestCase; trait CreatesApplication { /** * Get application timezone. * * @param \Illuminate\Foundation\Application $app * * @return string|null */ protected function getApplicationTimezone($app) { return $app['config']['app.timezone']; } /** * Override application bindings. * * @param \Illuminate\Foundation\Application $app * * @return array */ protected function overrideApplicationBindings($app) { return []; } /** * Resolve application bindings. * * @param \Illuminate\Foundation\Application $app * * @return void */ final protected function resolveApplicationBindings($app): void { foreach ($this->overrideApplicationBindings($app) as $original => $replacement) { $app->bind($original, $replacement); } } /** * Get application aliases. * * @param \Illuminate\Foundation\Application $app * * @return array */ protected function getApplicationAliases($app) { return $app['config']['app.aliases']; } /** * Override application aliases. * * @param \Illuminate\Foundation\Application $app * * @return array */ protected function overrideApplicationAliases($app) { return []; } /** * Resolve application aliases. * * @param \Illuminate\Foundation\Application $app * * @return array */ final protected function resolveApplicationAliases($app): array { $aliases = new Collection($this->getApplicationAliases($app)); $overrides = $this->overrideApplicationAliases($app); if (! empty($overrides)) { $aliases->transform(static function ($alias, $name) use ($overrides) { return $overrides[$name] ?? $alias; }); } return $aliases->merge($this->getPackageAliases($app))->all(); } /** * Get package aliases. * * @param \Illuminate\Foundation\Application $app * * @return array */ protected function getPackageAliases($app) { return []; } /** * Get package bootstrapper. * * @param \Illuminate\Foundation\Application $app * * @return array */ protected function getPackageBootstrappers($app) { return []; } /** * Get application providers. * * @param \Illuminate\Foundation\Application $app * * @return array */ protected function getApplicationProviders($app) { return $app['config']['app.providers']; } /** * Override application aliases. * * @param \Illuminate\Foundation\Application $app * * @return array */ protected function overrideApplicationProviders($app) { return []; } /** * Resolve application aliases. * * @param \Illuminate\Foundation\Application $app * * @return array */ final protected function resolveApplicationProviders($app): array { $providers = new Collection($this->getApplicationProviders($app)); $overrides = $this->overrideApplicationProviders($app); if (! empty($overrides)) { $providers->transform(static function ($provider) use ($overrides) { return $overrides[$provider] ?? $provider; }); } return $providers->merge($this->getPackageProviders($app))->all(); } /** * Get package providers. * * @param \Illuminate\Foundation\Application $app * * @return array */ protected function getPackageProviders($app) { return []; } /** * Get base path. * * @return string */ protected function getBasePath() { return \realpath(__DIR__.'/../../laravel'); } /** * Creates the application. * * Needs to be implemented by subclasses. * * @return \Illuminate\Foundation\Application */ public function createApplication() { $app = $this->resolveApplication(); $this->resolveApplicationBindings($app); $this->resolveApplicationExceptionHandler($app); $this->resolveApplicationCore($app); $this->resolveApplicationConfiguration($app); $this->resolveApplicationHttpKernel($app); $this->resolveApplicationConsoleKernel($app); $this->resolveApplicationBootstrappers($app); return $app; } /** * Resolve application implementation. * * @return \Illuminate\Foundation\Application */ protected function resolveApplication() { return \tap(new Application($this->getBasePath()), static function ($app) { $app->bind( 'Illuminate\Foundation\Bootstrap\LoadConfiguration', 'Orchestra\Testbench\Bootstrap\LoadConfiguration' ); }); } /** * Resolve application core configuration implementation. * * @param \Illuminate\Foundation\Application $app * * @return void */ protected function resolveApplicationConfiguration($app) { $app->make('Illuminate\Foundation\Bootstrap\LoadConfiguration')->bootstrap($app); \tap($this->getApplicationTimezone($app), static function ($timezone) { ! \is_null($timezone) && \date_default_timezone_set($timezone); }); $app['config']['app.aliases'] = $this->resolveApplicationAliases($app); $app['config']['app.providers'] = $this->resolveApplicationProviders($app); } /** * Resolve application core implementation. * * @param \Illuminate\Foundation\Application $app * * @return void */ protected function resolveApplicationCore($app) { Facade::clearResolvedInstances(); Facade::setFacadeApplication($app); $app->detectEnvironment(static function () { return 'testing'; }); } /** * Resolve application Console Kernel implementation. * * @param \Illuminate\Foundation\Application $app * * @return void */ protected function resolveApplicationConsoleKernel($app) { $app->singleton('Illuminate\Contracts\Console\Kernel', 'Orchestra\Testbench\Console\Kernel'); } /** * Resolve application HTTP Kernel implementation. * * @param \Illuminate\Foundation\Application $app * * @return void */ protected function resolveApplicationHttpKernel($app) { $app->singleton('Illuminate\Contracts\Http\Kernel', 'Orchestra\Testbench\Http\Kernel'); } /** * Resolve application HTTP exception handler. * * @param \Illuminate\Foundation\Application $app * * @return void */ protected function resolveApplicationExceptionHandler($app) { $app->singleton('Illuminate\Contracts\Debug\ExceptionHandler', 'Orchestra\Testbench\Exceptions\Handler'); } /** * Resolve application bootstrapper. * * @param \Illuminate\Foundation\Application $app * * @return void */ protected function resolveApplicationBootstrappers($app) { $app->make('Illuminate\Foundation\Bootstrap\HandleExceptions')->bootstrap($app); $app->make('Illuminate\Foundation\Bootstrap\RegisterFacades')->bootstrap($app); $app->make('Illuminate\Foundation\Bootstrap\SetRequestForConsole')->bootstrap($app); $app->make('Illuminate\Foundation\Bootstrap\RegisterProviders')->bootstrap($app); if (\class_exists('Illuminate\Database\Eloquent\LegacyFactoryServiceProvider')) { $app->register('Illuminate\Database\Eloquent\LegacyFactoryServiceProvider'); } if ($this instanceof TestCase) { Collection::make($this->getAnnotations())->each(function ($location) use ($app) { Collection::make($location['environment-setup'] ?? []) ->filter(function ($method) { return ! \is_null($method) && \method_exists($this, $method); })->each(function ($method) use ($app) { $this->{$method}($app); }); }); } $this->getEnvironmentSetUp($app); $app->make('Illuminate\Foundation\Bootstrap\BootProviders')->bootstrap($app); foreach ($this->getPackageBootstrappers($app) as $bootstrap) { $app->make($bootstrap)->bootstrap($app); } $app->make('Illuminate\Contracts\Console\Kernel')->bootstrap(); $refreshNameLookups = static function ($app) { $app['router']->getRoutes()->refreshNameLookups(); }; $refreshNameLookups($app); $app->resolving('url', static function ($url, $app) use ($refreshNameLookups) { $refreshNameLookups($app); }); } /** * Reset artisan commands for the application. * * @param \Illuminate\Foundation\Application $app * * @return void */ final protected function resetApplicationArtisanCommands($app) { $app['Illuminate\Contracts\Console\Kernel']->setArtisan(null); } /** * Define environment setup. * * @param \Illuminate\Foundation\Application $app * * @return void */ abstract protected function getEnvironmentSetUp($app); }