Last active
July 22, 2017 15:20
-
-
Save Ocramius/26a78f655e486718f858 to your computer and use it in GitHub Desktop.
PissOff: a valid, polite and useful alternative to the `void` return type in PHP
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
vendor | |
composer.lock |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"autoload": { | |
"classmap": [ | |
"PissOff.php" | |
] | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
declare(strict_types=1); | |
namespace MyStuff; | |
require_once __DIR__ . '/vendor/autoload.php'; | |
function fortunately_you_can_tell_your_users_to_piss_off() : PissOff { | |
return PissOff::wanker(); | |
}; | |
var_dump(fortunately_you_can_tell_your_users_to_piss_off()->i_told_you_to_piss_off); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
declare(strict_types=1); | |
namespace MyStuff; | |
final class PissOff | |
{ | |
/** | |
* @var \LogicException | |
*/ | |
private $pissOff; | |
public static function __callStatic(string $method, array $args) | |
{ | |
throw new \LogicException('You are not supposed to interact with this object: piss off.'); | |
} | |
private function __construct() | |
{ | |
$this->pissOff = new \LogicException('You are not supposed to interact with this object: piss off.'); | |
} | |
public static function wanker() : self | |
{ | |
return new self(); | |
} | |
public function __call(string $method, array $args) | |
{ | |
throw $this->pissOff; | |
} | |
public function __get(string $name) | |
{ | |
throw $this->pissOff; | |
} | |
public function __set(string $name, $value) | |
{ | |
throw $this->pissOff; | |
} | |
public function __isset(string $name) | |
{ | |
throw $this->pissOff; | |
} | |
public function __unset(string $name) | |
{ | |
throw $this->pissOff; | |
} | |
private function __wakeup() | |
{ | |
} | |
private function __sleep() | |
{ | |
} | |
private function __clone() | |
{ | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
declare(strict_types=1); | |
namespace MyStuff; | |
require_once __DIR__ . '/vendor/autoload.php'; | |
function doesnt_it_suck_that_php_has_no_void_return_type() { | |
}; | |
var_dump(doesnt_it_suck_that_php_has_no_void_return_type()->yeah_it_sucks); |
This just made my day!
lol, oh you guys
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
You have code duplication on lines 16 and 21. I honestly expected better.