Sebagai alternatif untuk Siler, sesuatu yang ringan dan sederhana yang berfungsi sebagai perpustakaan dengan Swoole yang siap pakai, saya sangat merekomendasikan Nano! Lihat: https://nano.hyperf.wiki/#/en/
Siler adalah sekumpulan abstraksi tingkat tinggi tujuan umum yang mengarahkan API untuk pemrograman deklaratif di PHP.
Berkas dan berfungsi sebagai warga negara kelas satu
Nol ketergantungan , semuanya di atas fungsi bawaan PHP
Sangat cepat , tanpa overhead tambahan - benchmark 1 , benchmark 2 , dan benchmark 3
File datar dan fungsi PHP biasa berfungsi pada server HTTP tingkat produksi, berkinerja tinggi, dapat diskalakan, bersamaan, dan non-pemblokiran.
Baca tutorialnya.
komposer membutuhkan leocavalcante/siler
Hanya itu saja. Sebenarnya, Siler adalah perpustakaan, bukan kerangka kerja (mungkin kerangka mikro), keseluruhan aliran kontrol program ditentukan oleh Anda. Jadi, tidak ada konfigurasi tersembunyi atau struktur direktori yang telah ditentukan sebelumnya.
gunakan SilerFungsional sebagai λ; // Agar keren, jangan gunakan pengenal non-ASCII ;)gunakan SilerRoute;Routeget('/', λputs('Hello, World!'));
Tidak lebih, tidak kurang. Anda bahkan tidak perlu menyuruh Siler untuk run
atau semacamnya ( puts
berfungsi seperti echo
yang dievaluasi dengan malas).
gunakan SilerRoute;gunakan SilerHttpResponse;Routeget('/', fn() => Responsejson(['message' => 'Halo, Dunia!']));
Fungsi Responsejson
akan secara otomatis menambahkan Content-type: application/json
di header respons.
Siler memberikan dukungan kelas satu untuk Swoole. Anda dapat secara teratur menggunakan modul Route
, Request
dan Response
untuk server HTTP Swoole.
gunakan SilerHttpResponse;gunakan SilerRoute;gunakan SilerSwoole;$handler = function () {Routeget('/', fn() => Responsejson('Halo, Dunia!')); };$port = 8000;echo "Mendengarkan pada port $portn";Swoolehttp($handler, $port)->start();
Instal ketergantungan rekan:
komposer membutuhkan webonyx/graphql-php
ketik Kueri {halo: String}
gunakan SilerRoute;gunakan SilerGraphQL;$type_defs = file_get_contents(__DIR__ . '/schema.graphql');$resolvers = ['Query' => ['hello' => fn ($root, $args, $context, $info) => 'Halo, Dunia!'] ];$schema = GraphQLschema($type_defs, $resolver);Routepost('/graphql', fn() => GraphQLinit($schema));
Ketergantungan rekan lainnya:
komposer membutuhkan doktrin/anotasi
Kemudian:
/** * @SilerGraphQLAnnotationObjectType() */Kueri kelas akhir {/** * @SilerGraphQLAnnotationField() */fungsi statis publik hello($root, $args, $context, $info): string{return 'Halo, Dunia!'; } }
gunakan SilerGraphQL;gunakan SilerRoute;$schema = GraphQLannotated([Query::class]);Routepost('/graphql', fn() => GraphQLinit($schema));
Nama tipe objek akan ditebak dari nama kelas, sama untuk nama field, dan tipe kembaliannya (yaitu: skalar string
PHP ===
skalar String
GraphQL).
Dokumentasi
Contoh
lisensi MIT
Hak Cipta 2020 © LC