ส่วนขยาย

Schema Functions

เปิดเผยฟังก์ชันการทำงานจากภาษาโปรแกรม PHP ผ่านฟิลด์และไดเรกทีฟของ GraphQL

Logo
Target Image

Click to watch tutorial video - 07:54

GraphQL schema ได้รับการเพิ่มฟิลด์และไดเรกทีฟที่เปิดเผยฟังก์ชันการทำงานจากภาษาโปรแกรม PHP

ฟิลด์ฟังก์ชัน

ฟิลด์ฟังก์ชันเป็นฟิลด์ระดับโกลบอล จึงถูกเพิ่มเข้าไปในทุก type ใน GraphQL schema ได้แก่ QueryRoot รวมถึง Post, User และอื่นๆ

ฟิลด์ฟังก์ชันมีประโยชน์สำหรับการจัดการข้อมูลหลังจากที่ดึงข้อมูลมาแล้ว ช่วยให้เราสามารถแปลงค่าของฟิลด์ในรูปแบบที่ต้องการ และมอบความสามารถในการนำเข้า/ส่งออกข้อมูลที่ทรงพลัง

ตัวอย่างเช่น แม้เรามีฟิลด์ Post.hasComments แต่เราอาจต้องการค่าตรงกันข้าม แทนที่จะสร้างฟิลด์ใหม่ Post.notHasComments (ซึ่งต้องแก้ไขโค้ด PHP) เราสามารถใช้ฟีเจอร์ Field to Input เพื่อส่งค่าจาก hasComments เข้าสู่ฟิลด์ not และคำนวณค่าใหม่ภายใน GraphQL query ได้เลย:

query {
  posts {
    id
    hasComments
    notHasComments: _not(value: $__hasComments)
  }
}

ไดเรกทีฟฟังก์ชัน

GraphQL schema ได้รับการเพิ่มไดเรกทีฟที่เปิดเผยฟังก์ชันการทำงานที่พบได้ทั่วไปในภาษาโปรแกรม (เช่น PHP)

ฟิลด์ไดเรกทีฟมีประโยชน์สำหรับการจัดการข้อมูลหลังจากที่ดึงข้อมูลมาแล้ว ช่วยให้เราสามารถแปลงค่าของฟิลด์ในรูปแบบที่ต้องการ และมอบความสามารถในการนำเข้า/ส่งออกข้อมูลที่ทรงพลัง

ตัวอย่างเช่น query นี้:

query {
  posts {
    title @strUpperCase
  }
}

...จะให้ผลลัพธ์ดังนี้:

{
  "data": {
    "posts": [
      {
        "title": "HELLO WORLD!"
      },
      {
        "title": "LOVELY WEATHER"
      }
    ]
  }
}

ฟิลด์ Helper

GraphQL schema ได้รับการเพิ่มฟิลด์ที่มอบฟังก์ชันการทำงาน helper ที่ใช้บ่อย

ฟิลด์ helper เป็นฟิลด์ระดับโกลบอล จึงถูกเพิ่มเข้าไปในทุก type ใน GraphQL schema ได้แก่ QueryRoot รวมถึง Post, User และอื่นๆ

ใน query นี้ เราดึง ID ของผู้ใช้บนเว็บไซต์และส่ง GraphQL query ใหม่โดยส่ง ID ของพวกเขาเป็น parameter:

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
    }
  }
}

ฟิลด์ Environment

GraphQL schema ได้รับการเพิ่มฟิลด์ระดับโกลบอล _env ซึ่งช่วยให้ดึงค่าจาก environment variable หรือจาก PHP constant (ที่กำหนดไว้ใน wp-config.php เป็นหลัก แต่อาจกำหนดไว้ที่อื่นก็ได้)

query นี้ดึง environment constant GITHUB_ACCESS_TOKEN ที่เราอาจตั้งค่าไว้เพื่อเข้าถึง private repository บน GitHub:

query {
  githubAccessToken: _env(name: "GITHUB_ACCESS_TOKEN")
}

ตัวส่งอีเมล

GraphQL schema ได้รับการเพิ่ม global mutation _sendEmail

Mutation _sendEmail ส่งอีเมลโดยเรียกใช้ฟังก์ชัน wp_mail ของ WordPress ด้วยเหตุนี้จึงใช้การกำหนดค่าที่ตั้งไว้สำหรับการส่งอีเมลใน WordPress (เช่น SMTP provider ที่ใช้)

อีเมลสามารถส่งพร้อม content type "text" หรือ "HTML" ขึ้นอยู่กับค่าของ input messageAs (ซึ่งเป็น "oneof" InputObject ดังนั้นจึงระบุได้เพียงหนึ่ง property เท่านั้น)

mutation {
  _sendEmail(
    input: {
      to: "target@email.com"
      subject: "Email with text content"
      messageAs: {
        text: "Hello world!"
      }
    }
  ) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
  }
}

ซื้อบันเดิล All-Inclusive

ส่วนตัว
$79
/ปี
“All-Inclusive” บันเดิล
ใบอนุญาตสำหรับ 1 โดเมน
ซื้อ ->
  • 1 โดเมน
  • การสนับสนุน
  • การอัปเดตผลิตภัณฑ์
องค์กร
$99
/ปี
“All-Inclusive” บันเดิล
ใบอนุญาตสำหรับ 3 โดเมน
ซื้อ ->
  • 3 โดเมน
  • การสนับสนุน
  • การอัปเดตผลิตภัณฑ์
มืออาชีพ
$199
/ปี
“All-Inclusive” บันเดิล
ใบอนุญาตสำหรับ 10 โดเมน
ซื้อ ->
  • 10 โดเมน
  • การสนับสนุน
  • การอัปเดตผลิตภัณฑ์

ใบอนุญาตมีอายุ 1 ปี (ต่ออายุได้ทุกปี) ราคาเป็น USD

ต้องการโดเมนเพิ่มเติมใช่ไหม? ติดต่อเรา

รับประกันคืนเงินภายใน 30 วัน

ซื้อส่วนขยายใดก็ได้ด้วยความมั่นใจว่าคุณสามารถขอคืนเงินได้

Testimonial image

“ปลั๊กอินนี้อยู่ในระดับที่แตกต่างอย่างสิ้นเชิง! มันพาเว็บไซต์ของคุณไปสู่อีกระดับและเปลี่ยนให้กลายเป็นเครื่องมือที่ทรงพลัง ยิ่งคุณสำรวจสิ่งที่มันทำได้มากเท่าไหร่ คุณก็จะยิ่งประทับใจมากขึ้นเท่านั้น ถ้าคุณยังลังเล อย่ารอช้า ไม่งั้นจะเสียใจทีหลัง! เอกสารประกอบพูดแทนตัวเองได้ดีมาก และแข็งแกร่งที่สุดเท่าที่จะมีได้ Leo (นักพัฒนา) เป็นหนึ่งในนักพัฒนาที่เฉลียวฉลาดและว่องไวที่สุดที่ฉันเคยพบ เขาตอบสนองได้รวดเร็วมากและรู้ดีว่าตนเองทำอะไร ฉันตื่นเต้นอย่างแท้จริงกับสิ่งที่ปลั๊กอินนี้ทำได้ ความเป็นไปได้แทบจะไม่มีสิ้นสุด และถ้า SEO สำคัญสำหรับคุณ มันจะช่วยให้เว็บไซต์ของคุณติดอันดับได้สูงมาก”

olmate - นักพัฒนาเว็บ

สมัครรับจดหมายข่าวของเรา

ติดตามการอัปเดตทั้งหมดของ Gato GraphQL