国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
ReactJとPHPを使用してゲーム開発を支援するリソースまたはライブラリは何ですか?
ReactJとPHPを使用してマルチプレイヤーゲームを構(gòu)築できますか?
ReactJとPHPを使用してどのタイプのゲームを構(gòu)築できますか?
ReactJとPHPを使用して開発されたゲームでデータを処理する方法は?
ReactJを使用して開発されたゲームでユーザー入力を処理する方法は?
ホームページ バックエンド開発 PHPチュートリアル ReactとPHPによるゲーム開発:それらはどの程度互換性がありますか?

ReactとPHPによるゲーム開発:それらはどの程度互換性がありますか?

Feb 09, 2025 am 11:42 AM

Game Development with React and PHP: How Compatible Are They?

コアポイント

  • ReactとPHPを使用して、Reactがフロントエンドユーザーインターフェイスに責(zé)任を負い、PHPはバックエンドとゲームロジックを管理します。
  • ゲーム開発のセットアッププロセスには、非同期PHPサーバーのセットアップ、非laravelプロジェクトでのLaravelミックスの使用、WebSocketを使用してバックエンドとフロントエンドを接続することが含まれます。
  • Aerysライブラリは、アプリケーションのHTTPおよびWebSocket部分で使用でき、高い並行性とWebSocketをサポートできます。
  • Laravel Mixは、非Laravelプロジェクトであっても、ReactJSファイルを構(gòu)築するために使用でき、ビルドチェーンを構(gòu)成および拡張する簡単な方法を提供します。
  • WebSocketsを使用してバックエンドとフロントエンドを接続して、サーバーとクライアント間のリアルタイム通信を可能にします。
私は、PHPと反応でゲームを構(gòu)築することを決めた瞬間からこれについて考え始めました。 「スターデューバレーに似たマルチプレイヤー経済ゲームを作りたいと思っていますが、プレイヤー主導(dǎo)の経済システムは、マルチプレイヤーゲームのダイナミクス、またはプレーヤーベースの経済をどのように考えて実裝するかです。システムは無知です。

Game Development with React and PHP: How Compatible Are They?

私はそれを使用することを正當化するのに十分な反応の知識を知っているかどうかさえ確信していません。つまり、私の最初のインターフェース - 私はサーバーとゲームの経済性に非常に焦點を合わせていましたが、Reactに最適です。しかし、私が物事の農(nóng)業(yè)/インタラクティブな側(cè)面を作り始めたときはどうでしょうか?私は、経済システムの周りに等尺性界面を構(gòu)築するというアイデアが好きです。

PHPで中世のゲームを構(gòu)築するプロセスを説明したDead_lugosiのスピーチを見ました。マーガレットは私にインスピレーションを與えました。そのスピーチは、私がJSゲーム開発に関する本を書いた理由の1つでした。私は自分の経験を書き留めることを決意しています。他の人も私の間違いから學(xué)ぶことができるかもしれません。


(このパートのコードは、github.com/assertchris-tutorials/sitepoint-making-games/tree/part-1にあります。 Chromeそれはテストされました

バックエンド設(shè)定

私は最初に、複數(shù)人の経済システムの構(gòu)築に関するガイダンスを検索しました。私は、人々が考慮すべきさまざまなことを説明する優(yōu)れたスタックオーバーフローポストを見つけました。私は間違った場所で始めたかもしれないことに気付く前に途中でした。 「最初:PHPサーバーが必要です。反応クライアントの束がありますので、高い並行性(そしておそらくWebSocket)を処理できるものが必要です。それは永続的である必要があります。オンラインではありません 非同期PHPサーバーのセットアップを開始し、高い並行性とサポートWebSocketを処理しました。 PHP Preprocessorで最近の作業(yè)を追加して、物事をより明確にし、最初のいくつかのエンドポイントを作成しました。

から

$host = new Aerys\Host();
$host->expose("*", 8080);

$host->use($router = Aerys\router());
$host->use($root = Aerys\root(.."/public"));

$web = process .."/routes/web.pre";
$web($router);

$api = process .."/routes/api.pre";
$api($router);

アプリケーションのHTTPおよびWebSocket部分にAerysを使用することにしました。このコードは、Aerysのドキュメントとは大きく異なって見えますが、それは私が必要なものをよく理解しているからです。

Aerysアプリケーションを?qū)g行する通常のプロセスは、次のようなコマンドを使用することです。

vendor/bin/aerys -d -c config.php
繰り返されるコードがたくさんあり、PHPを使用して事前に処理したいという事実を処理しません。ローダーファイルを作成しました。

loader.phpから

return Pre\processAndRequire(__DIR__ . "/config.pre");
その後、依存関係をインストールしました。これは

composer.jsonからです

"require": {
  "amphp/aerys": "dev-amp_v2",
  "amphp/parallel": "dev-master",
  "league/container": "^2.2",
  "league/plates": "^3.3",
  "pre/short-closures": "^0.4.0"
},
"require-dev": {
  "phpunit/phpunit": "^6.0"
},

を使用して、ブロッキングコードを非同期サーバーから移動したいのですが、安定したタグでインストールすることはできません。これが、amphp/parallelブランチを使用する理由です。 amphp/aerys dev-amp_v2ある種のテンプレートエンジンとサービスロケーターを含めることをお勧めします。私はPHPリーグの各バージョンを選びました。最後に、カスタム構(gòu)文を

に処理するために使用され、後で使用する予定の短い閉鎖にも使用されています...

pre/short-closuresその後、ルーティングファイルの作成を開始しました。 config.pre

から

routes/web.preおよび

use Aerys\Router;
use App\Action\HomeAction;

return (Router $router) => {
  $router->route(
    "GET", "/", new HomeAction
  );
};
から

routes/api.preそれは単純なルートですが、これにより

でコードをテストするのに役立ちます。私はこれらのルーティングファイルをクロージャーに戻すことにしたので、それらはそれらが獨自のルートを追加できるタイプされた
use Aerys\Router;
use App\Action\Api\HomeAction;

return (Router $router) => {
  $router->route(
    "GET", "/api", new HomeAction
  );
};
に渡すことができました。最後に、2つの(同様の)操作を作成しました。

config.pre $router

から

app/Actions/HomeAction.pre最後のタッチは、ショートカットスクリプトを追加して、Aerysサーバーの開発と生産バージョンを開始することです。

namespace App\Action;

use Aerys\Request;
use Aerys\Response;

class HomeAction
{
  public function __invoke(Request $request,
    Response $response)
  {
    $response->end("hello world");
  }
}

から

composer.jsonこの結(jié)果、新しいサーバーを起動して、次のコマンドを入力することでhttp://127.0.0.1:8080にアクセスできます。

"scripts": {
  "dev": "vendor/bin/aerys -d -c loader.php",
  "prod": "vendor/bin/aerys -c loader.php"
},
"config": {
  "process-timeout": 0
},

フロントエンド設(shè)定

composer dev

「さて、PHP側(cè)で比較的安定したものを作ったので、ReactJSファイルを構(gòu)築するにはどうすればよいですか?Laravel Mixを使用できますか?」 私は本當に新しいビルドチェーンを作成したくありません。また、Mixは非Laravelプロジェクトでうまく機能するように再構(gòu)築されています。構(gòu)成と拡張機能は比較的簡単ですが、デフォルトではVUEJS指向です。

最初にしなければならないことは、いくつかのnpm依存関係をインストールすることです。

から

MIXは、Webパックを使用してPREPROCESSおよびBUNDLE JSおよびCSSファイルをバンドルします。また、JSXファイルを構(gòu)築するには、Reactおよび関連するBabelライブラリをインストールする必要があります。最後に、ブートストラップファイルを追加して、デフォルトのスタイルを取得しました。

package.jsonミックスはカスタム構(gòu)成ファイルを自動的にロードするため、以下を追加しました。

"devDependencies": {
  "babel-preset-react": "^6.23.0",
  "bootstrap-sass": "^3.3.7",
  "jquery": "^3.1.1",
  "laravel-mix": "^0.7.5",
  "react": "^15.4.2",
  "react-dom": "^15.4.2",
  "webpack": "^2.2.1"
},
から

JSXファイルを処理する方法をミックスする必要があるため、通常は

に配置されているファイルと同じ構(gòu)成を追加しました。アプリケーションのさまざまな部分に単一のJSとCSSのエントリポイントを取得する予定です。 webpack.mix.js

注:MIXの將來のバージョンには、ReactJSアセットの構(gòu)築を組み込んだサポートがあります。その時點で、mix.webpackConfigコードを削除できます。

もう一度、私は多くのタイピング作業(yè)を保存するためにいくつかのショートカットスクリプトを作成しました。 package.json

から
$host = new Aerys\Host();
$host->expose("*", 8080);

$host->use($router = Aerys\router());
$host->use($root = Aerys\root(.."/public"));

$web = process .."/routes/web.pre";
$web($router);

$api = process .."/routes/api.pre";
$api($router);

3つのスクリプトはすべて、WebPack変數(shù)コマンドを使用していますが、それ以外の操作が異なります。 JSファイルとCSSファイルのデバッグバージョンをビルドします。 devスイッチはWebpackモニターを起動します(バンドルを部分的に再構(gòu)築できるように)。 -wスイッチは、合理化された生産バージョンのバンドルを有効にします。 -p

バンドルバージョンコントロールを使用しているため、ハッシュ値を知らずに

のようなファイルを參照する方法が必要です。 Mixがマニフェストファイルを作成するのが好きだと気づいたので、クエリするためにヘルパー機能を作成しました。 /js/app.60795d5b3951178abba1.jshelpers.preから

vendor/bin/aerys -d -c config.php
aerysは、

の形で表示されるときに約束を処理する方法を知っているので、AMPの約束の実裝を使用しました。ファイルを読み取り、デコードした後、一致するファイルパスを見つけることができます。調(diào)整しました$val = yield $promise。 HomeActionapp/Actions/HomeAction.preから

return Pre\processAndRequire(__DIR__ . "/config.pre");
私は、約束を返す関數(shù)を作成し続け、コードを非同期に保つためにこの方法でそれらを使用できることに気付きました。これは、

assets/js/component.jsxの私のJSコードです

"require": {
  "amphp/aerys": "dev-amp_v2",
  "amphp/parallel": "dev-master",
  "league/container": "^2.2",
  "league/plates": "^3.3",
  "pre/short-closures": "^0.4.0"
},
"require-dev": {
  "phpunit/phpunit": "^6.0"
},
…そして

assets/js/app.jsxから

use Aerys\Router;
use App\Action\HomeAction;

return (Router $router) => {
  $router->route(
    "GET", "/", new HomeAction
  );
};
結(jié)局のところ、MixがJSXファイルをコンパイルするかどうか、そしてAsync

関數(shù)を使用して再度見つけることができるかどうかを確認したいだけです。うまくいきました! mix

注:特に同じファイルをロードしている場合は、毎回関數(shù)を使用することは高価です。代わりに、サーバーブートフェーズ中にすべてのテンプレートをロードし、必要に応じて操作內(nèi)部から參照できます。開始する構(gòu)成ファイルは、Aerys(mixで與えられたものなど)を返すことができるため、サーバーが開始される前にすべてのテンプレートを解析できます。 Amp\all

websocketsを使用して接続

私はそれをほとんどセットアップしました。最後にすべきことは、WebSocketsを介してバックエンドとフロントエンドを接続することです。新しいクラスを使用して、これが比較的簡単であることがわかりました。

app/Socket/GameSocket.preから

use Aerys\Router;
use App\Action\Api\HomeAction;

return (Router $router) => {
  $router->route(
    "GET", "/api", new HomeAction
  );
};
…そして、Webルーティングのマイナーな変更(

から):routes/web.pre

namespace App\Action;

use Aerys\Request;
use Aerys\Response;

class HomeAction
{
  public function __invoke(Request $request,
    Response $response)
  {
    $response->end("hello world");
  }
}
JSを変更してこのWebSocketに接続し、接続されたすべての人にメッセージを送信できます。

assets/js/component.jsxから

"scripts": {
  "dev": "vendor/bin/aerys -d -c loader.php",
  "prod": "vendor/bin/aerys -c loader.php"
},
"config": {
  "process-timeout": 0
},
新しいオブジェクトを作成すると、WebSocketサーバーに接続し、新しいメッセージのイベントリスナーを追加します。いくつかのデバッグコードを追加しました - それが正しく接続し、新しいメッセージを送信することを確認します。 Component

後でPHPとWebSocketsの詳細について説明します。心配しないでください。

概要このセクションでは、単純な非同期PHP Webサーバーのセットアップ方法、Laravel Non-LaravelプロジェクトでLaravel Mixを使用する方法、さらにはWebSocketを使用してバックエンドとフロントエンドを接続する方法について説明しました。

すごい!多くのコンテンツをカバーしており、ゲームコードのラインをまだ作成していません。 2番目の部分に參加すると、ゲームロジックとReactインターフェイスの構(gòu)築を開始します。

(この記事はNiklas Kellerによってピアレビューされました。SitePointのすべてのピアレビュアーにSitePointのコンテンツを最高の狀態(tài)にしてくれてありがとう?。?ReactJSとPHP を使用したゲーム開発の

FAQ ゲーム開発におけるReactJとPHPの互換性はどうですか?

ReactJSとPHPは、ゲーム開発において非常に互換性があります。 ReactJSは、特にシングルページアプリケーションにユーザーインターフェイスを構(gòu)築するのに最適なJavaScriptライブラリです。高速で応答性の高いWebデザインが可能になります。一方、PHPは、バックエンド開発に非常に適したサーバー側(cè)のスクリプト言語です。データベース、ユーザー認証、サーバー側(cè)のロジックを処理できます。一緒に使用すると、ReactJはフロントエンドを処理し、動的でインタラクティブなユーザーインターフェイスを作成し、PHPはバックエンドを管理します。

ReactJSゲームのゲームロジックにPHPを使用できますか?

はい、ReactJSゲームのゲームロジックにPHPを使用できます。 ReactJSはユーザーインターフェイスを処理しますが、PHPはサーバー側(cè)のゲームロジックを管理できます。これには、データの処理、ユーザーセッションの管理、ゲームルールの制御が含まれます。この懸念の分離は、より整然とした効率的な開発プロセスを可能にします。

ゲーム開発にReactJを使用することの利點は何ですか?

Reactjsは、ゲーム開発に多くの利點を提供します。その仮想Domは、効率的な更新とレンダリングを可能にし、ゲームをよりスムーズに実行します。また、再利用可能なコンポーネントをサポートしており、開発時間を大幅に高速化できます。さらに、ReactJSには、問題に対する解決策を見つけたり、新しいテクノロジーを?qū)Wんだりすることを容易にするための膨大なコミュニティと豊富なリソースがあります。

ゲーム開発にPHPを使用することの利點は何ですか?

PHPには、ゲーム開発に多くの利點があります。これはサーバー側(cè)の言語です。つまり、データ管理、ユーザー認証、サーバー側(cè)のゲームロジックを処理できます。また、PHPは學(xué)習(xí)しやすく、単純な構(gòu)文を持ち、巨大な開発者コミュニティを備えています。また、非常にスケーラブルであり、多數(shù)のユーザーを処理する必要があるゲームに適しています。

ReactJとPHPでゲームの開発を開始する方法は?

ReactJとPHPでゲームの開発を開始するには、最初に両方の言語の基本を?qū)Wぶ必要があります。多くのオンラインリソースとチュートリアルが利用可能です。これらの言語に精通したら、簡単なゲームを構(gòu)築することから始めることができます。これは、基本的なテキストゲームまたはシンプルなパズルゲームです。より多くの経験を積むにつれて、より複雑なゲームの構(gòu)築を開始できます。

ReactJとPHPを使用してゲーム開発を支援するリソースまたはライブラリは何ですか?

はい、ReactJとPHPを使用してゲーム開発に役立ついくつかのリソースとライブラリがあります。 ReactJSの場合、ReactゲームキットやReactゲームエンジンなどのライブラリは非常に便利です。 PHPの場合、PHP-SDLやWyvernなどのライブラリが便利であることがあります。さらに、オンラインで多くのチュートリアル、ガイド、フォーラムがあり、詳細を?qū)Wび、ヘルプを得ることができます。

ReactJとPHPを使用してマルチプレイヤーゲームを構(gòu)築できますか?

はい、ReactJとPHPを使用してマルチプレイヤーゲームを構(gòu)築できます。 ReactJSはユーザーインターフェイスを処理できますが、PHPは、プレーヤーセッションの管理や複數(shù)のクライアントでゲーム狀態(tài)を同期するなど、サーバー側(cè)のロジックを管理できます。

ReactJとPHPを使用してどのタイプのゲームを構(gòu)築できますか?

ReactJSとPHPを使用すると、さまざまなゲームを構(gòu)築できます。これには、シンプルなテキストゲーム、パズルゲーム、プラットフォームゲーム、ロールプレイングゲーム、さらにはマルチプレイヤーオンラインゲームが含まれます??赡苄预戏浅¥舜螭?、限界は実際にはあなたの想像力とスキルレベルです。

ReactJとPHPを使用して開発されたゲームでデータを処理する方法は?

ReactJとPHPを使用して開発されたゲームでは、サーバー側(cè)のPHPを使用してデータを処理できます。これには、プレーヤーのデータ、ゲームのステータス、スコアなどが含まれます。このデータはデータベースに保存でき、PHPを使用してこのデータベースと対話して、必要に応じてデータを取得および更新できます。

ReactJを使用して開発されたゲームでユーザー入力を処理する方法は?

ReactJSを使用して開発されたゲームでは、ユーザー入力をReactのイベント処理システムを使用して処理できます。これには、マウスクリック、キーボードキー、タッチイベントが含まれます。 Reactのイベント処理システムは強力で柔軟であるため、ゲームがユーザー入力にどのように応答するかを簡単に制御できます。

以上がReactとPHPによるゲーム開発:それらはどの程度互換性がありますか?の詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當する法的責(zé)任を負いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPに認証と承認を?qū)g裝するにはどうすればよいですか? PHPに認証と承認を?qū)g裝するにはどうすればよいですか? Jun 20, 2025 am 01:03 AM

tosecurelyhandLeauthenticationAndauthorizationInizationInization、followTheSteps:1.LwayShashPasswordswithPassword_hash()andverifyusingpassword_verify()、usepreparedStatementStatementStatementStatementStatementStain、andstoreUserdatain $ _SessionAfterlogin.2.implementRementRementRementRementRementRementRementRole

PHPでファイルアップロードを安全に処理するにはどうすればよいですか? PHPでファイルアップロードを安全に処理するにはどうすればよいですか? Jun 19, 2025 am 01:05 AM

PHPでファイルアップロードを安全に処理するために、コアはファイルタイプを確認し、ファイルの名前を変更し、権限を制限することです。 1。Finfo_File()を使用して実際のMIMEタイプを確認し、Image/JPEGなどの特定のタイプのみが許可されます。 2。uniqid()を使用してランダムファイル名を生成し、非webルートディレクトリに保存します。 3. PHP.iniおよびHTMLフォームを介してファイルサイズを制限し、ディレクトリ権限を0755に設(shè)定します。 4. Clamavを使用してマルウェアをスキャンしてセキュリティを強化します。これらの手順は、セキュリティの脆弱性を効果的に防止し、ファイルのアップロードプロセスが安全で信頼性が高いことを確認します。

PHPの==(ゆるい比較)と===(厳密な比較)の違いは何ですか? PHPの==(ゆるい比較)と===(厳密な比較)の違いは何ですか? Jun 19, 2025 am 01:07 AM

PHPでは、==と==の主な違いは、タイプチェックの厳格さです。 ==タイプ変換は比較の前に実行されます。たとえば、5 == "5"はtrueを返します。===リクエストは、trueが返される前に値とタイプが同じであることを要求します。たとえば、5 === "5"はfalseを返します。使用シナリオでは、===はより安全で、最初に使用する必要があります。==は、タイプ変換が必要な場合にのみ使用されます。

PHP(、 - 、 *、 /、%)で算術(shù)操作を?qū)g行するにはどうすればよいですか? PHP(、 - 、 *、 /、%)で算術(shù)操作を?qū)g行するにはどうすればよいですか? Jun 19, 2025 pm 05:13 PM

PHPで基本的な數(shù)學(xué)操作を使用する方法は次のとおりです。1。追加標識は、整數(shù)と浮動小數(shù)點數(shù)をサポートし、変數(shù)にも使用できます。文字列番號は自動的に変換されますが、依存関係には推奨されません。 2。減算標識の使用 - 標識、変數(shù)は同じであり、タイプ変換も適用されます。 3.乗算サインは、數(shù)字や類似の文字列に適した標識を使用します。 4.分割はゼロで割らないようにする必要がある分割 /標識を使用し、結(jié)果は浮動小數(shù)點數(shù)である可能性があることに注意してください。 5.モジュラス標識を採取することは、奇妙な數(shù)と偶數(shù)を判斷するために使用でき、負の數(shù)を処理する場合、殘りの兆候は配當と一致しています。これらの演算子を正しく使用するための鍵は、データ型が明確であり、境界の狀況がうまく処理されるようにすることです。

PHPのNOSQLデータベース(Mongodb、Redisなど)とどのように対話できますか? PHPのNOSQLデータベース(Mongodb、Redisなど)とどのように対話できますか? Jun 19, 2025 am 01:07 AM

はい、PHPは、特定の拡張機能またはライブラリを使用して、MongoDBやRedisなどのNOSQLデータベースと対話できます。まず、MongoDBPHPドライバー(PECLまたはComposerを介してインストール)を使用して、クライアントインスタンスを作成し、データベースとコレクションを操作し、挿入、クエリ、集約、その他の操作をサポートします。第二に、PredisライブラリまたはPhpredis拡張機能を使用してRedisに接続し、キー価値設(shè)定と取得を?qū)g行し、高性能シナリオにPhpredisを推奨しますが、Predisは迅速な展開に便利です。どちらも生産環(huán)境に適しており、十分に文書化されています。

最新のPHP開発とベストプラクティスを最新の狀態(tài)に保つにはどうすればよいですか? 最新のPHP開発とベストプラクティスを最新の狀態(tài)に保つにはどうすればよいですか? Jun 23, 2025 am 12:56 AM

postaycurrentwithpdevellyments andbest practices、follow keynewsourceslikephp.netandphpweekly、egagewithcommunitiessonforums andconferences、keeptooling and gradivallyadoptnewfeatures、andreadorcontributeTopensourceprijeprijeprijeptrijeprijeprests.

PHPとは何ですか、そしてなぜそれがWeb開発に使用されるのですか? PHPとは何ですか、そしてなぜそれがWeb開発に使用されるのですか? Jun 23, 2025 am 12:55 AM

PhpBecamepopularforwebdevelopmentduetoitseaseaseaseaseasease、SeamlessintegrationWithhtml、widespreadhostingsupport、andalargeecosystemincludingframeworkelavelandcmsplatformslikewordspresspressinsinsionsisionsisionsisionsisionsionsionsisionsionsionsisionsisions

PHPタイムゾーンを設(shè)定する方法は? PHPタイムゾーンを設(shè)定する方法は? Jun 25, 2025 am 01:00 AM

tosettherighttimezoneInphp、usedate_default_timezone_set()functionthestthestofyourscriptwithavalididentifiersiersuchas'america/new_york'.1.usedate_default_timezone_set()beforeanydate/timefunctions.2.2.Altertentally、confuturethephp.inifilebyset.

See all articles