Wrapper PHP API เพื่อเสนออินเทอร์เฟซการเขียนโปรแกรมแบบครบวงจรสำหรับ API อัตราสกุลเงินยอดนิยม
ไม่ต้องกังวลเกี่ยวกับบริการแปลงสกุลเงินที่คุณโปรดปรานในทันใดการปิดตัวลงหรือเปลี่ยนแผนให้คุณ เปลี่ยนไปได้อย่างง่ายดายโดยไม่ต้องเปลี่ยนรหัสของคุณ
ฉันต้องการ API การแปลงสกุลเงินสำหรับเว็บไซต์การเดินทางของฉัน แต่ไม่สามารถหาแพ็คเกจ PHP ที่ดีได้ ความคิดของแพ็คเกจ Rackbeat/php-currency-api มาใกล้ที่สุด แต่น่าเสียดายที่มันเป็นแค่ต้นขั้วและไม่ได้ใช้งาน
| บริการ | ตัวระบุ |
|---|---|
| fixerio | fixerio |
| เครื่องนับกระแสไฟฟ้า | currencylayer |
| อัตราแลกเปลี่ยนแบบเปิด | openexchangerates |
| อัตราแลกเปลี่ยน API | exchangeratesapi |
หากคุณต้องการดูบริการเพิ่มเติมโปรดเปิดปัญหา!
PHP 8.x หรือ PHP 7.3+ หรือสูงกว่า (ทดสอบทั้ง 7.3 และ 7.4 )composer สำหรับ PHP เพียงแค่ต้องใช้แพ็คเกจโดยใช้ composer และคุณก็พร้อมที่จะไป!
$ composer require otherguy/php-currency-api คลาส OtherguyCurrencySymbol ให้ค่าคงที่สำหรับแต่ละสกุลเงินที่รองรับ
! หมายเหตุ: คุณไม่จำเป็นต้องใช้
OtherguyCurrencySymbolเพื่อระบุสัญลักษณ์ มันเป็นเพียงผู้ช่วยความสะดวกและไม่จำเป็นต้องใช้ คุณสามารถผ่านสตริงเช่น'USD', 'EUR', ...ไปยังทุกวิธี
// 'USD'
$ symbol = Otherguy Currency Symbol:: USD ; ใช้วิธี all() เพื่อดึงอาร์เรย์ของสัญลักษณ์สกุลเงินทั้งหมด:
// [ 'AED', 'AFN', ... 'ZWL' ]
$ symbols = Otherguy Currency Symbol:: all (); เมธอด names() ส่งคืนอาร์เรย์เชื่อมโยงด้วยชื่อสกุลเงินแทน:
// [ 'AED' => 'United Arab Emirates Dirham', 'AFN' => 'Afghan Afghani', ... ]
$ symbols = Otherguy Currency Symbol:: names (); ในการรับชื่อของสกุลเงินเดียวให้ใช้ name() วิธี:
// 'United States Dollar'
$ symbols = Otherguy Currency Symbol:: name ( Otherguy Currency Symbol:: USD ); $ currency = Otherguy Currency DriverFactory:: make ( ' fixerio ' ); // driver identifier from supported drivers. หากต้องการรับรายการไดรเวอร์ที่รองรับให้ใช้วิธีการ getDrivers() :
// [ 'mock', 'fixerio', 'currencylayer', ... ]
$ drivers = Otherguy Currency DriverFactory:: getDrivers ()ผู้ให้บริการ API ส่วนใหญ่ต้องการให้คุณลงทะเบียนและใช้คีย์การเข้าถึงที่ออกเพื่อตรวจสอบสิทธิ์ API ของพวกเขา คุณสามารถระบุรหัสการเข้าถึงของคุณได้เช่น:
$ currency -> accessKey ( ' your-access-token-goes-here ' ); ในการตั้งค่าตัวเลือกการกำหนดค่าเพิ่มเติมคุณสามารถใช้วิธี config() ตัวอย่างคือตัวเลือกการจัดรูปแบบ JSON ของ CurrencyLayer
$ currency -> config ( ' format ' , ' 1 ' ); คุณสามารถใช้ from() หรือ source() เพื่อตั้งค่าสกุลเงินพื้นฐาน วิธีการเหมือนกัน
! หมายเหตุ: ไดรเวอร์แต่ละตัวตั้งค่าสกุลเงินพื้นฐานเริ่มต้นของตัวเอง Fixerio ใช้
EURเป็นสกุลเงินพื้นฐานในขณะที่ CurrencyLayer ใช้USD
บริการส่วนใหญ่อนุญาตให้คุณเปลี่ยนสกุลเงินพื้นฐานในแผนการชำระเงินของพวกเขาเท่านั้น คนขับจะโยน OtherguyCurrencyExceptionsApiException หากแผนปัจจุบันของคุณไม่อนุญาตให้เปลี่ยนสกุลเงินพื้นฐาน
$ currency -> source ( Otherguy Currency Symbol:: USD );
$ currency -> from ( Otherguy Currency Symbol:: USD ); คุณสามารถใช้ทั้ง to() หรือ symbols() เพื่อตั้งค่าสกุลเงินคืน วิธีการเหมือนกัน ผ่านสกุลเงินเดียวหรือสัญลักษณ์สกุลเงินไปยังวิธีการเหล่านี้อย่างใดอย่างหนึ่ง
! หมายเหตุ: ผ่านอาร์เรย์ที่ว่างเปล่าเพื่อส่งคืนสัญลักษณ์สกุลเงินทั้งหมดที่สนับสนุนโดยไดรเวอร์นี้ นี่เป็นค่าเริ่มต้นหากคุณไม่เรียกวิธีการเลย
$ currency -> to ( Otherguy Currency Symbol:: BTC );
$ currency -> symbols ([ Otherguy Currency Symbol:: BTC , Otherguy Currency Symbol:: EUR , Otherguy Currency Symbol:: USD ]); สิ่งนี้จะดึงอัตราแลกเปลี่ยนล่าสุดและส่งคืนวัตถุ ConversionResult
$ currency -> get (); // Get latest rates for selected symbols, using set base currency
$ currency -> get ( ' DKK ' ); // Get latest rates for selected symbols, using DKK as base currency ในการดึงอัตราแลกเปลี่ยนในอดีตให้ใช้วิธีการ historical() โปรดทราบว่าคุณต้องระบุวันที่เป็นพารามิเตอร์วิธีการหรือโดยใช้เมธอด date() ดูอินเทอร์เฟซที่คล่องแคล่วสำหรับข้อมูลเพิ่มเติม
$ currency -> date ( ' 2010-01-01 ' )-> historical ();
$ currency -> historical ( ' 2018-07-01 ' ); ใช้วิธี convert() เพื่อแปลงจำนวนเงินระหว่างสกุลเงิน
! หมายเหตุ: ผู้ให้บริการ API ส่วนใหญ่ไม่อนุญาตให้เข้าถึงวิธีนี้โดยใช้บัญชีฟรีของคุณ คุณยังสามารถใช้อัตราล่าสุดหรือจุดสิ้นสุดของอัตราในอดีตและทำการคำนวณหรือการแปลงบนวัตถุ
ConversionResult
$ currency -> convert ( 10.00 , ' USD ' , ' THB ' ); // Convert 10 USD to THB
$ currency -> convert ( 122.50 , ' NPR ' , ' EUR ' , ' 2019-01-01 ' ); // Convert 122.50 NPR to EUR using the rates from January 1st, 2019วิธีการส่วนใหญ่สามารถใช้กับ อินเทอร์เฟซที่คล่องแคล่ว ช่วยให้คุณสามารถเรียกใช้เมธอดสำหรับรหัสที่อ่านได้มากขึ้น:
// Namespaces are omitted for readability!
DriverFactory:: make ( ' driver ' )-> from (Symbol:: USD )-> to (Symbol:: EUR )-> get ();
DriverFactory:: make ( ' driver ' )-> from (Symbol:: USD )-> to (Symbol:: NPR )-> date ( ' 2013-03-02 ' )-> historical ();
DriverFactory:: make ( ' driver ' )-> from (Symbol:: USD )-> to (Symbol:: NPR )-> amount ( 12.10 )-> convert (); จุดสิ้นสุดของ get() และ historical() ส่งคืนวัตถุ ConversionResult วัตถุนี้ช่วยให้คุณทำการคำนวณและการแปลงได้อย่างง่ายดาย
! หมายเหตุ: แม้ว่าบัญชีฟรีของผู้ให้บริการส่วนใหญ่จะไม่อนุญาตให้คุณเปลี่ยนสกุลเงินพื้นฐาน แต่คุณยังสามารถใช้วัตถุ
ConversionResultเพื่อเปลี่ยนสกุลเงินพื้นฐานในภายหลัง สิ่งนี้อาจไม่ถูกต้องเท่ากับการเปลี่ยนสกุลเงินพื้นฐานโดยตรง
! หมายเหตุ: ในการแปลงระหว่างสองสกุลเงินคุณต้องขอทั้งสองอย่างในคำขอเริ่มต้น
get()หรือhistorical()คุณไม่สามารถแปลงระหว่างสกุลเงินที่ยังไม่ได้รับการดึง!
ดูรหัสต่อไปนี้สำหรับตัวอย่างบางส่วนของสิ่งที่คุณสามารถทำได้กับวัตถุ ConversionResult
$ result = DriverFactory:: make ( ' driver ' )-> from (Symbol:: USD )-> to ([Symbol:: EUR , Symbol:: GBP ])-> get ();
// [ 'USD' => 1.00, 'EUR' => 0.89, 'GBP' => 0.79 ]
$ result -> all ();
// 'USD'
$ result -> getBaseCurrency ();
// '2019-06-11'
$ result -> getDate ();
// 0.89
$ result -> rate (Symbol:: EUR );
// CurrencyException("No conversion result for BTC!");
$ result -> rate (Symbol:: BTC );
// 5.618
$ result -> convert ( 5.0 , Symbol:: EUR , Symbol:: USD );
// [ 'USD' => 1.13, 'EUR' => 1.00, 'GBP' => 0.89 ]
$ result -> setBaseCurrency (Symbol:: EUR )-> all ();
// 1.12
$ result -> setBaseCurrency (Symbol:: GBP )-> rate (Symbol:: EUR );คำขอดึงเป็นมากกว่าการต้อนรับ! ฉันมุ่งมั่นที่จะครอบคลุมการทดสอบ 100% สำหรับที่เก็บนี้ดังนั้นโปรดตรวจสอบให้แน่ใจว่าได้เพิ่มการทดสอบสำหรับรหัสของคุณ