madadi
3 سال پیش توسط madadi مطرح شد
0 پاسخ

تفاوت بین dependency injection و service locator با یک مثال

با سلام. میتونید لطفا راهنماییم کنید در رابطه با سوال زیر؟
چطوری میتونیم با تغییر کلاس CheckoutSession تفاوت بین dependency injection و service locator رو نشون بدیم؟
Could you show the difference between dependency injection and a service locator by modifying the CheckoutSession class?
محتویات فایل CheckoutSession.php:

<?php

namespace App;

use function App\card_number_to_card_type;

class CheckoutSession
{
    private PaymentGateway $paymentGateway;

    public function process(PaymentRequest $request): bool
    {
        $token = $this->paymentGateway->tokenise($request->cardInput);

        return $this->paymentGateway->charge($token, $request->amountInPence);
    }
}

محتویات فایل functions.php:

<?php

namespace App;

function card_number_to_card_type(string $cardNumber): CardType
{
    if (preg_match('/^[4]/', $cardNumber) === 1) {
        return new CardType(CardType::VISA);
    } else if (preg_match('/^[5][1-5]/', $cardNumber) === 1) {
        return new CardType(CardType::MASTERCARD);
    } else if (preg_match('/^[3](4|7)/', $cardNumber) === 1) {
        return new CardType(CardType::AMEX);
    }

    throw new \InvalidArgumentException('Card type unknown');
}

با تشکر