本文整理汇总了PHP中EcomDev_Utils_Reflection::getReflection方法的典型用法代码示例。如果您正苦于以下问题:PHP EcomDev_Utils_Reflection::getReflection方法的具体用法?PHP EcomDev_Utils_Reflection::getReflection怎么用?PHP EcomDev_Utils_Reflection::getReflection使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类EcomDev_Utils_Reflection
的用法示例。
在下文中一共展示了EcomDev_Utils_Reflection::getReflection方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: __construct
/**
* Constructor adds test groups defined on global level
* and adds additional logic for test names retrieval
*
* @see PHPUnit_Framework_TestSuite::__construct()
*/
public function __construct($theClass = '', $groups = array())
{
if (!$theClass instanceof ReflectionClass) {
$theClass = EcomDev_Utils_Reflection::getReflection($theClass);
}
// Check annotations for test case name
$annotations = PHPUnit_Util_Test::parseTestMethodAnnotations($theClass->getName());
if (isset($annotations['name'])) {
$this->suiteName = $annotations['name'];
}
// Creates all test instances
parent::__construct($theClass);
// Just sort-out them by our internal groups
foreach ($groups as $group) {
$this->groups[$group] = $this->tests();
}
foreach ($this->tests() as $test) {
if ($test instanceof PHPUnit_Framework_TestSuite) {
/* @todo
* Post an issue into PHPUnit bugtracker for
* impossibility for specifying group by parent test case
* Because it is a very dirty hack :(
**/
$testGroups = array();
foreach ($groups as $group) {
$testGroups[$group] = $test->tests();
}
EcomDev_Utils_Reflection::setRestrictedPropertyValue($test, 'groups', $testGroups);
}
}
// Remove un grouped tests group, if it exists
if (isset($this->groups[self::NO_GROUP_KEYWORD])) {
unset($this->groups[self::NO_GROUP_KEYWORD]);
}
}
示例2: getMockInstance
/**
* Proxied mock instance retrieval
*
* @return PHPUnit_Framework_MockObject_MockObject
*/
public function getMockInstance()
{
if ($this->mockInstance === null) {
$reflection = ReflectionUtil::getReflection(ReflectionUtil::getRestrictedPropertyValue($this, 'type'));
$this->mockInstance = $reflection->isAbstract() || $reflection->isInterface() ? $this->getMockForAbstractClass() : $this->getMock();
}
return $this->mockInstance;
}
示例3: _getFilePath
/**
* Returns processed file path
*
* @param string $fileName
* @param string $relatedClassName
* @param string $type
* @return string|bool
*/
protected function _getFilePath($fileName, $relatedClassName, $type)
{
$reflection = EcomDev_Utils_Reflection::getReflection($relatedClassName);
$fileObject = new SplFileInfo($reflection->getFileName());
$basePath = $fileObject->getPath();
// While base path is within a base directory of Magento installment
while (strpos($basePath, Mage::getBaseDir()) && !is_dir($basePath . DS . $type)) {
$basePath = dirname($basePath);
}
if (basename($basePath)) {
return $basePath . DS . $type . DS . $fileName;
}
return false;
}
示例4: getAppReflection
/**
* Returns app reflection instance
*
* @return ReflectionClass|ReflectionObject
*/
protected function getAppReflection()
{
$appClass = (string) Mage::getConfig()->getNode(self::XML_PATH_UNIT_TEST_APP);
$reflectionClass = EcomDev_Utils_Reflection::getReflection($appClass);
return $reflectionClass;
}
示例5: __construct
/**
* Abstract cnstraint constructor,
* provides unified interface for working with multiple types of evalation
*
* @param string $type
* @param mixed $expectedValue
*
* @throws PHPUnit_Framework_Exception
*/
public function __construct($type, $expectedValue = null)
{
$reflection = EcomDev_Utils_Reflection::getReflection(get_class($this));
$types = array();
foreach ($reflection->getConstants() as $name => $constant) {
if (strpos($name, 'TYPE_') === 0) {
$types[] = $constant;
}
}
if (empty($type) || !is_string($type) || !in_array($type, $types)) {
throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string', $type);
}
if (isset($this->_expectedValueValidation[$type])) {
$expectedValueType = isset($this->_expectedValueValidation[$type][2]) ? $this->_expectedValueValidation[$type][2] : '';
// Mandatory check
if (isset($this->_expectedValueValidation[$type][0]) && $this->_expectedValueValidation[$type][0] && $expectedValue === null) {
throw PHPUnit_Util_InvalidArgumentHelper::factory(2, $expectedValueType, $expectedValue);
}
// Type check
if (isset($this->_expectedValueValidation[$type][1]) && $expectedValue !== null && !$this->_expectedValueValidation[$type][1]($expectedValue)) {
throw PHPUnit_Util_InvalidArgumentHelper::factory(2, $expectedValueType, $expectedValue);
}
}
$this->_type = $type;
$this->_expectedValue = $expectedValue;
}
示例6: _loadTestCases
/**
* Loads test cases from search path,
* Will return cached result
*
* @param string $searchPath path for searching files with tests
* @param string $moduleCodeDir path where the module files are placed (e.g. app/code/local),
* used for determining the class name
* @return array
*/
protected static function _loadTestCases($searchPath, $moduleCodeDir)
{
if (Mage::app()->useCache(self::CACHE_TYPE)) {
$cachedTestCases = Mage::app()->loadCache(self::CACHE_TYPE . md5($searchPath));
if ($cachedTestCases) {
return unserialize($cachedTestCases);
}
}
$testCases = array();
$directoryIterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($searchPath));
foreach ($directoryIterator as $fileObject) {
/* @var $fileObject SplFileObject */
// Skip entry if it is not a php file
if (!$fileObject->isFile() && !$fileObject->isLink() || $fileObject->getBasename('.php') === $fileObject->getBasename()) {
continue;
}
$classPath = substr($fileObject->getPath() . DS . $fileObject->getBasename('.php'), strlen($moduleCodeDir));
$className = uc_words(ltrim($classPath, DS), '_', DS);
// Add unit test case only
// if it is a valid class extended from PHPUnit_Framework_TestCase
if (class_exists($className, true)) {
$reflectionClass = EcomDev_Utils_Reflection::getReflection($className);
if (!$reflectionClass->isSubclassOf('PHPUnit_Framework_TestCase') || $reflectionClass->isAbstract()) {
continue;
}
$testCases[] = $className;
}
}
if (Mage::app()->useCache(self::CACHE_TYPE)) {
Mage::app()->saveCache(serialize($testCases), self::CACHE_TYPE . md5($searchPath), array(self::CACHE_TAG));
}
return $testCases;
}
示例7: _getComplexLoader
/**
* Retrieves the loader for a particular entity type and data type
*
* @throws InvalidArgumentException
* @param string $entityType
* @param string $dataType
* @return EcomDev_PHPUnit_Model_Mysql4_Fixture
* @deprecated since 0.3.0
*/
protected function _getComplexLoader($entityType, $dataType)
{
if (!$dataType) {
throw new InvalidArgumentException('Must specify a data type for the loader');
}
$reflection = EcomDev_Utils_Reflection::getReflection($this);
$loaders = Mage::getConfig()->getNode($reflection->getConstant("XML_PATH_FIXTURE_{$dataType}_LOADERS"));
if (isset($loaders->{$entityType})) {
$classAlias = (string) $loaders->{$entityType};
} elseif (isset($loaders->{self::DEFAULT_EAV_LOADER_NODE})) {
$classAlias = (string) $loaders->{self::DEFAULT_EAV_LOADER_NODE};
} else {
$classAlias = self::DEFAULT_EAV_LOADER_CLASS;
}
return Mage::getResourceSingleton($classAlias);
}
示例8: hasMethod
/**
* Has method for making abstract testable
*
* @param array $method
* @return bool
*/
protected function hasMethod($method)
{
$reflection = EcomDev_Utils_Reflection::getReflection($this);
return $reflection->hasMethod($method);
}
示例9: evaluateInstanceOf
/**
* Evaluates that layout block is an instance of expected class/interface
*
* @param EcomDev_PHPUnit_Constraint_Layout_LoggerInterface $other
* @return boolean
*/
protected function evaluateInstanceOf($other)
{
$blockInfo = $other->findFirst(self::ACTION_BLOCK_CREATED, $this->_blockName);
if ($blockInfo === false) {
$this->setActualValue(false);
return false;
}
$this->setActualValue($blockInfo['class']);
$actualReflection = EcomDev_Utils_Reflection::getReflection($this->_actualValue);
return $this->_actualValue === $this->_expectedValue || $actualReflection->isSubclassOf($this->_expectedValue);
}
示例10: _getFilePath
/**
* Returns processed file path
*
* @param string $fileName
* @param string $relatedClassName
* @param string $type
* @return string|bool
*/
protected function _getFilePath($fileName, $relatedClassName, $type)
{
$reflection = EcomDev_Utils_Reflection::getReflection($relatedClassName);
$fileObject = new SplFileInfo($reflection->getFileName());
return $this->_checkFilePath(array($fileObject->getPath(), $fileObject->getPath() . DS . $fileObject->getBasename('.php')), $fileName, $type);
}
示例11: _getSetupModelForModule
/**
* Get the setup model used by a Magento module
*
* @param $moduleName
* @return mixed
* @throws UnexpectedValueException
*/
protected function _getSetupModelForModule($moduleName)
{
$resources = Mage::getConfig()->getNode('global/resources')->children();
$resourceName = 'eav_setup';
$className = 'Mage_Eav_Model_Entity_Setup';
foreach ($resources as $resName => $resource) {
if (!$resource->setup) {
continue;
}
if (isset($resource->setup->module) && $resource->setup->module == $moduleName && isset($resource->setup->class)) {
$className = $resource->setup->getClassName();
$resourceName = $resName;
break;
}
}
$setupModel = new $className($resourceName);
$setupReflection = EcomDev_Utils_Reflection::getReflection($setupModel);
if (!$setupReflection->hasMethod('addAttribute')) {
throw new UnexpectedValueException('Problem loading EAV setup model');
}
return $setupModel;
}
示例12: _getClassNameFromConfig
/**
* Returns class name from configuration path,
* If $interface is specified, then it additionally checks it for implementation
*
*
* @param string $configPath
* @param string $interface
* @throws RuntimeException
* @return string
*/
protected function _getClassNameFromConfig($configPath, $interface = null)
{
$className = (string) $this->getConfig()->getNode($configPath);
$reflection = EcomDev_Utils_Reflection::getReflection($className);
if ($interface !== null && !$reflection->implementsInterface($interface)) {
throw new RuntimeException(sprintf('Invalid class name defined in configuration path %s, because %s does not implement %s interface', $configPath, $interface));
}
return $className;
}