Syntax.hx 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package php;
  2. import haxe.extern.Rest;
  3. import haxe.extern.AsVar;
  4. import haxe.extern.EitherType;
  5. /**
  6. Special extern class to support PHP language specifics.
  7. Don't use these functions unless you are really sure what you are doing.
  8. **/
  9. extern class Syntax {
  10. /**
  11. This method allows to force specified binary operation for `left` and `right` values.
  12. `operator` must be a constant string like "+" or "==".
  13. **/
  14. static function binop( left:Dynamic, operator:String, right:Dynamic ) : Dynamic;
  15. /**
  16. Generates `(int)$value`
  17. **/
  18. static function int( value:Dynamic ) : Int;
  19. /**
  20. Generates `(float)$value`
  21. **/
  22. static function float( value:Dynamic ) : Float;
  23. /**
  24. Generates `(string)$value`
  25. **/
  26. static function string( value:Dynamic ) : String;
  27. /**
  28. Generates `(bool)$value`
  29. **/
  30. static function bool( value:Dynamic ) : Bool;
  31. /**
  32. Generates `(object)$value`
  33. **/
  34. static function object( value:Dynamic ) : Dynamic;
  35. /**
  36. Generates `(array)$value`
  37. **/
  38. static function array( value:Dynamic ) : NativeArray;
  39. /**
  40. Ggenerates `$value instanceof $phpClassName`.
  41. Haxe generates `Std.is(value, Type)` calls to `$value instanceof Type` automatically where possible.
  42. `type` only accepts direct class names. That means `Type.resolveClass('MyClass')` is not allowed, but `MyClass` is.
  43. **/
  44. static function instanceof<V,C>( value:AsVar<V>, type:AsVar<Class<C>> ) : Bool;
  45. /**
  46. ```
  47. Syntax.foreach(collection, function(key, value) trace(key, value));
  48. ```
  49. generates:
  50. ```
  51. foreach($collection as $key => $value) {
  52. trace($key, $value);
  53. }
  54. ```
  55. **/
  56. static function foreach<TCollection,TKey,TValue>( collection:TCollection, body:TKey->TValue->Void ) : Void;
  57. /**
  58. Generates `new $className($arg1, ...$argN)`
  59. **/
  60. static function construct( className:AsVar<String>, args:Rest<Dynamic>) : Dynamic;
  61. /**
  62. Generates instance field access for reading on `object`
  63. **/
  64. static function getField<T>( object:AsVar<T>, fieldName:AsVar<String> ) : Dynamic;
  65. /**
  66. Generates instance field access for writing on `object`
  67. **/
  68. static function setField<T>( object:AsVar<T>, fieldName:AsVar<String>, value:Dynamic ) : Void;
  69. /**
  70. Generates static field access for reading on `className`
  71. **/
  72. static function getStaticField( className:AsVar<EitherType<Class<Dynamic>,String>>, fieldName:AsVar<String> ) : Dynamic;
  73. /**
  74. Generates static field access for writing on `object`
  75. **/
  76. static function setStaticField( object:AsVar<EitherType<Class<Dynamic>,String>>, fieldName:AsVar<String>, value:Dynamic ) : Void;
  77. /**
  78. Generates a call to instance method: `$object->{$methodName}(<args>)`
  79. **/
  80. static function call<T>( object:AsVar<T>, methodName:AsVar<String>, args:Rest<Dynamic> ) : Dynamic;
  81. /**
  82. Generates a call to static method: `$className::{$methodName}(<args>)`
  83. **/
  84. static function staticCall( className:AsVar<EitherType<Class<Dynamic>,String>>, methodName:AsVar<String>, args:Rest<Dynamic> ) : Dynamic;
  85. /**
  86. ```
  87. Syntax.arrayDecl(arg1, arg2, arg3);
  88. ```
  89. Generates native array declaration:
  90. ```
  91. [$arg1, $arg2, $arg3]
  92. ```
  93. **/
  94. static function arrayDecl<T>( args:Rest<T> ) : NativeIndexedArray<T>;
  95. /**
  96. Don't let compiler to optimize away local var passed to this method.
  97. **/
  98. static function keepVar( localVar:Dynamic ) : Void;
  99. /**
  100. Adds `...` operator before `args`
  101. **/
  102. static function splat( args:EitherType<NativeArray, Traversable> ) : Rest<Dynamic>;
  103. /**
  104. Add errors suppression operator `@` before `expression`
  105. **/
  106. static function suppress<T>( expression:T ) : T;
  107. }