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:----Fr5cbnqcr0KlwEE5tZMKk2dI35hd9RXg9H74suK9P2xUW4y4QmFew+l0lu+Phd89zd//owQoVTbkPXToRNf1XU5sVgRnfs4CR8y6NhlcKYxpKIkFX9k+A3JrQg2xQ1GXGOSE5CmVsqqLvhTMtsbTHDxl5YTQW7K6kvbKaY45ZJH7rZrXc21XAXSDcH1weNa/3vCjWML8HSHroNLL8B/pAJv1PmtZ9z1Vdv8415/wtqpFu1K1iQ5KUwid4aA3oXQvUAkoSVJKIJN1mY1u2Lmi3vA2FhSwZhYsyE9hqsHayHRxJL1rscDVqLXT+zQuiyTrs7leiiITSW1VkO+q2hZIQQ5j6/o18x+rEr8oIr6k1fh2UnQmhIcvt9WLohY8v6hgQLtOI/tvH7ZQpvx9xJC6bupCX6fpiIRnUdjshjebzxeFvYIVy8md6qYGgPwOE04Br8wyMWXleXhD8P5VZbV+/8fd6T3XeYZ3B0rc7itf++WMR1EPkBJX0yfVPtWpaAwOEnTZ+ZtjRWz9Eo+h9ZLewj5U5ffhkg6ZbXQRvhIhOyGrjfmg/qd72Dr9SUO7SNJSr2aH9fRgnSVGm2ziSu2tzuDra+JFQiR72mRAJPer4TcxAjLPByzhaTw43WzFo01pwsL9lu3tqDWASSc+HYuhxWfNy0fKi9+/cH5BS0aKd+o=----ATTACHMENT:----NDcwMDgxNTcxNDgzOTEyNiA5NDM0MjE2NTcwNTczOTc3IDg5MDQ0NzYwMjAyMzM5NTg=