Schema Functions
PHP programlama dilinin işlevselliğini GraphQL alanları ve direktifleri aracılığıyla sunun.

Click to watch tutorial video - 07:54
GraphQL şemasına, PHP programlama dilinin işlevselliğini sunan alanlar ve direktifler eklenir.
Fonksiyon Alanları
Fonksiyon alanları global alanlardır; dolayısıyla GraphQL şemasındaki her türe eklenir: QueryRoot'a, aynı zamanda Post, User vb. türlere de.
Fonksiyon alanları, veriler alındıktan sonra bunları işlemek için kullanışlıdır; bir alan değerini istenen şekilde dönüştürmemize olanak tanır ve güçlü veri içe/dışa aktarma yetenekleri sunar.
Örneğin, Post.hasComments alanına sahipken karşıt değere ihtiyaç duyabiliriz. Post.notHasComments adında yeni bir alan oluşturmak yerine (bunun için PHP kodunu düzenlememiz gerekirdi), hasComments değerini bir not alanına geçirmek için Field to Input özelliğini kullanabiliriz; böylece yeni değeri her zaman GraphQL queries içinde hesaplarız:
query {
posts {
id
hasComments
notHasComments: _not(value: $__hasComments)
}
}Fonksiyon Direktifleri
GraphQL şemasına, programlama dillerinde (PHP gibi) yaygın olarak bulunan işlevselliği sunan direktifler eklenir.
Direktif alanları, veriler alındıktan sonra bunları işlemek için kullanışlıdır; bir alan değerini istenen şekilde dönüştürmemize olanak tanır ve güçlü veri içe/dışa aktarma yetenekleri sunar.
Örneğin, şu queries:
query {
posts {
title @strUpperCase
}
}...şu yanıtı üretir:
{
"data": {
"posts": [
{
"title": "HELLO WORLD!"
},
{
"title": "LOVELY WEATHER"
}
]
}
}Yardımcı Alanlar
GraphQL şemasına, yaygın olarak kullanılan yardımcı işlevsellik sağlayan alanlar eklenir.
Yardımcı alanlar global alanlardır; dolayısıyla GraphQL şemasındaki her türe eklenir: QueryRoot'a, aynı zamanda Post, User vb. türlere de.
Bu queries ile web sitesindeki kullanıcıların ID'lerini alır ve ID'yi parametre olarak geçirerek yeni bir GraphQL queries çalıştırırız:
query {
users {
userID: id
url: _urlAddParams(
url: "https://somewebsite/endpoint/user-data",
params: {
userID: $__userID
}
)
headers: _httpRequestHeaders
headerNameValueEntryList: _objectConvertToNameValueEntryList(
object: $__headers
)
_sendHTTPRequest(input: {
url: $__url
options: {
headers: $__headerNameValueEntryList
}
}) {
statusCode
contentType
body
}
}
}Ortam Alanları
GraphQL şemasına, bir ortam değişkeninden veya PHP sabitinden (çoğunlukla wp-config.php'de tanımlanan, ancak başka yerlerde de tanımlanabilen) değer almayı sağlayan global _env alanı eklenir.
Bu queries, özel bir GitHub deposuna erişmek için ayarlayabileceğimiz GITHUB_ACCESS_TOKEN ortam sabitini alır:
query {
githubAccessToken: _env(name: "GITHUB_ACCESS_TOKEN")
}E-posta Gönderici
GraphQL şemasına global mutation _sendEmail eklenir.
_sendEmail mutation'ı, WordPress wp_mail fonksiyonunu çalıştırarak e-posta gönderir. Sonuç olarak, WordPress'te e-posta gönderimi için tanımlanan yapılandırmayı (kullanılacak SMTP sağlayıcısı gibi) kullanır.
E-posta, messageAs girdisinin değerine bağlı olarak "text" veya "HTML" içerik türüyle gönderilebilir (bu, yalnızca özelliklerinden birinin sağlanabildiği bir "oneof" InputObject'tir).
mutation {
_sendEmail(
input: {
to: "target@email.com"
subject: "Email with text content"
messageAs: {
text: "Hello world!"
}
}
) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
}
}