0

私はPHP ajaxチャットを開発しています。/ban などのコマンドを追加したいと思います。

しかし、どうすればそれができるかわかりません。

そもそも、コマンドは「/」記号で開始する必要があります。

送信されたメッセージが「/」記号で始まっているかどうかを最初に確認する必要がありますか? 次に、コマンド「ban」が存在するかどうかを確認しますが、文のどこにユーザー名が表示されるかをどのように知るのでしょうか?

どこから、どのように始めればいいのかわからないので、本当に混乱しています。 私のニーズに似たコマンド システムのオープン ソースはありますか?

4

2 に答える 2

2

コマンドの構文を自分で定義する必要があります。たとえば、禁止について。/ban <username>

  1. 最初に、メッセージがスラッシュで始まっているかどうかを確認します。もしそうなら、それは命令です。
  2. ここで最初のスペースを検索します。スラッシュの後とスペースの前はすべてコマンド名です。
  3. 最初のスペースの後のすべてをコマンドに渡します。この場合、ユーザー名。このコマンドは、独自にパラメーターを処理します。

次のようになります。

$message = '/ban TimWolla';
if (substr($message, 0, 1) === '/') {
    // $message is a command
    $firstSpace = strpos($message, ' ');
    $command = substr($message, 1, $firstSpace);
    $parameters = substr($message, $firstSpace + 1);

    if (!hasPermission($command)) error('Permission denied');

    switch ($command) {
        case 'ban':
            ban($parameters);
        break;
    }
} 

適切な OOP を使用する場合は、各コマンドをクラスにし、すべてのコマンドにインターフェイスを使用して適切なメソッドを要求します。例えば:

interface Command {
    public function setParameters($parameters);
    public function hasPermission();
    public function execute();
}
于 2013-06-20T14:48:24.800 に答える