70 lines
1.8 KiB
PHP
Executable File
70 lines
1.8 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* @author Amasty Team
|
|
* @copyright Copyright (c) Amasty (https://www.amasty.com)
|
|
* @package GeoIP Data for Magento 2 (System)
|
|
*/
|
|
|
|
namespace Amasty\Geoip\Test\Unit\Traits;
|
|
|
|
/**
|
|
* Provide useful methods with reflection.
|
|
*
|
|
* @codingStandardsIgnoreFile
|
|
*/
|
|
trait ReflectionTrait
|
|
{
|
|
/**
|
|
* @param object $object
|
|
* @param string $methodName
|
|
* @param array $parameters
|
|
*
|
|
* @return mixed
|
|
* @throws \ReflectionException
|
|
*/
|
|
private function invokeMethod($object, $methodName, array $parameters = [])
|
|
{
|
|
$reflection = new \ReflectionClass(get_class($object));
|
|
$method = $reflection->getMethod($methodName);
|
|
$method->setAccessible(true);
|
|
|
|
return $method->invokeArgs($object, $parameters);
|
|
}
|
|
|
|
/**
|
|
* @param object $object
|
|
* @param string $propertyName
|
|
* @param mixed $value
|
|
* @param string $originalClassName
|
|
*
|
|
* @return object
|
|
* @throws \ReflectionException
|
|
*/
|
|
private function setProperty($object, $propertyName, $value, $originalClassName = '')
|
|
{
|
|
$reflection = new \ReflectionClass($originalClassName ?: get_class($object));
|
|
$property = $reflection->getProperty($propertyName);
|
|
$property->setAccessible(true);
|
|
$property->setValue($object, $value);
|
|
|
|
return $object;
|
|
}
|
|
|
|
/**
|
|
* @param $object
|
|
* @param $propertyName
|
|
* @param string $originalClassName
|
|
*
|
|
* @return mixed
|
|
* @throws \ReflectionException
|
|
*/
|
|
private function getProperty($object, $propertyName, $originalClassName = '')
|
|
{
|
|
$reflection = new \ReflectionClass($originalClassName ?: get_class($object));
|
|
$property = $reflection->getProperty($propertyName);
|
|
$property->setAccessible(true);
|
|
|
|
return $property->getValue($object);
|
|
}
|
|
}
|