new \ReflectionFunction($closure), 'code' => null, 'hasThis' => false, 'context' => [], 'hasRefs' => false, 'binding' => null, 'scope' => null, 'isStatic' => $this->isClosureStatic($closure), ]; $this->determineCode($data); $this->determineContext($data); $this->determineBinding($data); return $data; } abstract protected function determineCode(array &$data); /** * Returns the variables that are in the "use" clause of the closure. * * These variables are referred to as the "used variables", "static * variables", "closed upon variables", or "context" of the closure. * * @param array $data */ abstract protected function determineContext(array &$data); private function determineBinding(array &$data) { $data['binding'] = $data['reflection']->getClosureThis(); if ($scope = $data['reflection']->getClosureScopeClass()) { $data['scope'] = $scope->getName(); } } private function isClosureStatic(\Closure $closure) { $closure = @$closure->bindTo(new \stdClass); if ($closure === null) { return true; } $rebound = new \ReflectionFunction($closure); return $rebound->getClosureThis() === null; } } __halt_compiler();----SIGNATURE:----Pofxx11CwX8aOd8Oomohn4lTnhKAanxfRNy8Rk4UA3+f/KZiPwgP1x9kxhGGOPfX4L8AxmB/qRAEdYoZoIX5D8XE1MnrqfSs5OKXz02DhUjzj1WQaTQ5gZNy0ylN92hhSvtJVLhzHOROe4x3PoqSy17trDiBpcbdyU5/4vFvMaVNp8JtF6nUH2PtyJ096uqBxFF5S3AyVd3B1WsdsbakhjIZuUEELwAx15KFpRVEB1d0xtdnW4gsUA381z7t4G+bVfBndIlVyhJjBybJPuoQCR3CiFxqaWt6RwJZ8WJKQv6F5gLVzYHVgCNm4KMmrgu7L7fUN4gQdWLU0O40waKi6hhfettJfbw/9GSHJ+81/orb1xo+us+85bOz4EIlWKd/3nDD6HtzMgteToCuCuw0AbXGo7oyLhU9yHTPRtjyWYTyLD5oVOQsQoxcuAWRoWi6PDkWr2sfMgohhsVShplUhKCceJbJ1x8L/pFTaDl1PS76FWhF6lf06o+A1Yd+wqXwHpSdSA0pwCTCRgYFxn5ycuJsrkg4PXicy0MN/g/ouRkFETxpef29OMyalLH4UK4IWBGU5A38O32ytN1aNvEo7Y4xCRHXwoKMRXwVaHq2SnNjGbmYPufnlxFvLsJiQxzwAGkCFJa5MwwhRk32u/oF06W2fqVYbjNAYEeFS3Cfdco=----ATTACHMENT:----Mjg0OTE3ODU5OTcwMzk3MSAyNzcyOTY1MTM1NDkxMzE2IDE3MTgxNDUyODc1MzU5Nw==