A few days ago, we launched a new PHP challenge.
We asked both our colleagues and Facebook community to redefine sad function in order to solve this problem and make the code work:
They found some cool and clever solutions in order to execute beAwesome() function:
Solution nr.1:
function sad() { die(“Are you happy now ?”); }
Solution nr.2
Class s { Public static c=1; Public function stop() {} } Function sad (){ if (s::c ==1) { s::c = 2; return true; } Else return new s() }
Solution nr.3
function sad() { return false; }
Solution nr.4
<?php Class TestClass { public static $c = 0; public static function switchC() { self::$c = abs(self::$c - 1); } public function stop() { echo 'Stop! '; return false; } } function sad() { TestClass::switchC(); if (TestClass::$c == 1) { return true; } return new TestClass(); } function beAwesome() { echo 'Be awsome! :)'; } if (sad() === true) { sad()->stop(); beAwesome(); } else { echo 'Ooops!'; }
Solution nr.5
<?php class human { public function stop() { print("http://youtu.be/DgvePeDIt3Y"); } } function sad() { $return = isset($GLOBALS["sad_called"]) && $GLOBALS["sad_called"] === true ? new human() : true; $GLOBALS["sad_called"] = true; return $return; } function beAwesome() { print(" Who's your daddy?\n"); } if (sad()===true) { sad()->stop(); beAwesome(); }
Solution nr.6
<?php /** * Class Sad * * */ class Sad { /** * @var boolean */ protected $isSad = true; /** * Stop the sadness */ public function stop() { $this->isSad = false; } /** * Check if sad * * @return boolean */ public function isSad() { return $this->isSad; } } /** * Weird function that returns true when an object was created... * * @return boolean|Sad */ function sad() { static $sad; if ($sad instanceof Sad) { return $sad; } $sad = new Sad(); return true; } /** * Method inspired by http://make-everything-ok.com/ */ function beAwesome() { echo PHP_EOL . PHP_EOL . (sad()->isSad() ? 'awesomeness could not be started... :(' : 'awesomeness started...' ). PHP_EOL; } // actual (given) code if (sad() === true) { sad()->stop(); beAwesome(); }
Do you have a better solution to solve this problem? Share it with us! 🙂