Search⌘ K
AI Features

Solution Review: Type Hinting

Learn how to implement type hinting and polymorphism in PHP by defining interfaces and classes. Understand how to use type hinted methods to enhance code clarity and maintainability while managing user properties like username and gender.

We'll cover the following...

Solution

PHP
<?php
interface User {
public function setUsername($username);
public function getUsername();
public function setGender($gender);
public function getGender();
}
class Commentator implements User {
private $username = '';
private $gender = 'Not available';
public function setUsername($name) {
$this -> username = (is_string($name))? $name : 'N/A';
}
public function getUsername() {
return $this -> username;
}
public function setGender($gender) {
$gendersArray = array('female', 'male', 'other');
if(in_array($gender, $gendersArray)) {
$this -> gender = $gender;
}
}
public function getGender() {
return $this -> gender;
}
}
function addMrOrMrsToUsername(User $user) {
$userName = $user -> getUsername();
$userGender = $user -> getGender();
if($userGender === 'female') {
return "Mrs. " . $userName;
}
else if($userGender === 'male') {
return "Mr. " . $userName;
}
return $userName;
}
function test()
{
$user1 = new Commentator();
$user1 -> setUsername("Jane");
$user1 -> setGender("female");
$user2 = new Commentator();
$user2 -> setUsername("Bob");
$user2 -> setGender("male");
return addMrOrMrsToUsername($user1) . " and " .addMrOrMrsToUsername($user2);
}
echo test();
?>

Explanation

  • Lines 2–7: We write a User interface with the getter and setter methods for $username and $gender property.

  • Lines 9–29: We write the Commentator class with two private ...