<?php
class Lock
{
function unlock()
{
$this->isLocked = false;
echo 'You unlocked the Lock'."\n";
}
function lock()
{
$this->isLocked = true;
echo 'You locked the Lock'."\n";
}
function isLocked()
{
return $this->isLocked;
}
}
class Door
{
function Door(Lock $lock)
{
$this->lock = $lock;
$this->connectsTo = 'bedroom'."\n";
}
function open()
{
if($this->lock->isLocked()) {
echo 'Cannot open Door. It is locked.'."\n";
} else {
echo 'You opened the Door connecting to: ', $this->connectsTo."\n";
}
}
}
$lock = new Lock;
$door = new Door($lock);
$door->open();
$lock->unlock();
$door->open();
Warning: Undefined property: Door::$lock in /in/nm5dC on line 30
Fatal error: Uncaught Error: Call to a member function isLocked() on null in /in/nm5dC:30
Stack trace:
#0 /in/nm5dC(41): Door->open()
#1 {main}
thrown in /in/nm5dC on line 30
Process exited with code 255.
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Lock has a deprecated constructor in /in/nm5dC on line 3
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Door has a deprecated constructor in /in/nm5dC on line 21
You locked the Lock
Cannot open Door. It is locked.
You unlocked the Lock
You opened the Door connecting to: bedroom