Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Implementing GraphQL with PHP - PHP Community S...
Search
Alefe Souza
September 27, 2019
Programming
330
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Implementing GraphQL with PHP - PHP Community Summit
Alefe Souza
September 27, 2019
More Decks by Alefe Souza
See All by Alefe Souza
NativeScript: Native Apps with Angular
alefesouza
0
510
Implementing GraphQL with Laravel and Vue.js
alefesouza
0
370
React: Zero to Hero
alefesouza
2
540
Implementing GraphQL with PHP
alefesouza
0
610
Node.js Chatbots with Bot Framework
alefesouza
0
430
GraphQL: A new way to write APIs
alefesouza
0
470
Firebase as back-end
alefesouza
0
500
GitLab: A tool for the entire DevOps lifecycle.pdf
alefesouza
0
740
Web Components with Vanilla.js
alefesouza
0
700
Other Decks in Programming
See All in Programming
No More NoSuchMethodError
exoego
1
110
AmebaブログはKMPから卒業します
kmars0605
0
210
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
450
自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs
akihisaikeda
0
130
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
200
Kotlinの15年とServer-Side Kotlin
n_takehata
1
160
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
820
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
160
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
130
AWSに止められる覚悟してますか?
morizo_1984
2
540
ジョジョの世界をXRで再現する
mofurune
0
180
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
860
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Abbi's Birthday
coloredviolet
4
10k
Facilitating Awesome Meetings
lara
57
7.2k
How to make the Groovebox
asonas
2
2.5k
The Cost Of JavaScript in 2023
addyosmani
55
10k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
Un-Boring Meetings
codingconduct
0
460
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.7k
WCS-LA-2024
lcolladotor
0
900
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
870
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
Designing Experiences People Love
moore
143
24k
Transcript
Implementando GraphQL com PHP @alefesouza https://as.dev
Alefe Souza @alefesouza https://as.dev Full Stack Developer @alefesouza Programador PHP
desde os 17 anos, instrutor de desenvolvimento de software, formado em análise e desenvolvimento de sistemas, Microsoft Specialist em tecnologias web.
Agenda • O que é GraphQL • Conceitos básicos •
Demo • Implementação em Laravel • Implementação no front-end @alefesouza https://as.dev
@alefesouza https://as.dev GraphQL? Uma especificação de linguagem de consulta de
APIs, desenvolvida pelo Facebook.
@alefesouza https://as.dev GraphQL? Baseado em apenas um endpoint.
@alefesouza https://as.dev GraphQL? Fortemente tipada.
@alefesouza https://as.dev GraphQL? Documentação automática.
@alefesouza https://as.dev Conceitos básicos • Tipos • Queries • Mutations
@alefesouza https://as.dev Tipos Permitem especificar objetos de entrada e saída,
impedindo a requisição caso ocorra algo fora do padrão.
@alefesouza https://as.dev Queries Utilizadas para consultas no endpoint único, também
é muito fácil de solicitar apenas o que os campos necessários.
@alefesouza https://as.dev Mutations Utilizadas para realizar qualquer tipo de alteração
nos dados, equivalente ao POST, PUT, PATCH, DELETE, identificados pelo nome.
@alefesouza https://as.dev Onde funciona?
@alefesouza https://as.dev Onde funciona?
@alefesouza https://as.dev Quem utiliza?
@alefesouza https://as.dev $ composer install webonyx/graphql-php Como iniciar?
@alefesouza https://as.dev Demo! http://bit.ly/talk-graphql-php
@alefesouza https://as.dev Implementação no Laravel $ composer install rebing/graphql-laravel $
php artisan vendor:publish --provider="Rebing\GraphQL\GraphQLServiceProvider"
@alefesouza https://as.dev Implementação no front-end $ npm install --save vue-apollo
graphql apollo-boost
@alefesouza https://as.dev Implementação no front-end import VueApollo from 'vue-apollo'; import
ApolloClient from 'apollo-boost'; import App from './App.vue'; Vue.use(VueApollo); const apolloClient = new ApolloClient(); const apolloProvider = new VueApollo({ defaultClient: apolloClient, }); new Vue({ el: '#app', apolloProvider, render: h => h(App), });
@alefesouza https://as.dev <ApolloQuery :query="require('./../graphql/queries/fetchUsers.gql')" > <template v-slot="{ result: { loading,
error, data } }"> <!-- Loading --> <div v-if="loading" class="loading apollo">Carregando...</div> <!-- Error --> <div v-else-if="error" class="error apollo">Houve um erro</div> <!-- Result --> <div v-else-if="data" class="result apollo"> <ul> <li v-for="user in data.users" :key="user.id"> <b>Nome:</b> {{ user.name }}<br> <b>E-mail:</b> {{ user.email }}<br> <b>Empresa:</b> {{ user.company.name }} </li> </ul> </div> </template> </ApolloQuery>
@alefesouza https://as.dev <ApolloQuery :query="require('./../graphql/queries/fetchUser.gql')" :variables="{ id: userId }" > <template
v-slot="{ result: { loading, error, data } }"> <!-- Loading --> <div v-if="loading" class="loading apollo">Carregando...</div> <!-- Error --> <div v-else-if="error" class="error apollo">Houve um erro</div> <!-- Result --> <div v-else-if="data" class="result apollo"> <b>Nome:</b> {{ data.user.name }}<br> <b>E-mail:</b> {{ data.user.email }}<br> <b>Empresa:</b> {{ data.user.company.name }} </div> </template> </ApolloQuery>
@alefesouza https://as.dev <ApolloMutation :mutation="require('../graphql/mutations/addUser.gql')" :variables="{ input }" @done="onDone" > <template
v-slot="{ mutate, loading, error }"> <div> <div> <div>Nome:</div> <input type="text" v-model="input.name"> </div> <div> <div>E-mail:</div> <input type="text" v-model="input.email"> </div> <div> <div>ID da empresa:</div> <input type="number" v-model="input.company_id"> </div> </div> <button :disabled="loading" @click="mutate()">Salvar</button> <p v-if="error">Ocorreu um erro: {{ error }}</p> </template> </ApolloMutation>
@alefesouza https://as.dev Obrigado! @alefesouza https://bit.ly/talk-graphql-php https://bit.ly/talk-laravel-vue-graphql