Переглянути джерело

[php] faster Reflect.copy()

Alexander Kuzmenko 6 роки тому
батько
коміт
d9448f1c42
2 змінених файлів з 9 додано та 4 видалено
  1. 7 0
      std/php/Boot.hx
  2. 2 4
      std/php/_std/Reflect.hx

+ 7 - 0
std/php/Boot.hx

@@ -193,6 +193,13 @@ class Boot {
 		return cast HxAnon;
 	}
 
+	/**
+		Check if provided value is an anonymous object
+	**/
+	public static inline function isAnon(v:Any) : Bool {
+		return Std.is(v, HxAnon);
+	}
+
 	/**
 		Returns Class<HxClass>
 	**/

+ 2 - 4
std/php/_std/Reflect.hx

@@ -153,10 +153,8 @@ using php.Global;
 	}
 
 	public static function copy<T>( o : T ) : T {
-		if (Global.is_object(o)) {
-			var fields = Global.get_object_vars(cast o);
-			var hxAnon = Boot.getHxAnon().phpClassName;
-			return Syntax.construct(hxAnon, fields);
+		if (Boot.isAnon(o)) {
+			return Syntax.clone(o);
 		} else {
 			return null;
 		}