Extension

Schema Functions

Exposez les fonctionnalités du langage de programmation PHP via des champs et des directives GraphQL.

Logo
Target Image

Click to watch tutorial video - 07:54

Le schéma GraphQL est enrichi de champs et de directives qui exposent les fonctionnalités du langage de programmation PHP.

Champs de fonction

Les champs de fonction sont des champs globaux, et sont donc ajoutés à tous les types du schéma GraphQL : dans QueryRoot, mais aussi dans Post, User, etc.

Les champs de fonction sont utiles pour manipuler les données une fois récupérées, nous permettant de transformer la valeur d'un champ de la manière requise, et nous accordant de puissantes capacités d'import/export de données.

Par exemple, bien que nous disposions d'un champ Post.hasComments, nous pourrions avoir besoin de la valeur opposée. Plutôt que de créer un nouveau champ Post.notHasComments (ce qui nécessiterait de modifier le code PHP), nous pouvons utiliser la fonctionnalité Field to Input pour transmettre la valeur de hasComments à un champ not, calculant ainsi la nouvelle valeur entièrement dans la requête GraphQL :

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

Directives de fonction

Le schéma GraphQL est enrichi de directives qui exposent des fonctionnalités couramment présentes dans les langages de programmation (comme PHP).

Les directives de champ sont utiles pour manipuler les données une fois récupérées, nous permettant de transformer la valeur d'un champ de la manière requise, et nous accordant de puissantes capacités d'import/export de données.

Par exemple, cette requête :

query {
  posts {
    title @strUpperCase
  }
}

...produira cette réponse :

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

Champs auxiliaires

Le schéma GraphQL est enrichi de champs fournissant des fonctionnalités auxiliaires couramment utilisées.

Les champs auxiliaires sont des champs globaux, et sont donc ajoutés à tous les types du schéma GraphQL : dans QueryRoot, mais aussi dans Post, User, etc.

Dans cette requête, nous récupérons les identifiants des utilisateurs du site et exécutons une nouvelle requête GraphQL en passant leur identifiant en paramètre :

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

Champs d'environnement

Le schéma GraphQL est enrichi du champ global _env, qui permet d'obtenir la valeur d'une variable d'environnement ou d'une constante PHP (le plus souvent définie dans wp-config.php, mais pouvant aussi être définie ailleurs).

Cette requête récupère la constante d'environnement GITHUB_ACCESS_TOKEN que nous pourrions configurer pour accéder à un dépôt privé sur GitHub :

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

Envoi d'e-mails

Le schéma GraphQL est enrichi de la mutation globale _sendEmail.

La mutation _sendEmail envoie des e-mails en exécutant la fonction WordPress wp_mail. Elle utilisera donc la configuration définie pour l'envoi d'e-mails dans WordPress (comme le fournisseur SMTP à utiliser).

L'e-mail peut être envoyé avec le type de contenu « text » ou « HTML », selon la valeur de l'entrée messageAs (qui est un InputObject « oneof », de sorte que seule l'une de ses propriétés peut être fournie).

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

Acheter le pack All-Inclusive

Personnel
$79
/an
“All-Inclusive” pack
Licence pour 1 domaine
Acheter ->
  • 1 domaine
  • Support
  • Mises à jour du produit
Organisation
$99
/an
“All-Inclusive” pack
Licence pour 3 domaines
Acheter ->
  • 3 domaines
  • Support
  • Mises à jour du produit
Professionnel
$199
/an
“All-Inclusive” pack
Licence pour 10 domaines
Acheter ->
  • 10 domaines
  • Support
  • Mises à jour du produit

La licence est valable 1 an (renouvelable chaque année). Les prix sont en USD.

Besoin de plus de domaines ? Contactez-nous

Garantie de remboursement de 30 jours

Achetez n’importe quelle extension en toute confiance : vous pouvez demander un remboursement

Testimonial image

“Ce plugin est d’un autre niveau ! Il propulse votre site dans une toute nouvelle dimension et en fait une bête. Plus vous explorez ce qu’il peut faire, plus il vous impressionne. Si vous hésitez, achetez-le tout simplement : sinon, vous le regretterez. La documentation parle d’elle-même et est parmi les plus solides qui soient. Leo (le dev) est l’un des développeurs les plus vifs et perspicaces que j’aie rencontrés. Il répond très vite et on sent qu’il en sait énormément. Honnêtement, je suis emballé par tout ce que ce plugin permet de faire. Les possibilités sont quasi infinies, et si le SEO compte pour vous, cela aidera votre site à se positionner très fort.”

olmate - Développeur web

Abonnez-vous à notre newsletter

Restez au courant de toutes les nouveautés de Gato GraphQL.