Created
June 18, 2015 16:13
-
-
Save tomkel5/8fab83dd93cfb6c194ca to your computer and use it in GitHub Desktop.
Laravel IoC Example
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
return array( | |
/* | |
|-------------------------------------------------------------------------- | |
| Application Debug Mode | |
|-------------------------------------------------------------------------- | |
| | |
| When your application is in debug mode, detailed error messages with | |
| stack traces will be shown on every error that occurs within your | |
| application. If disabled, a simple generic error page is shown. | |
| | |
*/ | |
'debug' => false, | |
/* | |
|-------------------------------------------------------------------------- | |
| Application URL | |
|-------------------------------------------------------------------------- | |
| | |
| This URL is used by the console to properly generate URLs when using | |
| the Artisan command line tool. You should set this to the root of | |
| your application so that it is used when running Artisan tasks. | |
| | |
*/ | |
'url' => 'http://localhost', | |
/* | |
|-------------------------------------------------------------------------- | |
| Application Timezone | |
|-------------------------------------------------------------------------- | |
| | |
| Here you may specify the default timezone for your application, which | |
| will be used by the PHP date and date-time functions. We have gone | |
| ahead and set this to a sensible default for you out of the box. | |
| | |
*/ | |
'timezone' => 'UTC', | |
/* | |
|-------------------------------------------------------------------------- | |
| Application Locale Configuration | |
|-------------------------------------------------------------------------- | |
| | |
| The application locale determines the default locale that will be used | |
| by the translation service provider. You are free to set this value | |
| to any of the locales which will be supported by the application. | |
| | |
*/ | |
'locale' => 'en', | |
/* | |
|-------------------------------------------------------------------------- | |
| Application Fallback Locale | |
|-------------------------------------------------------------------------- | |
| | |
| The fallback locale determines the locale to use when the current one | |
| is not available. You may change the value to correspond to any of | |
| the language folders that are provided through your application. | |
| | |
*/ | |
'fallback_locale' => 'en', | |
/* | |
|-------------------------------------------------------------------------- | |
| Encryption Key | |
|-------------------------------------------------------------------------- | |
| | |
| This key is used by the Illuminate encrypter service and should be set | |
| to a random, 32 character string, otherwise these encrypted strings | |
| will not be safe. Please do this before deploying an application! | |
| | |
*/ | |
'key' => 'PM9yzbt50CSetYZnQ0iuyEYe4YN0Z0mE', | |
'cipher' => MCRYPT_RIJNDAEL_128, | |
/* | |
|-------------------------------------------------------------------------- | |
| Autoloaded Service Providers | |
|-------------------------------------------------------------------------- | |
| | |
| The service providers listed here will be automatically loaded on the | |
| request to your application. Feel free to add your own services to | |
| this array to grant expanded functionality to your applications. | |
| | |
*/ | |
'providers' => array( | |
'Illuminate\Foundation\Providers\ArtisanServiceProvider', | |
'Illuminate\Auth\AuthServiceProvider', | |
'Illuminate\Cache\CacheServiceProvider', | |
'Illuminate\Session\CommandsServiceProvider', | |
'Illuminate\Foundation\Providers\ConsoleSupportServiceProvider', | |
'Illuminate\Routing\ControllerServiceProvider', | |
'Illuminate\Cookie\CookieServiceProvider', | |
'Illuminate\Database\DatabaseServiceProvider', | |
'Illuminate\Encryption\EncryptionServiceProvider', | |
'Illuminate\Filesystem\FilesystemServiceProvider', | |
'Illuminate\Hashing\HashServiceProvider', | |
'Illuminate\Html\HtmlServiceProvider', | |
'Illuminate\Log\LogServiceProvider', | |
'Illuminate\Mail\MailServiceProvider', | |
'Illuminate\Database\MigrationServiceProvider', | |
'Illuminate\Pagination\PaginationServiceProvider', | |
'Illuminate\Queue\QueueServiceProvider', | |
'Illuminate\Redis\RedisServiceProvider', | |
'Illuminate\Remote\RemoteServiceProvider', | |
'Illuminate\Auth\Reminders\ReminderServiceProvider', | |
'Illuminate\Database\SeedServiceProvider', | |
'Illuminate\Session\SessionServiceProvider', | |
'Illuminate\Translation\TranslationServiceProvider', | |
'Illuminate\Validation\ValidationServiceProvider', | |
'Illuminate\View\ViewServiceProvider', | |
'Illuminate\Workbench\WorkbenchServiceProvider', | |
'Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider', | |
// The service provider that provides the bindings for our key generator | |
'Blue\KeyGeneratorServiceProvider', | |
), | |
/* | |
|-------------------------------------------------------------------------- | |
| Service Provider Manifest | |
|-------------------------------------------------------------------------- | |
| | |
| The service provider manifest is used by Laravel to lazy load service | |
| providers which are not needed for each request, as well to keep a | |
| list of all of the services. Here, you may set its storage spot. | |
| | |
*/ | |
'manifest' => storage_path().'/meta', | |
/* | |
|-------------------------------------------------------------------------- | |
| Class Aliases | |
|-------------------------------------------------------------------------- | |
| | |
| This array of class aliases will be registered when this application | |
| is started. However, feel free to register as many as you wish as | |
| the aliases are "lazy" loaded so they don't hinder performance. | |
| | |
*/ | |
'aliases' => array( | |
'App' => 'Illuminate\Support\Facades\App', | |
'Artisan' => 'Illuminate\Support\Facades\Artisan', | |
'Auth' => 'Illuminate\Support\Facades\Auth', | |
'Blade' => 'Illuminate\Support\Facades\Blade', | |
'Cache' => 'Illuminate\Support\Facades\Cache', | |
'ClassLoader' => 'Illuminate\Support\ClassLoader', | |
'Config' => 'Illuminate\Support\Facades\Config', | |
'Controller' => 'Illuminate\Routing\Controller', | |
'Cookie' => 'Illuminate\Support\Facades\Cookie', | |
'Crypt' => 'Illuminate\Support\Facades\Crypt', | |
'DB' => 'Illuminate\Support\Facades\DB', | |
'Eloquent' => 'Illuminate\Database\Eloquent\Model', | |
'Event' => 'Illuminate\Support\Facades\Event', | |
'File' => 'Illuminate\Support\Facades\File', | |
'Form' => 'Illuminate\Support\Facades\Form', | |
'Hash' => 'Illuminate\Support\Facades\Hash', | |
'HTML' => 'Illuminate\Support\Facades\HTML', | |
'Input' => 'Illuminate\Support\Facades\Input', | |
'Lang' => 'Illuminate\Support\Facades\Lang', | |
'Log' => 'Illuminate\Support\Facades\Log', | |
'Mail' => 'Illuminate\Support\Facades\Mail', | |
'Paginator' => 'Illuminate\Support\Facades\Paginator', | |
'Password' => 'Illuminate\Support\Facades\Password', | |
'Queue' => 'Illuminate\Support\Facades\Queue', | |
'Redirect' => 'Illuminate\Support\Facades\Redirect', | |
'Redis' => 'Illuminate\Support\Facades\Redis', | |
'Request' => 'Illuminate\Support\Facades\Request', | |
'Response' => 'Illuminate\Support\Facades\Response', | |
'Route' => 'Illuminate\Support\Facades\Route', | |
'Schema' => 'Illuminate\Support\Facades\Schema', | |
'Seeder' => 'Illuminate\Database\Seeder', | |
'Session' => 'Illuminate\Support\Facades\Session', | |
'SoftDeletingTrait' => 'Illuminate\Database\Eloquent\SoftDeletingTrait', | |
'SSH' => 'Illuminate\Support\Facades\SSH', | |
'Str' => 'Illuminate\Support\Str', | |
'URL' => 'Illuminate\Support\Facades\URL', | |
'Validator' => 'Illuminate\Support\Facades\Validator', | |
'View' => 'Illuminate\Support\Facades\View', | |
// The facade is registered here: | |
'Key' => 'Blue\KeyFacade', | |
), | |
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
use Blue\KeyGenerator; | |
class HomeController extends BaseController { | |
/** @var KeyGenerator */ | |
private $keyGenerator; | |
public function __construct(KeyGenerator $keyGenerator) { | |
$this->keyGenerator = $keyGenerator; | |
} | |
public function getKeyByFacade() | |
{ | |
$key = Key::generate(); | |
return Response::json(['key' => $key]); | |
} | |
public function getKeyByInjection() | |
{ | |
$key = $this->keyGenerator->generate(); | |
return Response::json(['key' => $key]); | |
} | |
public function getKeyByApp() | |
{ | |
/** @var KeyGenerator $keyGenerator */ | |
$keyGenerator = App::make('Blue\KeyGenerator'); | |
$key = $keyGenerator->generate(); | |
return Response::json(['key' => $key]); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace Blue; | |
use Illuminate\Support\Facades\Facade; | |
class KeyFacade extends Facade { | |
protected static function getFacadeAccessor() | |
{ | |
// This maps to the name of the injected instance: | |
return 'Blue\KeyGenerator'; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace Blue; | |
class KeyGenerator { | |
private $salt; | |
public function __construct($salt = '') { | |
$this->salt = $salt; | |
} | |
public function generate() | |
{ | |
return sha1($this->salt . microtime()); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace Blue; | |
use Illuminate\Support\ServiceProvider; | |
class KeyGeneratorServiceProvider extends ServiceProvider { | |
/** | |
* Register the service provider. | |
* | |
* @return void | |
*/ | |
public function register() | |
{ | |
$this->app->bindShared( | |
'Blue\KeyGenerator', | |
function() { | |
return new KeyGenerator('my-salt'); | |
} | |
); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
Route::get( | |
'/injection/key', | |
'HomeController@getKeyByInjection' | |
); | |
Route::get( | |
'/facade/key', | |
'HomeController@getKeyByFacade' | |
); | |
Route::get( | |
'/app/key', | |
'HomeController@getKeyByApp' | |
); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment