SlideShare a Scribd company logo
Dependency Inversion w PHP
O MNIE
Rafał Kański
Software Engineer w Schibsted Tech Polska
http://blogophp.com
ZACZYNAMY...
TYPOWY DZIEŃ PRACY...
Pobieranie artykułów ze strony artykuly.pl
ZADANIE:
TYPOWY DZIEŃ PRACY...
DOBRA WIADOMOŚĆ:
Strona oferuje klienta do pobierania artykułów
TYPOWY DZIEŃ PRACY...
LEPSZA WIADOMOŚĆ:
Klienta można zainstalować composerem
INSTALUJEMY...
COMPOSER.JSON
{
"name": "application/my-app",
"description": “Project",
"minimum-stability": "stable",
"require": {
"artykuly/api-client": "^1.2"
}
}
TYPOWY DZIEŃ PRACY...
Zapisywanie danych z rssowego feeda feed.pl
KOLEJNE ZADANIE:
TYPOWY DZIEŃ PRACY...
DOBRA WIADOMOŚĆ:
Do pobierania feeda można użyć prostego klienta
TYPOWY DZIEŃ PRACY...
LEPSZA WIADOMOŚĆ:
Klienta do feeda można zainstalować composerem
INSTALUJEMY...
COMPOSER.JSON
{
"name": "application/my-app",
"description": “Project",
"minimum-stability": "stable",
"require": {
"artykuly/api-client": "^1.2",
"feed/api-client": "^2.1"
}
}
POTENCJALNE ZAGROŻENIE
TYPOWY DZIEŃ PRACY...
APLIKACJA
JEDNA APLIKACJA WIELE KLIENTÓW API
KLIENT API
KLIENT API
KLIENT API
KLIENT API
JSON
XML
OAUTH
SAML
KLIENT API
KLIENT API POD MASKĄ
KLIENT HTTP
WŁASNY GOTOWYCZY
KLIENT API
TO JESZCZE NIE JEST PROBLEM...
KLIENT HTTP
GOTOWY
JEDEN KLIENT API
PROBLEM POJAWIA SIĘ GDY...
GUZZLE
^5.3
DRUGI KLIENT API
GUZZLE
^6.2
JAKO TWÓRCA KLIENTA API
“Uzależniaj kod od abstrakcji a
nie od klas rzeczywistych”
Dependency Inversion
JAKO TWÓRCA KLIENTA API
{
"name": "somename/api-client",
"description": "API Client",
"minimum-stability": "stable",
"require": {
"guzzlehttp/guzzle": "^6.2"
}
}
Uzależniam się od klas rzeczywistych...MINUS
Dependency Inversion
w composerze?
JAKO TWÓRCA KLIENTA API
ROZWIĄZANIE
WIRTUALNA PACZKA
{
"name": "somename/virtual-package-implementation",
"description": "I deliver implementation",
"provide": {
"somename/virtual-package-name": "1.0"
},
"require": {
"somename/virtual-package-interfaces": "^1.2"
}
}
JAK SZUKAĆ WIRTUALNYCH PACZEK?
PACKAGIST
MOŻEMY JEJ WYMAGAĆ W COMPOSER
JAKO TWÓRCA KLIENTA API
Jak uniezależnić się od implementacji?PYTANIE
{
"name": "somename/api-client",
"description": "API Client",
"minimum-stability": "stable",
"require": {
"guzzlehttp/guzzle": "^6.2"
}
}
JAKO TWÓRCA KLIENTA API
Zbiór interfejsów dla klienta HTTP?PYTANIE
PSR-7 psr/http-message
A paczka wirtualna dla tych interfejsów?
JAKO TWÓRCA KLIENTA API
PYTANIE
PSR-7 psr/http-message-implementation
JAKO TWÓRCA KLIENTA API
PACKAGIST psr/http-message-implementation
PSR-7 nie daje interfejsu klienta HTTP
JAKO TWÓRCA KLIENTA API
PROBLEM
RequestInterface ResponseInterface
UriInterface...
PSR-7
http://httplug.io
JAKO TWÓRCA KLIENTA API
ROZWIĄZANIE
JAKO TWÓRCA KLIENTA API
Zbiór interfejsów dla klienta HTTP
HTTP-PLUG php-http/httpplug
JAKO TWÓRCA KLIENTA API
Wirtualna paczka dla klienta HTTP
HTTP-PLUG php-http/client-implementation
JAKO TWÓRCA KLIENTA API
PACKAGIST php-http/client-implementation
JAKO TWÓRCA KLIENTA API
KTO UŻYWA?
JAKO TWÓRCA KLIENTA API
JAK WYGLĄDA?
UZALEŻNIAMY SIĘ OD WIRTUALNEJ PACZKI
INSTALACJA
{
"name": "somename/api-client",
"description": "API Client",
"minimum-stability": "stable",
"require": {
"php-http/client-implementation": "^1.0"
}
}
UZALEŻNIAMY SIĘ OD WIRTUALNEJ PACZKI
{
"name": "somename/api-client",
"description": "API Client",
"minimum-stability": "stable",
"require": {
"php-http/client-implementation": "^1.0"
}
}
JAK ZACHOWA SIĘ COMPOSER PRZY composer install
WADY WIRTUALNYCH PACZEK
COMPOSER POINFORMUJE ŻE NIE ODNALAZŁ PACZKI1
ROZWIĄZANIE
WADY WIRTUALNYCH PACZEK
COMPOSER POINFORMUJE ŻE NIE ODNALAZŁ PACZKI1
ROZWIĄZANIE
WIEDZA CZYM JEST WIRTUALNA PACZKA WIEDZA JAK JE INSTALOWAĆ
WADY WIRTUALNYCH PACZEK
WIRTUALNĄ PACZKĘ MOŻNA STWORZYĆ NIE IMPLEMENTUJĄC INTERFEJSÓW2
{
"name": "somename/virtual-package-implementation",
"description": "I don’t deliver implementation",
"provide": {
"somename/virtual-package-name": "1.0"
}
}
WADY WIRTUALNYCH PACZEK
MOŻE ISTNIEĆ BIBLIOTEKA DOSTARCZAJĄCA INTERFEJS NIE INFORMUJĄC O TYM3
{
"name": "somename/virtual-package-implementation",
"description": "I deliver implementation",
"require": {
"somename/virtual-package-interfaces": "^1.2"
}
}
WADY WIRTUALNYCH PACZEK
KAŻDY MOŻE STWORZYĆ PACZKĘ WIRTUALNĄ O DOWOLNEJ NAZWIE4
{
"name": "somename/virtual-package-implementation",
"description": "I don’t deliver implementation",
"provide": {
"somename/virtual-package-name-typo": "1.0"
}
}
ZALETY WIRTUALNYCH PACZEK
ROZWIĄZUJEMY PROBLEM KONFLIKTÓW W COMPOSERZE PRZY INSTALACJI1
DAJEMY WYBÓR UŻYTKOWNIKOM KONKRETNEJ BIBLIOTEKI2
ZALETY WIRTUALNYCH PACZEK
MAM GUZZLE 5 TO INSTALUJE ADAPTER
NIE PODOBA MI SIĘ WYDAJNOŚĆ TO
ZMIENIAM IMPLEMENTACJĘ
UZALEŻNIAMY KOD OD ABSTRAKCJI/INTERFEJSÓW KORZYSTAJĄC Z COMPOSERA3
ZALETY WIRTUALNYCH PACZEK
PRZYKŁAD KLIENTA
https://github.com/Schibsted-Tech-Polska/capi_php_sdk
{
“require”: {
"php": ">=5.5",
"php-http/client-implementation": "^1.0",
"php-http/message-factory-implementation": "^1.0"
}
….
}
PYTANIA

More Related Content

Similar to Dependency inversion w php

KaTe RESTful adapter for SAP Process Integration: Introduction
KaTe RESTful adapter for SAP Process Integration: IntroductionKaTe RESTful adapter for SAP Process Integration: Introduction
KaTe RESTful adapter for SAP Process Integration: Introduction
Kate_RESTful
 
Design Summit - RESTful API Overview - John Hardy
Design Summit - RESTful API Overview - John HardyDesign Summit - RESTful API Overview - John Hardy
Design Summit - RESTful API Overview - John Hardy
ManageIQ
 
Mastering Microservices with Kong (DevoxxUK 2019)
Mastering Microservices with Kong (DevoxxUK 2019)Mastering Microservices with Kong (DevoxxUK 2019)
Mastering Microservices with Kong (DevoxxUK 2019)
Maarten Mulders
 
Web Apps: APIs' Nightmare
Web Apps: APIs' NightmareWeb Apps: APIs' Nightmare
Web Apps: APIs' Nightmare
Paulo Silva
 
POX to HATEOAS: Our Company's Journey Building a Hypermedia API
POX to HATEOAS: Our Company's Journey Building a Hypermedia APIPOX to HATEOAS: Our Company's Journey Building a Hypermedia API
POX to HATEOAS: Our Company's Journey Building a Hypermedia API
Luke Stokes
 
WordCamp Raleigh 2016 - WP API, What is it good for? Absolutely Everything!
WordCamp Raleigh 2016 - WP API, What is it good for? Absolutely Everything!WordCamp Raleigh 2016 - WP API, What is it good for? Absolutely Everything!
WordCamp Raleigh 2016 - WP API, What is it good for? Absolutely Everything!
Evan Mullins
 
Running gRPC Services for Serving Legacy API on Kubernetes
Running gRPC Services for Serving Legacy API on KubernetesRunning gRPC Services for Serving Legacy API on Kubernetes
Running gRPC Services for Serving Legacy API on Kubernetes
Sungwon Lee
 
ElasticSearch Introduction
ElasticSearch IntroductionElasticSearch Introduction
ElasticSearch Introduction
Minh Hoang
 
Day01 api
Day01   apiDay01   api
Introduction to REST and Hypermedia
Introduction to REST and HypermediaIntroduction to REST and Hypermedia
Introduction to REST and Hypermedia
Nordic APIs
 
Programmatic access to wormbase data WormBase Workshop International Worm Mee...
Programmatic access to wormbase data WormBase Workshop International Worm Mee...Programmatic access to wormbase data WormBase Workshop International Worm Mee...
Programmatic access to wormbase data WormBase Workshop International Worm Mee...
raymond91105
 
Fully Automate Application Delivery with Puppet and F5 - PuppetConf 2014
Fully Automate Application Delivery with Puppet and F5 - PuppetConf 2014Fully Automate Application Delivery with Puppet and F5 - PuppetConf 2014
Fully Automate Application Delivery with Puppet and F5 - PuppetConf 2014
Puppet
 
Play Your API with MuleSoft API Notebook
Play Your API with MuleSoft API NotebookPlay Your API with MuleSoft API Notebook
Play Your API with MuleSoft API Notebook
Rakesh Kumar Jha
 
WordPress and Client Side Web Applications WCTO
WordPress and Client Side Web Applications WCTOWordPress and Client Side Web Applications WCTO
WordPress and Client Side Web Applications WCTO
Roy Sivan
 
Wordcamp Toronto Presentation
Wordcamp Toronto PresentationWordcamp Toronto Presentation
Wordcamp Toronto Presentation
Roy Sivan
 
Schema-First API Design
Schema-First API DesignSchema-First API Design
Schema-First API Design
Yos Riady
 
Building Your First App with MongoDB
Building Your First App with MongoDBBuilding Your First App with MongoDB
Building Your First App with MongoDB
MongoDB
 
The better PHP API (EN)
The better PHP API (EN)The better PHP API (EN)
The better PHP API (EN)
boen_robot
 
Using the new WordPress REST API
Using the new WordPress REST APIUsing the new WordPress REST API
Using the new WordPress REST API
Caldera Labs
 
Itb 2021 - Bulding Quick APIs by Gavin Pickin
Itb 2021 - Bulding Quick APIs by Gavin PickinItb 2021 - Bulding Quick APIs by Gavin Pickin
Itb 2021 - Bulding Quick APIs by Gavin Pickin
Gavin Pickin
 

Similar to Dependency inversion w php (20)

KaTe RESTful adapter for SAP Process Integration: Introduction
KaTe RESTful adapter for SAP Process Integration: IntroductionKaTe RESTful adapter for SAP Process Integration: Introduction
KaTe RESTful adapter for SAP Process Integration: Introduction
 
Design Summit - RESTful API Overview - John Hardy
Design Summit - RESTful API Overview - John HardyDesign Summit - RESTful API Overview - John Hardy
Design Summit - RESTful API Overview - John Hardy
 
Mastering Microservices with Kong (DevoxxUK 2019)
Mastering Microservices with Kong (DevoxxUK 2019)Mastering Microservices with Kong (DevoxxUK 2019)
Mastering Microservices with Kong (DevoxxUK 2019)
 
Web Apps: APIs' Nightmare
Web Apps: APIs' NightmareWeb Apps: APIs' Nightmare
Web Apps: APIs' Nightmare
 
POX to HATEOAS: Our Company's Journey Building a Hypermedia API
POX to HATEOAS: Our Company's Journey Building a Hypermedia APIPOX to HATEOAS: Our Company's Journey Building a Hypermedia API
POX to HATEOAS: Our Company's Journey Building a Hypermedia API
 
WordCamp Raleigh 2016 - WP API, What is it good for? Absolutely Everything!
WordCamp Raleigh 2016 - WP API, What is it good for? Absolutely Everything!WordCamp Raleigh 2016 - WP API, What is it good for? Absolutely Everything!
WordCamp Raleigh 2016 - WP API, What is it good for? Absolutely Everything!
 
Running gRPC Services for Serving Legacy API on Kubernetes
Running gRPC Services for Serving Legacy API on KubernetesRunning gRPC Services for Serving Legacy API on Kubernetes
Running gRPC Services for Serving Legacy API on Kubernetes
 
ElasticSearch Introduction
ElasticSearch IntroductionElasticSearch Introduction
ElasticSearch Introduction
 
Day01 api
Day01   apiDay01   api
Day01 api
 
Introduction to REST and Hypermedia
Introduction to REST and HypermediaIntroduction to REST and Hypermedia
Introduction to REST and Hypermedia
 
Programmatic access to wormbase data WormBase Workshop International Worm Mee...
Programmatic access to wormbase data WormBase Workshop International Worm Mee...Programmatic access to wormbase data WormBase Workshop International Worm Mee...
Programmatic access to wormbase data WormBase Workshop International Worm Mee...
 
Fully Automate Application Delivery with Puppet and F5 - PuppetConf 2014
Fully Automate Application Delivery with Puppet and F5 - PuppetConf 2014Fully Automate Application Delivery with Puppet and F5 - PuppetConf 2014
Fully Automate Application Delivery with Puppet and F5 - PuppetConf 2014
 
Play Your API with MuleSoft API Notebook
Play Your API with MuleSoft API NotebookPlay Your API with MuleSoft API Notebook
Play Your API with MuleSoft API Notebook
 
WordPress and Client Side Web Applications WCTO
WordPress and Client Side Web Applications WCTOWordPress and Client Side Web Applications WCTO
WordPress and Client Side Web Applications WCTO
 
Wordcamp Toronto Presentation
Wordcamp Toronto PresentationWordcamp Toronto Presentation
Wordcamp Toronto Presentation
 
Schema-First API Design
Schema-First API DesignSchema-First API Design
Schema-First API Design
 
Building Your First App with MongoDB
Building Your First App with MongoDBBuilding Your First App with MongoDB
Building Your First App with MongoDB
 
The better PHP API (EN)
The better PHP API (EN)The better PHP API (EN)
The better PHP API (EN)
 
Using the new WordPress REST API
Using the new WordPress REST APIUsing the new WordPress REST API
Using the new WordPress REST API
 
Itb 2021 - Bulding Quick APIs by Gavin Pickin
Itb 2021 - Bulding Quick APIs by Gavin PickinItb 2021 - Bulding Quick APIs by Gavin Pickin
Itb 2021 - Bulding Quick APIs by Gavin Pickin
 

Recently uploaded

1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...
JeyaPerumal1
 
guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...
Rogerio Filho
 
The+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptxThe+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptx
laozhuseo02
 
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
3ipehhoa
 
test test test test testtest test testtest test testtest test testtest test ...
test test  test test testtest test testtest test testtest test testtest test ...test test  test test testtest test testtest test testtest test testtest test ...
test test test test testtest test testtest test testtest test testtest test ...
Arif0071
 
How to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptxHow to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptx
Gal Baras
 
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
3ipehhoa
 
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
CIOWomenMagazine
 
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdfMeet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Florence Consulting
 
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shopHistory+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
laozhuseo02
 
Comptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guideComptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guide
GTProductions1
 
Latest trends in computer networking.pptx
Latest trends in computer networking.pptxLatest trends in computer networking.pptx
Latest trends in computer networking.pptx
JungkooksNonexistent
 
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdfJAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
Javier Lasa
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
ufdana
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
eutxy
 
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Brad Spiegel Macon GA
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
3ipehhoa
 
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
keoku
 
This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!
nirahealhty
 
Bài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docxBài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docx
nhiyenphan2005
 

Recently uploaded (20)

1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...
 
guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...
 
The+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptxThe+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptx
 
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
 
test test test test testtest test testtest test testtest test testtest test ...
test test  test test testtest test testtest test testtest test testtest test ...test test  test test testtest test testtest test testtest test testtest test ...
test test test test testtest test testtest test testtest test testtest test ...
 
How to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptxHow to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptx
 
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
 
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
 
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdfMeet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
 
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shopHistory+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
 
Comptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guideComptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guide
 
Latest trends in computer networking.pptx
Latest trends in computer networking.pptxLatest trends in computer networking.pptx
Latest trends in computer networking.pptx
 
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdfJAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
 
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
 
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
 
This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!
 
Bài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docxBài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docx
 

Dependency inversion w php