瀏覽代碼

new StringMap implementation for PHP

mockey 10 年之前
父節點
當前提交
2b0706f39d
共有 1 個文件被更改,包括 13 次插入9 次删除
  1. 13 9
      std/php/_std/haxe/ds/StringMap.hx

+ 13 - 9
std/php/_std/haxe/ds/StringMap.hx

@@ -26,38 +26,42 @@ package haxe.ds;
 	private var h : ArrayAccess<T>;
 
 	public function new() : Void {
-		h = untyped __call__('array');
+		h = untyped __php__("new stdClass");
 	}
 
 	public function set( key : String, value : T ) : Void {
-		untyped h[key] = value;
+		untyped __php__("$this->h->$key = $value");
 	}
 
 	public function get( key : String ) : Null<T> {
-		if (untyped __call__("array_key_exists", key, h))
-			return untyped h[key];
+		if (untyped __call__("property_exists", h, key))
+			return untyped __php__("$this->h->$key");
 		else
 			return null;
 	}
 
 	public function exists( key : String ) : Bool {
-		return untyped __call__("array_key_exists", key, h);
+		return untyped __call__("property_exists", h, key);
 	}
 
 	public function remove( key : String ) : Bool {
-		if (untyped __call__("array_key_exists", key, h)) {
-			untyped __call__("unset", h[key]);
+		if (untyped __call__("property_exists", h, key)) {
+			untyped __php__("unset($this->h->$key)");
 			return true;
 		} else
 			return false;
 	}
 
 	public function keys() : Iterator<String> {
-		return untyped __call__("new _hx_array_iterator", __call__("array_keys", h));
+		var arr = untyped __call__("array");
+		untyped __php__("foreach ($this->h as $key => $val) $arr[] = $key");
+		return untyped __call__("new _hx_array_iterator", arr);
 	}
 
 	public function iterator() : Iterator<T> {
-		return untyped __call__("new _hx_array_iterator", __call__("array_values", h));
+		var arr = untyped __call__("array");
+		untyped __php__("foreach ($this->h as $key => $val) $arr[] = $val");
+		return untyped __call__("new _hx_array_iterator", arr);
 	}
 
 	public function toString() : String {