دلیل ایجاد کلاس HttpClient برای کار با Guzzle

پرسیده شده
فعالیت 1188 روز پیش
دیده شده 636 بار
1

سلام

من داخل چند سورس کد هم این کار رو دیدم، مثلا:

<?php

namespace Doctrine\Tests;

use PHPUnit\Framework\TestCase;

/**
 * Base testcase class for all Doctrine testcases.
 */
abstract class DoctrineTestCase extends TestCase
{
}

در مثال بالا یک کلاس abstract تعریف شده که از TestCase ارث بری میکنه، حالا برای بقیه کلاس های تست این کلاس abstract را به ارث برده!، الکی یه کلاس خالی ایجاد کرده!

چه کاریه!؟، خب همون TestCase رو extends کنه.

این کار چه دلیلی داره؟ چه کمکی میتونه به ما بکنه؟

فایل پیوست

2
حذف شده

سلام

 

این کار وابستگی مستقیم نرم‌افزار شما به پکیج‌های بیرونی رو کمتر میکنه و باعث میشه که شما تسلط بیشتری روی نرم‌افزاری که درست میکنید داشته باشید. به عنوان مثال فرض کنید بعد از چند وقت API کلاس Guzzle تغییر میکنه و دیگه نباید به اون صورتی که ما داخل دوره از اون Object ساختیم این کار رو انجام بدیم، حالا باید بریم داخل تک تک فایل‌های تستمون و به صورت جدید از Guzzle نمونه سازی کنیم،‌ ولی اگر این رو داخل یک کلاس جداگانه مثل Httpclient انجام داده باشیم و از این کلاس داخل تست‌هامون استفاده کنیم فقط باید کلاس HttpClient رو تغییر بدیم. پس فقط تغییر در برنامه ما داخل یک کلاس اتفاق میوفته. به صورت کلی شما باید تا حد امکان وابستگی مستقیم نرم‌افزارتون رو به ابزار‌ها و یا پکیج‌هایی که دست شما نیست از بین ببرید و این یکی از روش‌های اینکار هستش.

دلایل دیگری هم داره مثلا همون کاری که ما داخل تست‌ها انجام دادیم .. اضافه کردن آدرس کانفیگ زمان نمونه سازی. با این کار دیگه نیازی نبود که داخل هرتست ما آدرس رو از کانفیگ مستقیما بگیریم. و در اصطلاحا یک Wrapper روی سرویس Guzzle با توجه به شرایط برنامه‌ خودمون درست کردیم.

 

برای اطلاعات بیشتر هم میتونید این لینک رو مطالعه کنید.

فایل پیوست

مهرداد سامی

توسط

مهرداد سامی

5 دی 99

جلسه پروژه API - نصب و کانفیگ Guzzle