<?php
class アニマルガール
{
const とくいなんだねー = [
'わーい',
'すごーい'
];
protected $おぼえてること = [];
private final function __construct()
{}
protected static function サンドスター()
{
$class_path = get_called_class();
return new $class_path();
}
public static function __callStatic($method, $arguments)
{
return ($instance ?? $instance = static::サンドスター())->$method();
}
public function __call($method, $arguments)
{
$this->おぼえてること[] = $method !== 'とくい' ? $method : (new class($arguments[0]) {
const さいしょのおやくそく = '君は%sがとくいなフレンズなんだね!!';
const すごいおやくそく = '%sができるフレンズなんだー!!';
public $とくい = null;
public $ちょっとまえ = アニマルガール::とくいなんだねー[0];
public function __construct($とくい)
{
$this->とくい = $とくい;
}
public function __invoke()
{
return $this->とくい;
}
public function __toString()
{
$そうなんだー = sprintf($this->ちょっとまえ
=== アニマルガール
::とくいなんだねー
[1] ?
self::すごいおやくそく
: self::さいしょのおやくそく
, $this->とくい
); $this->ちょっとまえ = アニマルガール::とくいなんだねー[0];
return $そうなんだー;
}
});
return $this;
}
public function __invoke()
{
return $this->おぼえてること;
}
public function __toString()
{
$ちょっとまえ = null;
foreach ($this->おぼえてること as $じゅんばん => $おぼえてること) {
$this->おぼえてること[$じゅんばん]->ちょっとまえ = $ちょっとまえ;
} elseif (in_array($おぼえてること, アニマルガール
::とくいなんだねー
, true)) { $ちょっとまえ = $おぼえてること;
}
}
return implode(\PHP_EOL
, $this->おぼえてること
) . \PHP_EOL
; }
}
echo アニマルガール::わーい()->すごーい()->たのしー()->とくい('クソリプ');
echo アニマルガール::わーい()->とくい('クソリプ')->すごーい();
echo アニマルガール::すごーい()->とくい('クソリプ')->わーい()->たーのしー();
PD9waHAKCmNsYXNzIOOCouODi+ODnuODq+OCrOODvOODqwp7CgogICAgY29uc3Qg44Go44GP44GE44Gq44KT44Gg44Gt44O8ID0gWwogICAgICAgICfjgo/jg7zjgYQnLAogICAgICAgICfjgZnjgZTjg7zjgYQnCiAgICBdOwoKICAgIHByb3RlY3RlZCAk44GK44G844GI44Gm44KL44GT44GoID0gW107CgogICAgcHJpdmF0ZSBmaW5hbCBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7fQoKICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24g44K144Oz44OJ44K544K/44O8KCkKICAgIHsKICAgICAgICAkY2xhc3NfcGF0aCA9IGdldF9jYWxsZWRfY2xhc3MoKTsKICAgICAgICByZXR1cm4gbmV3ICRjbGFzc19wYXRoKCk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBfX2NhbGxTdGF0aWMoJG1ldGhvZCwgJGFyZ3VtZW50cykKICAgIHsKICAgICAgICByZXR1cm4gKCRpbnN0YW5jZSA/PyAkaW5zdGFuY2UgPSBzdGF0aWM6OuOCteODs+ODieOCueOCv+ODvCgpKS0+JG1ldGhvZCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NhbGwoJG1ldGhvZCwgJGFyZ3VtZW50cykKICAgIHsKICAgICAgICAkdGhpcy0+44GK44G844GI44Gm44KL44GT44GoW10gPSAkbWV0aG9kICE9PSAn44Go44GP44GEJyA/ICRtZXRob2QgOiAobmV3IGNsYXNzKCRhcmd1bWVudHNbMF0pIHsKCiAgICAgICAgICAgIGNvbnN0IOOBleOBhOOBl+OCh+OBruOBiuOChOOBj+OBneOBjyA9ICflkJvjga8lc+OBjOOBqOOBj+OBhOOBquODleODrOODs+OCuuOBquOCk+OBoOOBre+8ge+8gSc7CgogICAgICAgICAgICBjb25zdCDjgZnjgZTjgYTjgYrjgoTjgY/jgZ3jgY8gPSAnJXPjgYzjgafjgY3jgovjg5Xjg6zjg7PjgrrjgarjgpPjgaDjg7zvvIHvvIEnOwoKICAgICAgICAgICAgcHVibGljICTjgajjgY/jgYQgPSBudWxsOwoKICAgICAgICAgICAgcHVibGljICTjgaHjgofjgaPjgajjgb7jgYggPSDjgqLjg4vjg57jg6vjgqzjg7zjg6s6OuOBqOOBj+OBhOOBquOCk+OBoOOBreODvFswXTsKCiAgICAgICAgICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgk44Go44GP44GEKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkdGhpcy0+44Go44GP44GEID0gJOOBqOOBj+OBhDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVibGljIGZ1bmN0aW9uIF9faW52b2tlKCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT7jgajjgY/jgYQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJOOBneOBhuOBquOCk+OBoOODvCA9IHNwcmludGYoJHRoaXMtPuOBoeOCh+OBo+OBqOOBvuOBiCA9PT0g44Ki44OL44Oe44Or44Ks44O844OrOjrjgajjgY/jgYTjgarjgpPjgaDjga3jg7xbMV0gPyBzZWxmOjrjgZnjgZTjgYTjgYrjgoTjgY/jgZ3jgY8gOiBzZWxmOjrjgZXjgYTjgZfjgofjga7jgYrjgoTjgY/jgZ3jgY8sICR0aGlzLT7jgajjgY/jgYQpOwogICAgICAgICAgICAgICAgJHRoaXMtPuOBoeOCh+OBo+OBqOOBvuOBiCA9IOOCouODi+ODnuODq+OCrOODvOODqzo644Go44GP44GE44Gq44KT44Gg44Gt44O8WzBdOwogICAgICAgICAgICAgICAgcmV0dXJuICTjgZ3jgYbjgarjgpPjgaDjg7w7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2ludm9rZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT7jgYrjgbzjgYjjgabjgovjgZPjgag7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgICTjgaHjgofjgaPjgajjgb7jgYggPSBudWxsOwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT7jgYrjgbzjgYjjgabjgovjgZPjgaggYXMgJOOBmOOCheOCk+OBsOOCkyA9PiAk44GK44G844GI44Gm44KL44GT44GoKSB7CiAgICAgICAgICAgIGlmIChpc19vYmplY3QoJOOBiuOBvOOBiOOBpuOCi+OBk+OBqCkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT7jgYrjgbzjgYjjgabjgovjgZPjgahbJOOBmOOCheOCk+OBsOOCk10tPuOBoeOCh+OBo+OBqOOBvuOBiCA9ICTjgaHjgofjgaPjgajjgb7jgYg7CiAgICAgICAgICAgIH0gZWxzZWlmIChpbl9hcnJheSgk44GK44G844GI44Gm44KL44GT44GoLCDjgqLjg4vjg57jg6vjgqzjg7zjg6s6OuOBqOOBj+OBhOOBquOCk+OBoOOBreODvCwgdHJ1ZSkpIHsKICAgICAgICAgICAgICAgICTjgaHjgofjgaPjgajjgb7jgYggPSAk44GK44G844GI44Gm44KL44GT44GoOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBpbXBsb2RlKFxQSFBfRU9MLCAkdGhpcy0+44GK44G844GI44Gm44KL44GT44GoKSAuIFxQSFBfRU9MOwogICAgfQp9CgplY2hvIOOCouODi+ODnuODq+OCrOODvOODqzo644KP44O844GEKCktPuOBmeOBlOODvOOBhCgpLT7jgZ/jga7jgZfjg7woKS0+44Go44GP44GEKCfjgq/jgr3jg6rjg5cnKTsKCmVjaG8g44Ki44OL44Oe44Or44Ks44O844OrOjrjgo/jg7zjgYQoKS0+44Go44GP44GEKCfjgq/jgr3jg6rjg5cnKS0+44GZ44GU44O844GEKCk7CgplY2hvIOOCouODi+ODnuODq+OCrOODvOODqzo644GZ44GU44O844GEKCktPuOBqOOBj+OBhCgn44Kv44K944Oq44OXJyktPuOCj+ODvOOBhCgpLT7jgZ/jg7zjga7jgZfjg7woKTsKCg==