How can one implement default values, allowed values, or custom get/set functions for attributes in PHP classes?

To implement default values, allowed values, or custom get/set functions for attributes in PHP classes, you can use constructor parameters to set default values, validate input in setter methods, and create getter methods to retrieve the attribute values.

class User {
    private $username;
    
    public function __construct($username = 'Guest') {
        $this->username = $username;
    }
    
    public function setUsername($username) {
        if(strlen($username) >= 3) {
            $this->username = $username;
        } else {
            echo "Username must be at least 3 characters long.";
        }
    }
    
    public function getUsername() {
        return $this->username;
    }
}

$user1 = new User();
echo $user1->getUsername(); // Output: Guest

$user2 = new User("JohnDoe");
echo $user2->getUsername(); // Output: JohnDoe

$user2->setUsername("JD"); // Output: Username must be at least 3 characters long.