<?php
interface GoAlgorithm
{
public function go();
}
class GoByDrivingAlgorithm implements GoAlgorithm
{
public function go()
{
echo("Now I'm driving.");
}
}
class GoByFlying implements GoAlgorithm
{
public function go()
{
echo("Now I'm flying.");
}
}
class GoByFlyingFast implements GoAlgorithm
{
public function go()
{
echo("Now I'm flying fast");
}
}
abstract class Vehicle
{
private $goAlgorithm;
public static function setGoAlgorithm($goAlgorithm = TRUE)
{
return $goAlgorithm = 'GoAlgorithm';
}
}
class StreetRacer extends Vehicle
{
public function StreetRacer($goAlgorithm=TRUE)
{
Vehicle::setGoAlgorithm($str=new GoByDrivingAlgorithm(), $str->go());
}
}
class FormulaOne extends Vehicle
{
public function FormulaOne()
{
Vehicle::setGoAlgorithm($for=new GoByDrivingAlgorithm(), $for->go());
}
}
class Helicopter extends Vehicle
{
public function Helicopter()
{
Vehicle::setGoAlgorithm($hel=new GoByFlying(), $hel->go());
}
}
class Jet extends Vehicle
{
public function Jet()
{
Vehicle::setGoAlgorithm($jet=new GoByFlyingFast(), $jet->go());
}
}
class StartTheRace
{
public static function main()
{
$streetRacer = new StreetRacer();
$formulaone = new FormulaOne();
$helicopter = new Helicopter();
$jets = new Jet();
}
}
StartTheRace::main();
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; StreetRacer has a deprecated constructor in /in/TncRG on line 44
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; FormulaOne has a deprecated constructor in /in/TncRG on line 52
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Helicopter has a deprecated constructor in /in/TncRG on line 60
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Jet has a deprecated constructor in /in/TncRG on line 68
Now I'm driving.Now I'm driving.Now I'm flying.Now I'm flying fast