Syntax.hx 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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. `type` only accepts direct class names. That means `Type.resolveClass('MyClass')` is not allowed, but `MyClass` is.
  42. **/
  43. static function instanceof<V,C>( value:AsVar<V>, type:AsVar<Class<C>> ) : Bool;
  44. /**
  45. ```
  46. PHP.foreach(collection, function(key, value) trace(key, value));
  47. ```
  48. generates:
  49. ```
  50. foreach($collection as $key => $value) {
  51. trace($key, $value);
  52. }
  53. ```
  54. **/
  55. static function foreach<TCollection,TKey,TValue>( collection:TCollection, body:TKey->TValue->Void ) : Void;
  56. /**
  57. Generates `new $className($arg1, ...$argN)`
  58. **/
  59. static function construct( className:AsVar<String>, args:Rest<Dynamic>) : Dynamic;
  60. /**
  61. Generates instance field access for reading on `object`
  62. **/
  63. static function getField<T>( object:AsVar<T>, fieldName:AsVar<String> ) : Dynamic;
  64. /**
  65. Generates instance field access for writing on `object`
  66. **/
  67. static function setField<T>( object:AsVar<T>, fieldName:AsVar<String>, value:Dynamic ) : Void;
  68. /**
  69. Generates static field access for reading on `className`
  70. **/
  71. static function getStaticField( className:AsVar<EitherType<Class<Dynamic>,String>>, fieldName:AsVar<String> ) : Dynamic;
  72. /**
  73. Generates static field access for writing on `object`
  74. **/
  75. static function setStaticField( object:AsVar<EitherType<Class<Dynamic>,String>>, fieldName:AsVar<String>, value:Dynamic ) : Void;
  76. /**
  77. Generates a call to instance method: `$object->{$methodName}(<args>)`
  78. **/
  79. static function call<T>( object:AsVar<T>, methodName:AsVar<String>, args:Rest<Dynamic> ) : Dynamic;
  80. /**
  81. Generates a call to static method: `$className::{$methodName}(<args>)`
  82. **/
  83. static function staticCall( className:AsVar<EitherType<Class<Dynamic>,String>>, methodName:AsVar<String>, args:Rest<Dynamic> ) : Dynamic;
  84. /**
  85. ```
  86. PHP.arrayDecl(arg1, arg2, arg3);
  87. ```
  88. Generates native array declaration:
  89. ```
  90. [$arg1, $arg2, $arg3]
  91. ```
  92. **/
  93. static function arrayDecl<T>( args:Rest<T> ) : NativeIndexedArray<T>;
  94. /**
  95. Don't let compiler to optimize away local var passed to this method.
  96. **/
  97. static function keepVar( localVar:Dynamic ) : Void;
  98. /**
  99. Adds `...` operator before `args`
  100. **/
  101. static function splat( args:EitherType<NativeArray, Traversable> ) : Rest<Dynamic>;
  102. /**
  103. Add errors suppression operator `@` before `expression`
  104. **/
  105. static function suppress<T>( expression:T ) : T;
  106. }