Completed
Push — master ( e1ce60...8f54cc )
by Jean-Christophe
03:31
created

JReflection   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 2
Bugs 0 Features 1
Metric Value
wmc 8
lcom 0
cbo 1
dl 0
loc 35
rs 10
c 2
b 0
f 1

4 Methods

Rating   Name   Duplication   Size   Complexity  
A shortClassName() 0 4 1
B jsonObject() 0 20 5
A callMethod() 0 3 1
A getterName() 0 3 1
1
<?php
2
3
namespace Ajax\service;
4
5
class JReflection {
6
	public static function shortClassName($object){
7
		$classNameWithNamespace = get_class($object);
8
		return substr($classNameWithNamespace, strrpos($classNameWithNamespace, '\\')+1);
9
	}
10
11
	public static function jsonObject($classname){
12
		$object=new $classname();
13
		$class = new \ReflectionClass($classname);
14
		$methods=$class->getMethods(\ReflectionMethod::IS_PUBLIC);
15
		foreach ($methods as $method){
16
			$name=$method->getName();
17
			if(JString::startswith($name, "set")){
18
				$property=\lcfirst(JString::replaceAtFirst($name, "set", ""));
19
				$value="__".$property."__";
20
				try{
21
					if($class->getProperty($property)!==null){
22
						\call_user_func_array([$object,$name],[$value]);
23
					}
24
				}catch(\Exception $e){
25
					//Nothing to do
26
				}
27
			}
28
		}
29
		return $object;
30
	}
31
32
	public static function callMethod($object,$callback,array $values){
33
		return \call_user_func_array([$object,$callback],$values);
34
	}
35
36
	public static function getterName($propertyName,$prefix="get"){
37
		return $prefix.\ucfirst($propertyName);
38
	}
39
}