29
loading...
This website collects cookies to deliver better user experience
class Car
{
function go()
{
echo "aha, engine goes brrrrr";
}
}
class GarageDoor
{
function open()
{
echo "aha, engine goes brrrrr";
}
}
class Vehicle
{
function startEngine()
{
echo "aha, engine goes brrrrr";
}
}
class Car extends Vehicle
{
function go()
{
parent::startEngine();
}
}
class GarageDoor extends Vehicle
{
function open()
{
parent::startEngine();
}
}
if
statements), eventually becoming a God Object.trait HasEngine
{
function startEngine()
{
echo "aha, engine goes brrrrr";
}
}
class Car
{
use HasEngine;
function go()
{
$this->startEngine();
}
}
class GarageDoor
{
use HasEngine;
function open()
{
$this->startEngine();
}
}
class EngineService
{
static function startEngine()
{
echo "aha, engine goes brrrrr";
}
}
class Car
{
function go()
{
EngineService::startEngine();
}
}
class GarageDoor
{
function open()
{
EngineService::startEngine();
}
}
class Engine
{
function start()
{
echo "aha, engine goes brrrrr";
}
}
class Container
{
function makeEngine(): Engine
{
return new Engine;
}
}
class Car
{
function __construct(
private Container $container
) {}
function go()
{
$this->container->makeEngine()->start();
}
}
class GarageDoor
{
function __construct(
private Container $container
) {}
function open()
{
$this->container->makeEngine()->start();
}
}
class Engine
{
function start()
{
echo "aha, engine goes brrrrr";
}
}
class Car
{
public function __construct(
private Engine $engine
) {}
public function go()
{
$this->engine->start();
}
}
class GarageDoor
{
public function __construct(
private Engine $engine
) {}
public function open()
{
$this->engine->start();
}
}
interface EngineInterface
{
function start();
}
class Engine implements EngineInterface
{
function start()
{
echo "aha, engine goes brrrrr";
}
}
class Car
{
function __construct(
private EngineInterface $engine
) {}
function go()
{
$this->engine->start();
}
}
class GarageDoor
{
function __construct(
private EngineInterface $engine
) {}
function open()
{
$this->engine->start();
}
}
29