HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/magento.bikenow.co/vendor/webonyx/graphql-php/docs/how-it-works.md
# Overview
Following reading describes implementation details of query execution process. It may clarify some 
internals of GraphQL runtime but is not required to use it.

# Parsing

TODOC

# Validating
TODOC

# Executing
TODOC

# Errors explained
There are 3 types of errors in GraphQL:

- **Syntax**: query has invalid syntax and could not be parsed;
- **Validation**: query is incompatible with type system (e.g. unknown field is requested);
- **Execution**: occurs when some field resolver throws (or returns unexpected value).

Obviously, when **Syntax** or **Validation** error is detected - the process is interrupted and 
the query is not executed.

Execution process never throws exceptions. Instead, all errors are caught and collected in 
execution result.

GraphQL is forgiving to **Execution** errors which occur in resolvers of nullable fields. 
If such field throws or returns unexpected value the value of the field in response will be simply 
replaced with **null** and error entry will be registered.

If an exception is thrown in the non-null field - error bubbles up to the first nullable field. 
This nullable field is replaced with **null** and error entry is added to the result. 
If all fields up to the root are non-null - **data** entry will be removed from the result  
and only **errors** key will be presented.