1 <?hh /* -*- mode: php -*- */
3 * Copyright (c) 2014, Facebook, Inc.
6 * This source code is licensed under the MIT license found in the
7 * LICENSE file in the "hack" directory of this source tree.
12 public function __toString()[];
16 public static function getModifierNames($modifiers)[];
17 public static function export(Reflector $reflector, $return = false);
20 class ReflectionClass implements Reflector {
22 const int IS_IMPLICIT_ABSTRACT = 16;
23 const int IS_EXPLICIT_ABSTRACT = 32;
24 const int IS_FINAL = 64;
27 * This field is read-only
31 public function __construct(mixed $argument)[];
32 public static function export(mixed $argument, bool $return = false): ?string;
33 public function getConstant(string $name)[]: mixed;
34 public function getConstants()[]: darray<string, mixed>;
35 public function getAbstractConstantNames()[]: darray<string, string>;
36 public function getTypeConstant(string $name)[]: ReflectionTypeConstant;
37 public function getTypeConstants()[]: varray<ReflectionTypeConstant>;
38 public function getConstructor()[]: ?ReflectionMethod;
39 public function getDefaultProperties()[]: darray<string, mixed>;
41 * Returns string or false
43 public function getDocComment()[]: mixed;
44 public function getEndLine()[]: int;
45 public function getExtension()[]: ?ReflectionExtension;
46 public function getExtensionName()[]: string;
48 * Returns string or false
50 public function getFileName()[]: mixed;
51 public function getFile()[]: ReflectionFile;
52 public function getInterfaceNames()[]: varray<string>;
53 public function getInterfaces()[]: darray<string, ReflectionClass>;
54 final public function getAttributes()[]: darray<string, varray<mixed>>;
55 final public function hasAttribute(string $name)[]: bool;
56 final public function getAttribute(string $name)[]: ?varray<mixed>;
57 final public function getAttributeClass<T as HH\ClassLikeAttribute>(classname<T> $c)[]: ?T;
58 public function getMethod(string $name)[]: ReflectionMethod;
59 public function getMethods(?int $filter = null)[]: varray<ReflectionMethod>;
60 public function getModifiers()[]: int;
61 public function getName()[]: string;
62 public function getNamespaceName()[]: string;
64 * Returns ReflectionClass or false
66 public function getParentClass()[]: mixed;
67 public function getProperties(int $filter = 0xFFFF)[]: varray<ReflectionProperty>;
68 public function getProperty(string $name)[]: ReflectionProperty;
69 public function getRequirementNames()[]: varray<string>;
70 public function getRequirements()[]: darray<string, ReflectionClass>;
71 public function getShortName()[]: string;
72 public function getStartLine()[]: int;
73 public function getStaticProperties(): darray<string, mixed>;
74 public function getStaticPropertyValue(string $name, mixed $def_value = null): mixed;
75 public function getTraitAliases()[]: darray<string, string>;
76 public function getTraitNames()[]: varray<string>;
77 public function getTraits()[]: darray<string, ReflectionClass>;
78 public function hasConstant(string $name)[]: bool;
79 public function hasMethod(string $name)[]: bool;
80 public function hasProperty(string $name)[]: bool;
81 public function hasTypeConstant(string $name)[]: bool;
82 public function implementsInterface(string $interface)[]: bool;
83 public function inNamespace()[]: bool;
84 public function isAbstract()[]: bool;
85 public function isCloneable()[]: bool;
86 public function isFinal()[]: bool;
87 public function isInstance(mixed $object)[]: bool;
88 public function isInstantiable()[]: bool;
89 public function isInterface()[]: bool;
90 public function isEnum()[]: bool;
91 public function getEnumUnderlyingType()[]: string;
92 public function isInternal()[]: bool;
93 public function isIterateable()[]: bool;
95 * $class is string or ReflectionClass
97 public function isSubclassOf(mixed $class)[]: bool;
98 public function isTrait()[]: bool;
99 public function isUserDefined()[]: bool;
100 public function newInstance(...$args);
101 public function newInstanceArgs(Traversable<mixed> $args = varray[])[defaults];
102 public function newInstanceWithoutConstructor()[];
103 public function setStaticPropertyValue(string $name, mixed $value): void;
104 public function __toString()[]: string;
105 public function getReifiedTypeParamInfo()[]: varray<shape(
106 'is_reified' => bool,
112 class ReflectionObject extends ReflectionClass {}
114 class ReflectionException extends Exception {
115 use ExceptionWithPureGetMessageTrait;
118 abstract class ReflectionFunctionAbstract implements Reflector {
123 public function getName()[]: string;
124 public function inNamespace()[]: bool;
125 public function getNamespaceName()[]: string;
126 public function getShortName()[]: string;
127 public function isHack()[]: bool;
128 public function isInternal()[]: bool;
129 public function isClosure()[]: bool;
130 public function isGenerator()[]: bool;
131 public function returnsReadonly()[]: bool;
132 public function isAsync()[]: bool;
133 public function isVariadic()[]: bool;
134 public function isUserDefined()[]: bool;
135 public function getFileName()[]: mixed; // string | false
136 public function getFile()[]: ReflectionFile;
137 public function getStartLine()[]: mixed; // int | false
138 public function getEndLine()[]: mixed; // int | false
139 public function getDocComment()[]: mixed; // string | false
140 public function getStaticVariables(): darray<string, mixed>;
141 public function getReturnTypeText()[];
142 final public function getAttributes()[]: darray<string, varray<mixed>>;
143 final public function hasAttribute(string $name)[]: bool;
144 final public function getAttribute(string $name)[]: ?varray<mixed>;
145 public function getNumberOfParameters()[]: int;
146 public function getParameters()[]: varray<ReflectionParameter>;
147 public function getNumberOfRequiredParameters()[];
148 public function isDeprecated()[]: bool;
149 public function getExtension()[];
150 public function getExtensionName()[];
151 final private function __clone();
152 public function hasReturnType()[]: bool;
153 public function getReturnType()[]: ?ReflectionType;
154 public function getReifiedTypeParamInfo()[]: varray<darray<string, bool>>;
155 public function getCoeffects()[]: vec<string>;
158 class ReflectionFunction extends ReflectionFunctionAbstract implements Reflector {
159 const IS_DEPRECATED = 262144;
163 public function __construct($name)[];
164 public function __toString()[];
165 public static function export($name, $return = null);
166 public function isDisabled()[];
167 public function invoke(...$args);
168 public function invokeArgs(varray $args);
169 public function getClosure();
170 final public function getAttributeClass<T as HH\FunctionAttribute>(classname<T> $c)[]: ?T;
173 class ReflectionMethod extends ReflectionFunctionAbstract implements Reflector {
176 const IS_PUBLIC = 256;
177 const IS_PROTECTED = 512;
178 const IS_PRIVATE = 1024;
179 const IS_ABSTRACT = 2;
185 public static function export(string $class, string $name, bool $return = false);
186 public function __construct($class, $name = null)[];
187 public function __toString()[];
188 public function isPublic()[];
189 public function isPrivate()[];
190 public function isProtected()[];
191 public function isAbstract()[];
192 public function isFinal()[];
193 public function isStatic()[];
194 public function isReadonly()[];
195 public function isConstructor()[];
196 public function getClosure($object);
197 public function getModifiers()[];
198 public function invoke($object, ...$args);
199 public function invokeArgs($object, varray $args);
200 public function getDeclaringClass()[];
201 public function getPrototype()[];
202 public function setAccessible(bool $accessible);
203 final public function getAttributeClass<T as HH\MethodAttribute>(classname<T> $c)[]: ?T;
206 class ReflectionParameter implements Reflector {
209 final private function __clone();
210 public static function export($function, $parameter, $return = null);
211 public function __construct($function, $parameter, $info = null)[];
212 public function __toString()[];
213 public function getName()[];
214 public function isPassedByReference()[];
215 public function isInOut()[]: bool;
216 public function isReadonly()[]: bool;
217 public function canBePassedByValue()[];
218 public function getDeclaringFunction()[];
219 public function getDeclaringClass()[];
220 public function getClass()[];
221 public function isArray()[];
222 public function isCallable()[];
223 public function allowsNull()[];
224 public function getPosition()[];
225 public function isOptional()[];
226 public function isDefaultValueAvailable()[];
227 public function getDefaultValue()[];
228 public function isDefaultValueConstant()[];
229 public function getDefaultValueConstantName()[];
230 public function getTypehintText()[];
231 public function getTypeText()[]: string;
232 public function getDefaultValueText()[];
233 public function isVariadic()[];
234 public function hasType()[]: bool;
235 public function getType()[]: ?ReflectionType;
236 final public function hasAttribute(string $name)[]: bool;
237 final public function getAttribute(string $name)[]: ?varray<mixed>;
238 final public function getAttributeClass<T as HH\ParameterAttribute>(classname<T> $c)[]: ?T;
239 final public function getAttributes()[]: darray<string, varray<mixed>>;
242 class ReflectionProperty implements Reflector {
244 const IS_PUBLIC = 256;
245 const IS_PROTECTED = 512;
246 const IS_PRIVATE = 1024;
251 final private function __clone();
252 public static function export($class, $name, $return = null);
253 public function __construct($class, string $name)[];
254 public function __toString()[];
255 public function getName()[];
256 public function getValue($object = null);
257 public function setValue($object, $value = null);
258 public function isPublic()[];
259 public function isPrivate()[];
260 public function isProtected()[];
261 public function isStatic()[];
262 public function isReadonly()[];
263 public function isDefault()[];
264 public function getModifiers()[];
265 public function getDeclaringClass()[];
266 public function getDocComment()[];
267 public function setAccessible($accessible);
268 public function getTypeText()[];
269 final public function getAttributes()[]: darray<string, varray<mixed>>;
270 final public function hasAttribute(string $name)[]: bool;
271 final public function getAttribute(string $name)[]: ?varray<mixed>;
274 class ReflectionExtension implements Reflector {
278 final private function __clone();
279 public static function export($name, $return = false);
280 public function __construct($name)[];
281 public function __toString()[];
282 public function getName()[];
283 public function getVersion()[];
284 public function getFunctions()[];
285 public function getConstants()[];
286 public function getINIEntries()[];
287 public function getClasses()[];
288 public function getClassNames()[];
289 public function info()[];
292 class ReflectionTypeConstant implements Reflector {
294 final private function __clone();
295 public static function export($class, string $name, $return = null);
296 public function __construct($class, string $name)[];
297 public function __toString()[]: string;
298 public function getName()[]: string;
299 public function isAbstract()[]: bool;
300 public function getDeclaringClass()[]: ReflectionClass;
301 public function getClass()[]: ReflectionClass;
302 public function getAssignedTypeText()[]: ?string;
303 public function getTypeStructure()[]: darray;
306 class ReflectionTypeAlias implements Reflector {
307 final private function __clone();
308 final public function __construct(string $name)[];
309 public function __toString()[]: string;
310 public function getTypeStructure()[]: darray;
311 public function getResolvedTypeStructure()[]: darray;
312 public function getAssignedTypeText()[]: string;
313 public function getName()[]: string;
314 public function getFileName()[]: string;
315 public function getFile()[]: ReflectionFile;
316 final public function getAttributes()[]: darray<string, varray<mixed>>;
317 final public function hasAttribute(string $name)[]: bool;
318 final public function getAttribute(string $name)[]: ?varray<mixed>;
319 final public function getAttributeClass<T as HH\TypeAliasAttribute>(classname<T> $c)[]: ?T;
322 class ReflectionType {
323 final private function __clone();
324 public function __construct(?Reflector $param_or_ret = null,
325 darray $type_hint_info = darray[]);
326 public function allowsNull()[]: bool;
327 public function isBuiltin()[]: bool;
328 public function __toString()[]: string;
331 class ReflectionFile implements Reflector {
332 final private function __clone();
333 final public function __construct(string $name)[];
334 public function __toString()[]: string;
335 public function getName()[]: string;
336 final public function getAttributes()[]: darray<string, varray<mixed>>;
337 final public function hasAttribute(string $name)[]: bool;
338 final public function getAttribute(string $name)[]: ?varray<mixed>;
339 final public function getAttributeClass<T as HH\FileAttribute>(classname<T> $c)[]: ?T;