PHP新手开发教程-OOP基础全掌握

太好了!我们来编写 borrowBook() 方法。

在这个方法内部,我们需要一个 if 语句来检查我们的私有变量。如果书有空,我们就把这个变量的值设为 false。如果没有空,我们就告诉用户这本书已经被借走了。

class Book {
    private $title;
    private $isAvailable = true;

    public function __construct($title) {
        $this->title = $title;
    }

    public function borrowBook() {
        if ($this->isAvailable) {
            $this->isAvailable = false;
            return "You have borrowed '" . $this->title . "'. 📚";
        } else {
            return "Sorry, '" . $this->title . "' is already checked out. ❌";
        }
    }
}

// Let's test it:
$myBook = new Book("The Great Gatsby");
echo $myBook->borrowBook(); // First time: Success!
echo $myBook->borrowBook(); // Second time: Sorry, already checked out.

通过使用封装(将 $isAvailable 设为私有),我们确保只有通过 borrowBook() 方法才能更改其状态,这符合我们库的规则。

接下来:接口和特性 🛠️

现在您已经掌握了这四大支柱,让我们来看看如何处理复杂的代码重用。

  1. 接口(“契约”)

接口就像一份法律合同。它告诉类:“我不在乎你如何实现,但你必须拥有这些特定的方法。”

例如,书籍和 DVD 都是“可借阅的”,但借阅方式不同(一个使用条形码,另一个可能需要数字密钥)。

interface Borrowable {
    public function checkOut();
    public function checkIn();
}

class DVD implements Borrowable {
    public function checkOut() {
        return "DVD ejected and registered.";
    }
    public function checkIn() {
        return "DVD returned to case.";
    }
}
  1. 特性(“复制粘贴”工具)

PHP 不允许一个类继承多个父类(即“双重继承”)。特性解决了这个问题。它们是一段段代码,你可以将其“复制粘贴”到任何类中。

想象一下,一个日志特性可以记录事件发生的时间。你可能希望你的 User 类和 Book 类都能记录消息。

trait Logger {
    public function log($message) {
        echo "[LOG]: " . $message;
    }
}

class User {
    use Logger; // This class now has the log() method!
}

基于此,如果您要构建一个“数字图书馆”系统,您会使用接口还是特性来确保电子书和有声读物都具有强制性的 playSample() 方法?

×
PHP新手开发教程-OOP基础全掌握

PHP新手开发教程-OOP基础全掌握

PHP 中的面向对象编程 (OOP) 是...

查看更多

Modulo马杜罗操作符讲解和余数的周期性

To understand w …