[TOC]
#### 執行查詢
執行查詢是一個復雜的過程涉及多個步驟,包括查詢解析(query parsing),驗證,以及最后的針對schema的執行。
graphql-php在類GraphQL\GraphQL中為些過程提供了方便的接口.
~~~
use GraphQL\GraphQL;
$result = GraphQL::execute(
$schema,
$queryString,
$rootValue = null,
$contextValue = null,
$variableValues = null,
$operationName = null
);
~~~
方法返回包含 data 和 errors key值的數組(如果執行完全沒有錯誤,則errors字段不存在),這個數組適合進一步的序列化。
#### execute執行參數
| 參數 | 類型 | 描述 |
| --- | --- | --- |
| schema | `GraphQL\Schema` | `必填` 你應用的schema的實例。 |
| queryString | `string` or `GraphQL\Language\AST\DocumentNode` | 查詢字符串 或 文檔節點 ,查詢字符串最后也會轉換成文檔節點。graphql query string 會被解析,驗證和執行。如果在執行之前已經在其它地方解析過,在這里傳遞對應的 ast document對象 以避免新的解析。 |
| rootValue | `mixed` | 傳遞給schema 中 root-level Object type 的數據,它作為 類型的 field resolvers的第一個參數傳入,如果實際的根值由 Query 類型本身提取(如字段的參數)可以被忽略或設置為null |
| contextValue | `mixed` | 保存所有的 field resolvers 之間 共享的信息,可以是任意值,大多數情況下它傳遞當前登錄者信息,及位置描述等。 在所有 field resolvers中作為回調函數的第三個參數變量 |
| variableValues | `array` | 伴隨 query string 傳遞的變量數組,key值對應 query string中的變量聲明。 |
| operationName | `string` | 在query string 包含多個頂級操作的情況下,允許調用者指定在query string中將運行哪一個 |