瀏覽代碼

[php] less String.length in std

Alexander Kuzmenko 6 年之前
父節點
當前提交
062942383e
共有 7 個文件被更改,包括 20 次插入14 次删除
  1. 2 2
      std/php/Boot.hx
  2. 1 0
      std/php/Const.hx
  3. 2 2
      std/php/Web.hx
  4. 3 2
      std/php/_std/EReg.hx
  5. 9 5
      std/php/_std/StringTools.hx
  6. 1 1
      std/php/_std/haxe/CallStack.hx
  7. 2 2
      std/php/_std/sys/io/Process.hx

+ 2 - 2
std/php/Boot.hx

@@ -234,7 +234,7 @@ class Boot {
 	**/
 	public static function getPhpName( haxeName:String ) : Null<String> {
 		var prefix = getPrefix();
-		var phpParts = (prefix.length == 0 ? [] : [prefix]);
+		var phpParts = (Global.strlen(prefix) == 0 ? [] : [prefix]);
 
 		var haxeParts = haxeName.split('.');
 		for (part in haxeParts) {
@@ -682,7 +682,7 @@ private class HxString {
 	public static function indexOf( str:String, search:String, startIndex:Int = null ) : Int {
 		if (startIndex == null) {
 			startIndex = 0;
-		} else if (startIndex < 0) {
+		} else if (startIndex < 0 && Const.PHP_VERSION_ID < 70100) { //negative ingexes are supported since 7.1.0
 			startIndex += str.length;
 		}
 		var index = Global.mb_strpos(str, search, startIndex, 'UTF-8');

+ 1 - 0
std/php/Const.hx

@@ -13,6 +13,7 @@ extern class Const {
 	/**
 		@see http://php.net/manual/en/reserved.constants.php
 	**/
+	static var PHP_VERSION_ID : Int;
 	static var PHP_OS : String;
 	static var PHP_SAPI : String;
 	static var PHP_BINARY : String;

+ 2 - 2
std/php/Web.hx

@@ -61,7 +61,7 @@ class Web {
 		var reg = new EReg("^"+param+"(\\[|%5B)([0-9]*?)(\\]|%5D)=(.*?)$", "");
 		var res = new Array<String>();
 		var explore = function(data:String){
-			if (data == null || data.length == 0)
+			if (data == null || Global.strlen(data) == 0)
 				return;
 			for (part in data.split("&")){
 				if (reg.match(part)){
@@ -330,7 +330,7 @@ class Web {
 				h.set(curname,buf.toString());
 			curname = p;
 			buf = new StringBuf();
-			maxSize -= p.length;
+			maxSize -= Global.strlen(p);
 			if( maxSize < 0 )
 				throw "Maximum size reached";
 		}, function(str,pos,len) {

+ 3 - 2
std/php/_std/EReg.hx

@@ -107,8 +107,9 @@ import php.*;
 	public function map( s : String, f : EReg -> String ) : String {
 		var offset = 0;
 		var buf = new StringBuf();
+		var length = s.length;
 		do {
-			if (offset >= s.length) {
+			if (offset >= length) {
 				break;
 			} else if (!matchSub(s, offset)) {
 				buf.add(s.substr(offset));
@@ -125,7 +126,7 @@ import php.*;
 				offset = p.pos + p.len;
 			}
 		} while (global);
-		if (!global && offset > 0 && offset < s.length) {
+		if (!global && offset > 0 && offset < length) {
 			buf.add(s.substr(offset));
 		}
 		return buf.toString();

+ 9 - 5
std/php/_std/StringTools.hx

@@ -66,14 +66,18 @@ import php.*;
 	}
 
 	public static function rpad( s : String, c : String, l : Int ) : String {
-		if (c.length == 0 || s.length >= l) return s;
-		var padLength = Math.ceil((l - s.length) / c.length) * c.length + s.length;
+		var cLength = c.length;
+		var sLength = s.length;
+		if (cLength == 0 || sLength >= l) return s;
+		var padLength = Math.ceil((l - sLength) / cLength) * cLength + sLength;
 		return Global.str_pad(s, padLength, c, Const.STR_PAD_RIGHT);
 	}
 
 	public static function lpad( s : String, c : String, l : Int ) : String {
-		if (c.length == 0 || s.length >= l) return s;
-		var padLength = Math.ceil((l - s.length) / c.length) * c.length + s.length;
+		var cLength = c.length;
+		var sLength = s.length;
+		if (cLength == 0 || sLength >= l) return s;
+		var padLength = Math.ceil((l - sLength) / cLength) * cLength + sLength;
 		return Global.str_pad(s, padLength, c, Const.STR_PAD_LEFT);
 	}
 
@@ -87,7 +91,7 @@ import php.*;
 	public static function hex( n : Int, ?digits : Int ) : String {
 		var s = Global.dechex(n);
 		var len = 8;
-		if (s.length > (null == digits ? len : (len = digits > len ? digits : len)))
+		if (Global.strlen(s) > (null == digits ? len : (len = digits > len ? digits : len)))
 			s = s.substr(-len);
 		else if ( digits != null )
 			s = lpad(s, '0', digits);

+ 1 - 1
std/php/_std/haxe/CallStack.hx

@@ -130,7 +130,7 @@ class CallStack {
 
 				if ((next['function']:String).indexOf('{closure}') >= 0) {
 					item = LocalFunction();
-				} else if ((next['class']:String).length > 0 && (next['function']:String).length > 0) {
+				} else if (Global.strlen(next['class']) > 0 && Global.strlen(next['function']) > 0) {
 					var cls = Boot.getClassName(next['class']);
 					item = Method(cls, next['function']);
 				}

+ 2 - 2
std/php/_std/sys/io/Process.hx

@@ -65,8 +65,8 @@ private class ReadablePipe extends Input {
 		var result:String = result;
 
 		var bytes = Bytes.ofString(result);
-		s.blit(pos, bytes, 0, result.length);
-		return result.length;
+		s.blit(pos, bytes, 0, result.strlen());
+		return result.strlen();
 	}
 }