An interface names methods a class promises to provide.

Interface Contract

interface_contract.php
<?php
interface Formatter
{
    public function format(string $name): string;
}

class PrefixFormatter implements Formatter
{
    public function format(string $name): string
    {
        return "hello " . $name;
    }
}

$name = ;
$formatter = new PrefixFormatter();
$message = $formatter->format($name);

echo "name=" . $name . "\n";
echo "message=" . $message . "\n";
<?php
interface Formatter
{
    public function format(string $name): string;
}

class PrefixFormatter implements Formatter
{
    public function format(string $name): string
    {
        return "hello " . $name;
    }
}

$name = ;
$formatter = new PrefixFormatter();
$message = $formatter->format($name);

echo "name=" . $name . "\n";
echo "message=" . $message . "\n";
<?php
interface Formatter
{
    public function format(string $name): string;
}

class PrefixFormatter implements Formatter
{
    public function format(string $name): string
    {
        return "hello " . $name;
    }
}

$name = ;
$formatter = new PrefixFormatter();
$message = $formatter->format($name);

echo "name=" . $name . "\n";
echo "message=" . $message . "\n";
contract Code can depend on the interface name instead of a specific class name.