الإصدار: v2.3.0
التعاون مع الأطر الأخرى
يمكن دمج Medoo بسهولة مع أطر عمل PHP الأخرى. في معظم التطبيقات، يتمثل الأسلوب الموصى به في تسجيل Medoo كخدمة مشتركة في حاوية خدمة إطار العمل أو حاوية حقن التبعية. يسمح هذا بإعادة استخدام نفس مثيل قاعدة البيانات خلال التطبيق دون إنشاء اتصالات إضافية غير ضرورية.
إذا كان إطار العمل الخاص بك يوفر حاوية مضمنة أو آلية تسجيل خدمة، فمن المستحسن التسجيل Medoo هناك. لمزيد من التفاصيل، راجع الوثائق الرسمية لإطار العمل الخاص بك لدمج مكتبات الطرف الثالث.
Laravel
في Laravel الحديثة (على سبيل المثال Laravel 10/11)، الطريقة الموصى بها هي ربط Medoo في مزود الخدمة وحلها من الحاوية حسب اسم الفئة.
التسجيل Medoo
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Medoo\Medoo;
class MedooServiceProvider extends ServiceProvider
{
public function register(): void
{
$this->app->singleton(Medoo::class, function () {
return new Medoo([
'type' => 'mysql',
'host' => config('database.connections.mysql.host'),
'database' => config('database.connections.mysql.database'),
'username' => config('database.connections.mysql.username'),
'password' => config('database.connections.mysql.password')
]);
});
}
}
إذا قمت بإنشاء موفر مخصص في Laravel 11، قم بإضافته إلى
bootstrap/providers.php.return [ App\Providers\AppServiceProvider::class, App\Providers\MedooServiceProvider::class, ];
الوصول إلى Medoo
بعد التسجيل، قم بحل Medoo عن طريق تحديد نوعه في المسارات أو وحدات التحكم أو الخدمات.
use Illuminate\Support\Facades\Route;
use Medoo\Medoo;
Route::get('/', function () {
$data = app(Medoo::class)->select('account', ['id', 'name']);
return response()->json($data);
});
Route::get('/typed', function (Medoo $database) {
$data = $database->select('account', ['id', 'name']);
return response()->json($data);
});
Slim
Slim 4 يتكامل بشكل شائع مع PHP-DI من خلال
php-di/slim-bridge. سجل Medoo في تعريفات الحاوية واترك الجسر يقوم بإنشاء مثيل التطبيق.تثبيت PHP-DI
$ composer require slim/psr7 php-di/php-di php-di/slim-bridge
التسجيل Medoo
use DI\Bridge\Slim\Bridge;
use DI\ContainerBuilder;
use Medoo\Medoo;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
require __DIR__ . '/vendor/autoload.php';
$builder = new ContainerBuilder();
$builder->addDefinitions([
Medoo::class => function () {
return new Medoo([
'type' => 'mysql',
'host' => 'localhost',
'database' => 'name',
'username' => 'your_username',
'password' => 'your_password'
]);
}
]);
$container = $builder->build();
$app = Bridge::create($container);
الوصول إلى Medoo
use DI\Container;
$app->get('/', function (Request $request, Response $response) use ($container) {
/** @var Container $container */
$data = $container->get(Medoo::class)->select('account', ['id', 'name']);
$response->getBody()->write(json_encode($data));
return $response->withHeader('Content-Type', 'application/json');
});
$app->run();
Symfony
في Symfony 6/7، الطريقة الموصى بها هي تسجيل Medoo كخدمة وتحويلها تلقائيًا إلى وحدات تحكم أو خدمات مجال.
التسجيل Medoo
أضف Medoo إلى ملف تكوين الخدمة، على سبيل المثال
config/services.yaml.services:
Medoo\Medoo:
arguments:
-
type: 'mysql'
host: '%env(resolve:DB_HOST)%'
database: '%env(resolve:DB_NAME)%'
username: '%env(resolve:DB_USER)%'
password: '%env(resolve:DB_PASS)%'
الوصول إلى Medoo
namespace App\Controller;
use Medoo\Medoo;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Annotation\Route;
class HomeController
{
private Medoo $database;
public function __construct(Medoo $database)
{
$this->database = $database;
}
#[Route('/', name: 'home')]
public function index(): JsonResponse
{
$data = $this->database->select('account', ['id', 'name']);
return new JsonResponse($data);
}
}
Yii 3
يستخدم Yii 3 حقن التبعية من خلال ملفات التكوين. حدد Medoo في تكوين DI وأدخله في المعالجات أو وحدات التحكم أو الخدمات.
التسجيل Medoo
حدد Medoo في ملف تكوين DI الخاص بك، على سبيل المثال
config/common/di.php.use Medoo\Medoo;
return [
Medoo::class => static function () {
return new Medoo([
'type' => 'mysql',
'host' => getenv('DB_HOST') ?: 'localhost',
'database' => getenv('DB_NAME') ?: 'name',
'username' => getenv('DB_USER') ?: 'your_username',
'password' => getenv('DB_PASS') ?: 'your_password'
]);
},
];
الوصول إلى Medoo
use Medoo\Medoo;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
final class SiteController
{
private Medoo $database;
public function __construct(Medoo $database)
{
$this->database = $database;
}
public function index(
ServerRequestInterface $request,
ResponseInterface $response
): ResponseInterface {
$data = $this->database->select('account', ['id', 'name']);
$response->getBody()->write(json_encode($data));
return $response;
}
}
CodeIgniter 4
في CodeIgniter 4، النمط الموصى به هو الكشف عن Medoo من خلال
Config\Services بحيث يتم إعادة استخدام مثيل مشترك واحد.التسجيل Medoo
قم بإنشاء خدمة مخصصة في
app/Config/Services.php.namespace Config;
use CodeIgniter\Config\BaseService;
use Medoo\Medoo;
class Services extends BaseService
{
public static function medoo(bool $getShared = true)
{
if ($getShared) {
return static::getSharedInstance('medoo');
}
return new Medoo([
'type' => 'mysql',
'host' => env('database.default.hostname', 'localhost'),
'database' => env('database.default.database', 'name'),
'username' => env('database.default.username', 'your_username'),
'password' => env('database.default.password', 'your_password')
]);
}
}
الوصول إلى Medoo
namespace App\Controllers;
class Home extends BaseController
{
public function index()
{
$database = service('medoo');
$data = $database->select('account', ['id', 'name']);
return $this->response->setJSON($data);
}
}
Phalcon
في Phalcon 5، قم بتسجيل Medoo كخدمة مشتركة في حاوية DI واستردها حسب اسم الفئة.
التسجيل Medoo
use Medoo\Medoo;
use Phalcon\Di\Di;
$di = new Di();
$di->setShared(Medoo::class, function () {
return new Medoo([
'type' => 'mysql',
'host' => 'localhost',
'database' => 'name',
'username' => 'your_username',
'password' => 'your_password'
]);
});
الوصول إلى Medoo
use Phalcon\Mvc\Controller;
class IndexController extends Controller
{
public function indexAction()
{
$data = $this->di->getShared(Medoo::class)->select('account', ['id', 'name']);
return json_encode($data);
}
}