vendor and env first commit
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
namespace Proengsoft\JsValidation\Support;
|
||||
|
||||
use Closure;
|
||||
|
||||
trait AccessProtectedTrait
|
||||
{
|
||||
/**
|
||||
* Create closure to call inaccessible method.
|
||||
*
|
||||
* @param $instance
|
||||
* @return \Closure
|
||||
*/
|
||||
protected function createProtectedCaller($instance)
|
||||
{
|
||||
$closure = function ($method, $args) {
|
||||
$callable = [$this, $method];
|
||||
|
||||
return call_user_func_array($callable, $args);
|
||||
};
|
||||
|
||||
return $closure->bindTo($instance, $instance);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets inaccessible property.
|
||||
*
|
||||
* @param $instance
|
||||
* @param $property
|
||||
* @return \Closure
|
||||
*/
|
||||
protected function getProtected($instance, $property)
|
||||
{
|
||||
$closure = function ($property) {
|
||||
return $this->$property;
|
||||
};
|
||||
$callback = $closure->bindTo($instance, $instance);
|
||||
|
||||
return $callback($property);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calls inaccessible method.
|
||||
*
|
||||
* @param object|\Closure $instance
|
||||
* @param $method
|
||||
* @param $args
|
||||
* @return mixed
|
||||
*/
|
||||
protected function callProtected($instance, $method, $args = [])
|
||||
{
|
||||
if (! ($instance instanceof Closure)) {
|
||||
$instance = $this->createProtectedCaller($instance);
|
||||
}
|
||||
|
||||
return call_user_func($instance, $method, $args);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user