<?php
abstract class Result
{
private final function __construct()
{
}
public static function success()
{
return new Success();
}
public static function failure()
{
return new Failure();
}
}
final class Success extends Result
{
public static function fakeIt() { return new self(); }
}
final class Failure extends Result
{
}
var_dump(Result::success());
var_dump(Result::failure());
Success::fakeIt();
object(Success)#1 (0) {
}
object(Failure)#1 (0) {
}
Fatal error: Uncaught Error: Call to private Result::__construct() from scope Success in /in/5aK01:22
Stack trace:
#0 /in/5aK01(34): Success::fakeIt()
#1 {main}
thrown in /in/5aK01 on line 22
Process exited with code 255.
object(Success)#1 (0) {
}
object(Failure)#1 (0) {
}
Fatal error: Uncaught Error: Call to private Result::__construct() from context 'Success' in /in/5aK01:22
Stack trace:
#0 /in/5aK01(34): Success::fakeIt()
#1 {main}
thrown in /in/5aK01 on line 22
Process exited with code 255.
object(Success)#1 (0) {
}
object(Failure)#1 (0) {
}
Fatal error: Call to private Result::__construct() from context 'Success' in /in/5aK01 on line 22
Process exited with code 255.