GraphQL API ile Etkileşim
GraphQL API ile EtkileşimUygulamanızı WordPress'ten başka bir PHP framework'üne veya CMS'e taşıma

Uygulamanızı WordPress'ten başka bir PHP framework'üne veya CMS'e taşıma

Gato GraphQL tarafından sağlanan GraphQL şeması, WordPress verilerini getirmek için alanlar içerir: gönderiler, kullanıcılar, yorumlar, etiketler, kategoriler vb.

PHP resolver'larındaki WordPress verilerini getiren kod WordPress'e bağımlıdır; bu kod WordPress dışı bir uygulamada çalıştırılamaz.

Ancak Gato GraphQL, bu resolver'ların her birini 2 paket aracılığıyla uygular:

  1. Tüm genel kodu içeren "vanilla" PHP paketi
  2. O resolver'ı karşılayan WordPress metodlarına yapılan gerçek çağrıları içeren WordPress'e özgü paket

Örneğin, şu GraphQL queries'inde:

{
  posts {
    id
    title
  }
}

...gönderileri getirme mantığı şunlardan oluşur:

  1. Root.posts alanı: Genel posts paketi içinde yer alır
  2. get_posts metodu aracılığıyla WordPress için çözümlenmesi: WordPress'e özgü posts-wp paketi içinde yer alır.

WordPress dışı/WordPress paketleri arasındaki kod bölünmesi yaklaşık %80/%20 oranındadır; bu da kodun %80'inin başka bir framework/CMS ile yeniden kullanılabilir olduğu ve yalnızca kodun %20'sinin yeniden uygulanması gerekeceği anlamına gelir.

Üstelik, Gato GraphQL'deki tüm işlevsellik modüller aracılığıyla sunulur ve modüller isteğe göre etkinleştirilebilir/devre dışı bırakılabilir.

Şema modülleri
Şema modülleri

Modüller, güvenlik amacıyla uygulanan bir özelliktir: Genel API'nızda kullanıcı verilerini ifşa etmenize gerek yoksa, Users modülünü devre dışı bırakabilirsiniz; bu sayede ilgili alanlar (örneğin Root.users) şemaya hiçbir zaman eklenmez.

Modüller doğrudan temel PHP paketlerine eşlenir. Bu nedenle, Gato GraphQL'i bağımsız bir uygulama olarak çalıştırırken ihtiyacımız olan modülleri/paketleri seçici biçimde yükleyebilir, diğerlerini yüklemeyebiliriz.

Örneğin, uygulamanız yalnızca gönderiler, kategoriler ve etiketler için veri yazdırıyorsa, yalnızca posts-wp, categories-wp ve tags-wp paketlerinin (bağımlılıklarıyla birlikte) yüklenmesi gerekir.

Ardından, WordPress'ten uzaklaşırken (örneğin Laravel veya Symfony'ye geçerken) yalnızca bu 3 WordPress'e özgü paketin yeni framework/CMS için yeniden uygulanması gerekecek, başka hiçbir şey gerekmeyecektir.