燁竹
本文參考:https://laravel-china.org/topics/3265/laravel-53-add-custom-facade-steps
今天七夕,很不幸,聽說前女友要結(jié)婚了,下個(gè)七夕一定不會(huì)再一個(gè)人過了;
官方文檔
medoo的優(yōu)點(diǎn)就不多做介紹了,官方首頁有詳細(xì)的介紹;就本人而言只是為了實(shí)現(xiàn)‘優(yōu)雅的偷懶’;優(yōu)雅在于代碼的優(yōu)雅,偷懶是因?yàn)閷W(xué)了它,就再也不用學(xué)習(xí)其他的數(shù)據(jù)庫操作類了;
與laravel的交互上面,app.php后面這一段
//使用Medoo命名空間
使用Medoo \ Medoo ;
//注冊為數(shù)據(jù)庫
$ app - > singleton ('database' ,function (){
返回新的Medoo ([
'database_type' => 'mysql' ,
'database_name' => 'name' ,
'server' => 'localhost' ,
'username' => 'your_username' ,
'password' => 'your_password'
]);
});
不太喜歡;(或者說不太優(yōu)雅,還不如去注冊一個(gè)自定義的門面類)
自定義門面MedooCustom實(shí)現(xiàn):
1、在App下的自定義目錄,添加自定義門面類和自定義容器
/app
|- Custom
|- Classes 這里添加自定義 Facade 類
|- Facades 這里添加自定義容器
app/Custom/Classes/MedooCustom.php
<?php
namespace App\Custom\Classes;
use catfan\medoo;
class MedooCustom
{
public function initMedoo($dbname)
{
return new medoo([
// required
'database_type' => 'mysql',
'database_name' => $dbname,
'server' => 'localhost',
'username' => 'root',
'password' => 'root',
// 'port' => 3306,
]);
}
}
app/Custom/Facades/MedooCustom.php
<?php
namespace App\Custom\Facades;
use Illuminate\Support\Facades\Facade;
class MedooCustom extends Facade
{
protected static function getFacadeAccessor()
{
return 'medoocustom';
}
}
2、將自定義的 Facade 和自定義的 Class 綁定起來
$ php artisan make:provider MedooCustomServiceProvider
成功后會(huì)創(chuàng)建一個(gè)新文件:app/Providers/MLSServiceProvider.php,然后我們在 register() 部分添點(diǎn)東西,如下:
<?php
namespace App\Providers;
use App\Custom\Classes\MedooCustom;
use Illuminate\Support\ServiceProvider;
class MedooCustomServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*/
public function boot()
{
}
/**
* Register the application services.
*/
public function register()
{
$this->app->bind('medoocustom', function () {
return new MedooCustom($app->make('HttpClient'));
});
}
}
3、添加到自定義容器和取別名
'providers' => [
...
App\Providers\MedooCustomServiceProvider::class,
],
'aliases' => [
...
'MedooCustom' =>App\Custom\Facades\MedooCustom::class,
]
4、定義路由,控制器中直接調(diào)用
$router->get('/foo', 'HomeController@foo');
<?php
namespace App\Admin\Controllers;
use App\Http\Controllers\Controller;
use Encore\Admin\Controllers\Dashboard;
use Encore\Admin\Facades\Admin;
use Encore\Admin\Layout\Column;
use Encore\Admin\Layout\Content;
use Encore\Admin\Layout\Row;
use MedooCustom;
class HomeController extends Controller
{
public function foo()
{
//使用Medoo連接數(shù)據(jù)庫
$db = MedooCustom::initMedoo('aaa');
$data = $db->select('movies', ['id', 'title']);
return json_encode($data);
}
}
demoo就不多做介紹,以前的筆記有過總結(jié)http://www.itdecent.cn/p/0e552d70155e
