madadi
2 سال پیش توسط 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');
}

با تشکر


ثبت پرسش جدید

به همدیگه کمک کنیم

به madadi کمک کنید تا مشکل خودش را حل کند؛ این‌طور می‌توانیم با هم پیشرفت کنیم.

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام