Penjelasan terperinci tentang corak arahan dalam PHP dan kaedah aplikasinya

王林
Lepaskan: 2023-06-08 17:14:02
asal
990 orang telah melayarinya

Corak arahan ialah corak reka bentuk yang merangkum permintaan ke dalam objek, membolehkan anda membuat parameter klien dengan permintaan, baris gilir atau log permintaan yang berbeza dan menyokong operasi yang boleh dibuat asal. Idea teras corak ini adalah untuk memisahkan tingkah laku yang diminta oleh klien daripada tingkah laku pelaksanaan. Mod arahan dalam PHP digunakan secara meluas dalam sistem yang perlu merekod log aplikasi, dan sistem yang perlu melaksanakan perintah sejarah secara dinamik.

Komponen teras corak arahan termasuk arahan, penerima dan pemanggil. Objek arahan membawa permintaan dan parameter operasi klien Penerima ialah objek yang benar-benar melaksanakan permintaan ini, dan pemanggil menghantar permintaan kepada penerima. Kelebihan ini ialah pemanggil tidak perlu mengetahui penerima mana permintaan akan dilakukan, kerja ini boleh dicapai dengan mudah melalui objek arahan.

Objek arahan biasanya perlu mengandungi bahagian berikut: kaedah

  1. execute, yang sebenarnya akan melaksanakan operasi arahan. Kaedah
  2. undo, apabila pemanggil perlu membatalkan arahan, kaedah ini akan memulihkan penerima kepada keadaan asal. Kaedah
  3. redo, apabila pemanggil perlu membuat semula arahan, kaedah ini akan memulihkan penerima kepada keadaan pelaksanaan terakhir arahan.

Penerima melaksanakan operasi tertentu, seperti memproses fail, melaksanakan operasi pangkalan data, dsb. Pemanggil bertanggungjawab untuk membuat permintaan kepada penerima, tetapi tidak berinteraksi secara langsung dengan penerima. Objek arahan bertindak sebagai jambatan antara pemanggil dan penerima. Ia memisahkan kandungan khusus arahan daripada pemanggil dan penerima, membolehkan arahan disimpan, bersiri, dihantar atau dilaksanakan berulang kali.

Di bawah ini kami akan menggunakan contoh khusus untuk memahami lebih lanjut mod arahan dalam PHP.

Andaikan kita perlu melaksanakan editor teks ringkas yang menyokong operasi buat asal dan buat semula. Pertama, kita perlu mentakrifkan Perintah kelas asas abstrak, yang akan mengisytiharkan tiga kaedah execute, undo dan redo.

abstract class Command {
    abstract public function execute();
    abstract public function undo();
    abstract public function redo();
}
Salin selepas log masuk

Kemudian, kita perlu melaksanakan arahan khusus, seperti membuka fail, menyimpan fail dan memadamkan teks.

class OpenFileCommand extends Command {
    public function __construct(FileReceiver $receiver) {
        $this->receiver = $receiver;
    }
    public function execute() {
        $this->receiver->openFile();
    }
    public function undo() {
        $this->receiver->closeFile();
    }
    public function redo() {
        $this->execute();
    }
}

class SaveFileCommand extends Command {
    public function __construct(FileReceiver $receiver) {
        $this->receiver = $receiver;
    }
    public function execute() {
        $this->receiver->saveFile();
    }
    public function undo() {
        // No need to implement
    }
    public function redo() {
        $this->execute();
    }
}

class DeleteTextCommand extends Command {
    public function __construct(TextReceiver $receiver) {
        $this->receiver = $receiver;
    }
    public function execute() {
        $this->receiver->deleteText();
    }
    public function undo() {
        $this->receiver->insertText();
    }
    public function redo() {
        $this->execute();
    }
}
Salin selepas log masuk

Penerima melaksanakan operasi tertentu, seperti membuka fail, menyimpan fail dan memadam teks.

class FileReceiver {
    public function openFile() {
        // Open file
    }
    public function closeFile() {
        // Close file
    }
    public function saveFile() {
        // Save file
    }
}

class TextReceiver {
    private $text = '';
    public function insertText($text) {
        $this->text .= $text;
    }
    public function deleteText() {
        $this->text = substr($this->text, 0, -1);
    }
    public function getText() {
        return $this->text;
    }
}
Salin selepas log masuk

Akhir sekali, kami perlu melaksanakan peranti untuk menghantar permintaan kepada penerima.

class Invoker {
    private $commands = [];
    private $current = 0;
    public function addCommand(Command $command) {
        array_splice($this->commands, $this->current);
        $this->commands[] = $command;
        $command->execute();
        $this->current++;
    }
    public function undo() {
        if ($this->current > 0) {
            $this->current--;
            $command = $this->commands[$this->current];
            $command->undo();
        }
    }
    public function redo() {
        if ($this->current < count($this->commands)) {
            $command = $this->commands[$this->current];
            $command->redo();
            $this->current++;
        }
    }
}
Salin selepas log masuk

Apabila menggunakan editor teks, kita boleh menggunakan Invoker untuk menambah dan membuat asal arahan, yang akan mengekalkan sejarah arahan untuk operasi seterusnya. Contohnya:

$invoker = new Invoker();

// Open file
$invoker->addCommand(new OpenFileCommand(new FileReceiver()));

// Type 'Hello'
$textReceiver = new TextReceiver();
$textReceiver->insertText('Hello');
$invoker->addCommand(new DeleteTextCommand($textReceiver));

// Save file
$invoker->addCommand(new SaveFileCommand(new FileReceiver()));

// Undo
$invoker->undo();

// Redo
$invoker->redo();
Salin selepas log masuk

Seperti yang ditunjukkan dalam kod di atas, kami mula-mula melaksanakan arahan untuk membuka fail, kemudian menambah arahan untuk memadam teks, melaksanakan arahan dan menyimpan arahan fail Akhirnya, kami menggunakan Invoker untuk membatalkan operasi dan membuat semula operasi.

Ringkasnya, corak arahan dalam PHP boleh membantu kami merangkum permintaan dan memisahkannya daripada penerima dan pemanggil, menjadikan aplikasi lebih modular dan mudah diperluaskan. Kami boleh menambah fungsi baharu pada aplikasi kami dengan mudah hanya dengan mencipta objek arahan yang berbeza. Sama ada editor teks atau aplikasi lain, corak arahan dalam PHP ialah corak reka bentuk yang sangat berguna.

Atas ialah kandungan terperinci Penjelasan terperinci tentang corak arahan dalam PHP dan kaedah aplikasinya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!