mode = $mode; $this->checkMessage = $checkMessage; switch ($mode) { case 'always': case 'never': $this->buffer = null; break; case 'error': $this->buffer = []; break; default: throw new \InvalidArgumentException("Unrecognized passthru mode: $mode"); } } private function onBufferMessage($method, $args) { $this->buffer[] = [$method, $args]; if ($this->mode === 'flushing') { return; } $isError = false; $messages = (array)$args[0]; foreach ($messages as $message) { if (call_user_func($this->checkMessage, $message, $method)) { $isError = true; break; } } if ($isError) { $this->mode = 'flushing'; for ($i = 0; $i < count($this->buffer); $i++) { call_user_func_array([$this->delegate, $this->buffer[$i][0]], $this->buffer[$i][1]); } $this->mode = 'always'; $this->buffer = null; } } public function writeRaw($messages, $newline = true, $verbosity = self::NORMAL) { switch ($this->mode) { case 'always': return $this->delegate->writeRaw( $messages, $newline, $verbosity ); case 'error': case 'flushing': return $this->onBufferMessage( __FUNCTION__, [$messages, $newline, $verbosity] ); } } public function writeErrorRaw($messages, $newline = true, $verbosity = self::NORMAL) { switch ($this->mode) { case 'always': return $this->delegate->writeErrorRaw( $messages, $newline, $verbosity ); case 'error': case 'flushing': return $this->onBufferMessage( __FUNCTION__, [$messages, $newline, $verbosity] ); } } public function write($messages, $newline = true, $verbosity = self::NORMAL) { switch ($this->mode) { case 'always': return $this->delegate->write($messages, $newline, $verbosity); case 'error': case 'flushing': return $this->onBufferMessage( __FUNCTION__, [$messages, $newline, $verbosity] ); } } public function writeError($messages, $newline = true, $verbosity = self::NORMAL) { switch ($this->mode) { case 'always': return $this->delegate->writeError( $messages, $newline, $verbosity ); case 'error': case 'flushing': return $this->onBufferMessage( __FUNCTION__, [$messages, $newline, $verbosity] ); } } public function overwrite($messages, $newline = true, $size = null, $verbosity = self::NORMAL) { switch ($this->mode) { case 'always': return $this->delegate->overwrite( $messages, $newline, $size, $verbosity ); case 'error': case 'flushing': return $this->onBufferMessage( __FUNCTION__, [$messages, $newline, $size, $verbosity] ); } } public function overwriteError($messages, $newline = true, $size = null, $verbosity = self::NORMAL) { switch ($this->mode) { case 'always': return $this->delegate->overwriteError( $messages, $newline, $size, $verbosity ); case 'error': case 'flushing': return $this->onBufferMessage( __FUNCTION__, [$messages, $newline, $size, $verbosity] ); } } } __halt_compiler();----SIGNATURE:----UNFH4x12aoC2jf9NBoDqYEC8Bhx+HBiAOyjUYDQsK1u0A+Z/4+YaYQQFML/lhIlP61GXldSJCRHREiMRYvyK9mXghfylweUzm5Gf/Asqw4f10kXS6KqC3OYNpklGPHofr5bssEiAu+NXPMVKE6qKntfesUvKOVvyA5PaWGGuyuyyiiNmH7F8C5Up2H7HgaEPw9acs2KDRHiI56tkFh7zcl9LKJVX4RDF3S9qNfXOH1kp9XyMWUast4NgmEV6fHT4OK9ij8vWXfIdaGK+jo907W/cda29myu6AaZm30CbqyLiPozL8qzSeChBPTBKgBELuoUkyMbcnJwnlSGjNmrRTFXp+j2nNVBkQJ6rAoS/RJV09uNBdRj1eYEeaA5LR/RasHN154s801b99iDZq19gImprm+rLKLi2AQxawYHgk/R48r1L5AEsVDGAOao+Y06UqKR9vl5RGsKGpHCudHI0Hb8Bg8mC3siLS9+DZKJADyLJw93kl6PXX8bb5K1CgGEfMYMSDOd7XkSsCw6yHdNIAk7qaIIlSjR8TcSJIQC/8peqvmcEQgkgCocMMqIngNyuPhcDu4t1s3cRE0Ws6dzr0qksj0zO8GtgMdtEyoXpCLis0X8jnByJ0a4pdv44TH0Nds4qWlh34FIv5kRf5jqKdxZVSHC3Ib+cCBfTdtYQ4YY=----ATTACHMENT:----MTc4NjA4MjUxNjIxMzE0MSAxNDIxMjM3NDk1MzQwMTg3IDQxNDM5NjUzOTk1MDIzMzQ=