1. Go to this page and download the library: Download shish/gqla library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
shish / gqla example snippets
use GQLA\Type;
use GQLA\Field;
use GQLA\Query;
use GQLA\Mutation;
// To create a new GraphQL Type, expose a PHP class
#[Type]
class Post {
// To add fields to that type, expose PHP class properties
#[Field]
public string $title;
#[Field]
public string $body;
// If you don't want the field to be part of your API,
// don't expose it
public int $author_id;
// If your field is more complicated than a property,
// expose a PHP function and it will be called as needed
#[Field(name: "author")]
public function get_author(): User {
return User::by_id($this->author_id);
}
// To add a new query or mutation, you can extend
// the base Query or Mutation types
#[Query(name: "posts", type: "[Post!]!")]
public static function search_posts(string $text): array {
// SELECT * FROM posts WHERE text LIKE "%{$text}%";
}
}
#[Type]
class User {
#[Field]
public string $name;
}
#[Type]
class Comment {
#[Field]
public string $text;
public int $post_id;
public int $author_id;
#[Field]
public function author(): User {
return User::by_id($this->author_id);
}
#[Field(deprecationReason: "Use author subfield")]
public function author_name(): string {
return User::by_id($this->author_id)->name;
}
// Note that even if the Comment class comes from a third-party
// plugin, it can still add a new "comments" field onto the
// first-party "Post" object type.
#[Field(extends: "Post", type: "[Comment!]!")]
public function comments(Post $post): array {
// SELECT * FROM comments WHERE post_id = {$post->id}
}
}
#[Field(type: "[String!]!")]
function get_tags(): array {
return ["foo", "bar"];
}
#[Field(args: ["tags" => "[String!]!"])]
function get_first_post_with_tags(array $tags): Post {
return ...;
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.