Mixin.php 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971
  1. <?php
  2. /**
  3. * provides type inference and auto-completion for magic static methods of Assert.
  4. */
  5. namespace Webmozart\Assert;
  6. use ArrayAccess;
  7. use Closure;
  8. use Countable;
  9. use InvalidArgumentException;
  10. use Throwable;
  11. interface Mixin
  12. {
  13. /**
  14. * @psalm-pure
  15. * @psalm-assert null|string $value
  16. *
  17. * @param mixed $value
  18. * @param string $message
  19. *
  20. * @throws InvalidArgumentException
  21. */
  22. public static function nullOrString($value, $message = '');
  23. /**
  24. * @psalm-pure
  25. * @psalm-assert iterable<string> $value
  26. *
  27. * @param mixed $value
  28. * @param string $message
  29. *
  30. * @throws InvalidArgumentException
  31. */
  32. public static function allString($value, $message = '');
  33. /**
  34. * @psalm-pure
  35. * @psalm-assert null|non-empty-string $value
  36. *
  37. * @param mixed $value
  38. * @param string $message
  39. *
  40. * @throws InvalidArgumentException
  41. */
  42. public static function nullOrStringNotEmpty($value, $message = '');
  43. /**
  44. * @psalm-pure
  45. * @psalm-assert iterable<non-empty-string> $value
  46. *
  47. * @param mixed $value
  48. * @param string $message
  49. *
  50. * @throws InvalidArgumentException
  51. */
  52. public static function allStringNotEmpty($value, $message = '');
  53. /**
  54. * @psalm-pure
  55. * @psalm-assert null|int $value
  56. *
  57. * @param mixed $value
  58. * @param string $message
  59. *
  60. * @throws InvalidArgumentException
  61. */
  62. public static function nullOrInteger($value, $message = '');
  63. /**
  64. * @psalm-pure
  65. * @psalm-assert iterable<int> $value
  66. *
  67. * @param mixed $value
  68. * @param string $message
  69. *
  70. * @throws InvalidArgumentException
  71. */
  72. public static function allInteger($value, $message = '');
  73. /**
  74. * @psalm-pure
  75. * @psalm-assert null|numeric $value
  76. *
  77. * @param mixed $value
  78. * @param string $message
  79. *
  80. * @throws InvalidArgumentException
  81. */
  82. public static function nullOrIntegerish($value, $message = '');
  83. /**
  84. * @psalm-pure
  85. * @psalm-assert iterable<numeric> $value
  86. *
  87. * @param mixed $value
  88. * @param string $message
  89. *
  90. * @throws InvalidArgumentException
  91. */
  92. public static function allIntegerish($value, $message = '');
  93. /**
  94. * @psalm-pure
  95. * @psalm-assert null|float $value
  96. *
  97. * @param mixed $value
  98. * @param string $message
  99. *
  100. * @throws InvalidArgumentException
  101. */
  102. public static function nullOrFloat($value, $message = '');
  103. /**
  104. * @psalm-pure
  105. * @psalm-assert iterable<float> $value
  106. *
  107. * @param mixed $value
  108. * @param string $message
  109. *
  110. * @throws InvalidArgumentException
  111. */
  112. public static function allFloat($value, $message = '');
  113. /**
  114. * @psalm-pure
  115. * @psalm-assert null|numeric $value
  116. *
  117. * @param mixed $value
  118. * @param string $message
  119. *
  120. * @throws InvalidArgumentException
  121. */
  122. public static function nullOrNumeric($value, $message = '');
  123. /**
  124. * @psalm-pure
  125. * @psalm-assert iterable<numeric> $value
  126. *
  127. * @param mixed $value
  128. * @param string $message
  129. *
  130. * @throws InvalidArgumentException
  131. */
  132. public static function allNumeric($value, $message = '');
  133. /**
  134. * @psalm-pure
  135. * @psalm-assert null|int $value
  136. *
  137. * @param mixed $value
  138. * @param string $message
  139. *
  140. * @throws InvalidArgumentException
  141. */
  142. public static function nullOrNatural($value, $message = '');
  143. /**
  144. * @psalm-pure
  145. * @psalm-assert iterable<int> $value
  146. *
  147. * @param mixed $value
  148. * @param string $message
  149. *
  150. * @throws InvalidArgumentException
  151. */
  152. public static function allNatural($value, $message = '');
  153. /**
  154. * @psalm-pure
  155. * @psalm-assert null|bool $value
  156. *
  157. * @param mixed $value
  158. * @param string $message
  159. *
  160. * @throws InvalidArgumentException
  161. */
  162. public static function nullOrBoolean($value, $message = '');
  163. /**
  164. * @psalm-pure
  165. * @psalm-assert iterable<bool> $value
  166. *
  167. * @param mixed $value
  168. * @param string $message
  169. *
  170. * @throws InvalidArgumentException
  171. */
  172. public static function allBoolean($value, $message = '');
  173. /**
  174. * @psalm-pure
  175. * @psalm-assert null|scalar $value
  176. *
  177. * @param mixed $value
  178. * @param string $message
  179. *
  180. * @throws InvalidArgumentException
  181. */
  182. public static function nullOrScalar($value, $message = '');
  183. /**
  184. * @psalm-pure
  185. * @psalm-assert iterable<scalar> $value
  186. *
  187. * @param mixed $value
  188. * @param string $message
  189. *
  190. * @throws InvalidArgumentException
  191. */
  192. public static function allScalar($value, $message = '');
  193. /**
  194. * @psalm-pure
  195. * @psalm-assert null|object $value
  196. *
  197. * @param mixed $value
  198. * @param string $message
  199. *
  200. * @throws InvalidArgumentException
  201. */
  202. public static function nullOrObject($value, $message = '');
  203. /**
  204. * @psalm-pure
  205. * @psalm-assert iterable<object> $value
  206. *
  207. * @param mixed $value
  208. * @param string $message
  209. *
  210. * @throws InvalidArgumentException
  211. */
  212. public static function allObject($value, $message = '');
  213. /**
  214. * @psalm-pure
  215. * @psalm-assert null|resource $value
  216. *
  217. * @param mixed $value
  218. * @param string|null $type type of resource this should be. @see https://www.php.net/manual/en/function.get-resource-type.php
  219. * @param string $message
  220. *
  221. * @throws InvalidArgumentException
  222. */
  223. public static function nullOrResource($value, $type = null, $message = '');
  224. /**
  225. * @psalm-pure
  226. * @psalm-assert iterable<resource> $value
  227. *
  228. * @param mixed $value
  229. * @param string|null $type type of resource this should be. @see https://www.php.net/manual/en/function.get-resource-type.php
  230. * @param string $message
  231. *
  232. * @throws InvalidArgumentException
  233. */
  234. public static function allResource($value, $type = null, $message = '');
  235. /**
  236. * @psalm-pure
  237. * @psalm-assert null|callable $value
  238. *
  239. * @param mixed $value
  240. * @param string $message
  241. *
  242. * @throws InvalidArgumentException
  243. */
  244. public static function nullOrIsCallable($value, $message = '');
  245. /**
  246. * @psalm-pure
  247. * @psalm-assert iterable<callable> $value
  248. *
  249. * @param mixed $value
  250. * @param string $message
  251. *
  252. * @throws InvalidArgumentException
  253. */
  254. public static function allIsCallable($value, $message = '');
  255. /**
  256. * @psalm-pure
  257. * @psalm-assert null|array $value
  258. *
  259. * @param mixed $value
  260. * @param string $message
  261. *
  262. * @throws InvalidArgumentException
  263. */
  264. public static function nullOrIsArray($value, $message = '');
  265. /**
  266. * @psalm-pure
  267. * @psalm-assert iterable<array> $value
  268. *
  269. * @param mixed $value
  270. * @param string $message
  271. *
  272. * @throws InvalidArgumentException
  273. */
  274. public static function allIsArray($value, $message = '');
  275. /**
  276. * @psalm-pure
  277. * @psalm-assert null|iterable $value
  278. *
  279. * @deprecated use "isIterable" or "isInstanceOf" instead
  280. *
  281. * @param mixed $value
  282. * @param string $message
  283. *
  284. * @throws InvalidArgumentException
  285. */
  286. public static function nullOrIsTraversable($value, $message = '');
  287. /**
  288. * @psalm-pure
  289. * @psalm-assert iterable<iterable> $value
  290. *
  291. * @deprecated use "isIterable" or "isInstanceOf" instead
  292. *
  293. * @param mixed $value
  294. * @param string $message
  295. *
  296. * @throws InvalidArgumentException
  297. */
  298. public static function allIsTraversable($value, $message = '');
  299. /**
  300. * @psalm-pure
  301. * @psalm-assert null|array|ArrayAccess $value
  302. *
  303. * @param mixed $value
  304. * @param string $message
  305. *
  306. * @throws InvalidArgumentException
  307. */
  308. public static function nullOrIsArrayAccessible($value, $message = '');
  309. /**
  310. * @psalm-pure
  311. * @psalm-assert iterable<array|ArrayAccess> $value
  312. *
  313. * @param mixed $value
  314. * @param string $message
  315. *
  316. * @throws InvalidArgumentException
  317. */
  318. public static function allIsArrayAccessible($value, $message = '');
  319. /**
  320. * @psalm-pure
  321. * @psalm-assert null|countable $value
  322. *
  323. * @param mixed $value
  324. * @param string $message
  325. *
  326. * @throws InvalidArgumentException
  327. */
  328. public static function nullOrIsCountable($value, $message = '');
  329. /**
  330. * @psalm-pure
  331. * @psalm-assert iterable<countable> $value
  332. *
  333. * @param mixed $value
  334. * @param string $message
  335. *
  336. * @throws InvalidArgumentException
  337. */
  338. public static function allIsCountable($value, $message = '');
  339. /**
  340. * @psalm-pure
  341. * @psalm-assert null|iterable $value
  342. *
  343. * @param mixed $value
  344. * @param string $message
  345. *
  346. * @throws InvalidArgumentException
  347. */
  348. public static function nullOrIsIterable($value, $message = '');
  349. /**
  350. * @psalm-pure
  351. * @psalm-assert iterable<iterable> $value
  352. *
  353. * @param mixed $value
  354. * @param string $message
  355. *
  356. * @throws InvalidArgumentException
  357. */
  358. public static function allIsIterable($value, $message = '');
  359. /**
  360. * @psalm-pure
  361. * @psalm-template ExpectedType of object
  362. * @psalm-param class-string<ExpectedType> $class
  363. * @psalm-assert null|ExpectedType $value
  364. *
  365. * @param mixed $value
  366. * @param string|object $class
  367. * @param string $message
  368. *
  369. * @throws InvalidArgumentException
  370. */
  371. public static function nullOrIsInstanceOf($value, $class, $message = '');
  372. /**
  373. * @psalm-pure
  374. * @psalm-template ExpectedType of object
  375. * @psalm-param class-string<ExpectedType> $class
  376. * @psalm-assert iterable<ExpectedType> $value
  377. *
  378. * @param mixed $value
  379. * @param string|object $class
  380. * @param string $message
  381. *
  382. * @throws InvalidArgumentException
  383. */
  384. public static function allIsInstanceOf($value, $class, $message = '');
  385. /**
  386. * @psalm-pure
  387. * @psalm-template ExpectedType of object
  388. * @psalm-param class-string<ExpectedType> $class
  389. *
  390. * @param mixed $value
  391. * @param string|object $class
  392. * @param string $message
  393. *
  394. * @throws InvalidArgumentException
  395. */
  396. public static function nullOrNotInstanceOf($value, $class, $message = '');
  397. /**
  398. * @psalm-pure
  399. * @psalm-template ExpectedType of object
  400. * @psalm-param class-string<ExpectedType> $class
  401. *
  402. * @param mixed $value
  403. * @param string|object $class
  404. * @param string $message
  405. *
  406. * @throws InvalidArgumentException
  407. */
  408. public static function allNotInstanceOf($value, $class, $message = '');
  409. /**
  410. * @psalm-pure
  411. * @psalm-param array<class-string> $classes
  412. *
  413. * @param mixed $value
  414. * @param array<object|string> $classes
  415. * @param string $message
  416. *
  417. * @throws InvalidArgumentException
  418. */
  419. public static function nullOrIsInstanceOfAny($value, $classes, $message = '');
  420. /**
  421. * @psalm-pure
  422. * @psalm-param array<class-string> $classes
  423. *
  424. * @param mixed $value
  425. * @param array<object|string> $classes
  426. * @param string $message
  427. *
  428. * @throws InvalidArgumentException
  429. */
  430. public static function allIsInstanceOfAny($value, $classes, $message = '');
  431. /**
  432. * @psalm-pure
  433. * @psalm-template ExpectedType of object
  434. * @psalm-param class-string<ExpectedType> $class
  435. * @psalm-assert null|ExpectedType|class-string<ExpectedType> $value
  436. *
  437. * @param null|object|string $value
  438. * @param string $class
  439. * @param string $message
  440. *
  441. * @throws InvalidArgumentException
  442. */
  443. public static function nullOrIsAOf($value, $class, $message = '');
  444. /**
  445. * @psalm-pure
  446. * @psalm-template ExpectedType of object
  447. * @psalm-param class-string<ExpectedType> $class
  448. * @psalm-assert iterable<ExpectedType|class-string<ExpectedType>> $value
  449. *
  450. * @param iterable<object|string> $value
  451. * @param string $class
  452. * @param string $message
  453. *
  454. * @throws InvalidArgumentException
  455. */
  456. public static function allIsAOf($value, $class, $message = '');
  457. /**
  458. * @psalm-pure
  459. * @psalm-template UnexpectedType of object
  460. * @psalm-param class-string<UnexpectedType> $class
  461. *
  462. * @param null|object|string $value
  463. * @param string $class
  464. * @param string $message
  465. *
  466. * @throws InvalidArgumentException
  467. */
  468. public static function nullOrIsNotA($value, $class, $message = '');
  469. /**
  470. * @psalm-pure
  471. * @psalm-template UnexpectedType of object
  472. * @psalm-param class-string<UnexpectedType> $class
  473. *
  474. * @param iterable<object|string> $value
  475. * @param string $class
  476. * @param string $message
  477. *
  478. * @throws InvalidArgumentException
  479. */
  480. public static function allIsNotA($value, $class, $message = '');
  481. /**
  482. * @psalm-pure
  483. * @psalm-param array<class-string> $classes
  484. *
  485. * @param null|object|string $value
  486. * @param string[] $classes
  487. * @param string $message
  488. *
  489. * @throws InvalidArgumentException
  490. */
  491. public static function nullOrIsAnyOf($value, $classes, $message = '');
  492. /**
  493. * @psalm-pure
  494. * @psalm-param array<class-string> $classes
  495. *
  496. * @param iterable<object|string> $value
  497. * @param string[] $classes
  498. * @param string $message
  499. *
  500. * @throws InvalidArgumentException
  501. */
  502. public static function allIsAnyOf($value, $classes, $message = '');
  503. /**
  504. * @psalm-pure
  505. * @psalm-assert empty $value
  506. *
  507. * @param mixed $value
  508. * @param string $message
  509. *
  510. * @throws InvalidArgumentException
  511. */
  512. public static function nullOrIsEmpty($value, $message = '');
  513. /**
  514. * @psalm-pure
  515. * @psalm-assert iterable<empty> $value
  516. *
  517. * @param mixed $value
  518. * @param string $message
  519. *
  520. * @throws InvalidArgumentException
  521. */
  522. public static function allIsEmpty($value, $message = '');
  523. /**
  524. * @psalm-pure
  525. *
  526. * @param mixed $value
  527. * @param string $message
  528. *
  529. * @throws InvalidArgumentException
  530. */
  531. public static function nullOrNotEmpty($value, $message = '');
  532. /**
  533. * @psalm-pure
  534. *
  535. * @param mixed $value
  536. * @param string $message
  537. *
  538. * @throws InvalidArgumentException
  539. */
  540. public static function allNotEmpty($value, $message = '');
  541. /**
  542. * @psalm-pure
  543. * @psalm-assert iterable<null> $value
  544. *
  545. * @param mixed $value
  546. * @param string $message
  547. *
  548. * @throws InvalidArgumentException
  549. */
  550. public static function allNull($value, $message = '');
  551. /**
  552. * @psalm-pure
  553. *
  554. * @param mixed $value
  555. * @param string $message
  556. *
  557. * @throws InvalidArgumentException
  558. */
  559. public static function allNotNull($value, $message = '');
  560. /**
  561. * @psalm-pure
  562. * @psalm-assert null|true $value
  563. *
  564. * @param mixed $value
  565. * @param string $message
  566. *
  567. * @throws InvalidArgumentException
  568. */
  569. public static function nullOrTrue($value, $message = '');
  570. /**
  571. * @psalm-pure
  572. * @psalm-assert iterable<true> $value
  573. *
  574. * @param mixed $value
  575. * @param string $message
  576. *
  577. * @throws InvalidArgumentException
  578. */
  579. public static function allTrue($value, $message = '');
  580. /**
  581. * @psalm-pure
  582. * @psalm-assert null|false $value
  583. *
  584. * @param mixed $value
  585. * @param string $message
  586. *
  587. * @throws InvalidArgumentException
  588. */
  589. public static function nullOrFalse($value, $message = '');
  590. /**
  591. * @psalm-pure
  592. * @psalm-assert iterable<false> $value
  593. *
  594. * @param mixed $value
  595. * @param string $message
  596. *
  597. * @throws InvalidArgumentException
  598. */
  599. public static function allFalse($value, $message = '');
  600. /**
  601. * @psalm-pure
  602. *
  603. * @param mixed $value
  604. * @param string $message
  605. *
  606. * @throws InvalidArgumentException
  607. */
  608. public static function nullOrNotFalse($value, $message = '');
  609. /**
  610. * @psalm-pure
  611. *
  612. * @param mixed $value
  613. * @param string $message
  614. *
  615. * @throws InvalidArgumentException
  616. */
  617. public static function allNotFalse($value, $message = '');
  618. /**
  619. * @param mixed $value
  620. * @param string $message
  621. *
  622. * @throws InvalidArgumentException
  623. */
  624. public static function nullOrIp($value, $message = '');
  625. /**
  626. * @param mixed $value
  627. * @param string $message
  628. *
  629. * @throws InvalidArgumentException
  630. */
  631. public static function allIp($value, $message = '');
  632. /**
  633. * @param mixed $value
  634. * @param string $message
  635. *
  636. * @throws InvalidArgumentException
  637. */
  638. public static function nullOrIpv4($value, $message = '');
  639. /**
  640. * @param mixed $value
  641. * @param string $message
  642. *
  643. * @throws InvalidArgumentException
  644. */
  645. public static function allIpv4($value, $message = '');
  646. /**
  647. * @param mixed $value
  648. * @param string $message
  649. *
  650. * @throws InvalidArgumentException
  651. */
  652. public static function nullOrIpv6($value, $message = '');
  653. /**
  654. * @param mixed $value
  655. * @param string $message
  656. *
  657. * @throws InvalidArgumentException
  658. */
  659. public static function allIpv6($value, $message = '');
  660. /**
  661. * @param mixed $value
  662. * @param string $message
  663. *
  664. * @throws InvalidArgumentException
  665. */
  666. public static function nullOrEmail($value, $message = '');
  667. /**
  668. * @param mixed $value
  669. * @param string $message
  670. *
  671. * @throws InvalidArgumentException
  672. */
  673. public static function allEmail($value, $message = '');
  674. /**
  675. * @param null|array $values
  676. * @param string $message
  677. *
  678. * @throws InvalidArgumentException
  679. */
  680. public static function nullOrUniqueValues($values, $message = '');
  681. /**
  682. * @param iterable<array> $values
  683. * @param string $message
  684. *
  685. * @throws InvalidArgumentException
  686. */
  687. public static function allUniqueValues($values, $message = '');
  688. /**
  689. * @param mixed $value
  690. * @param mixed $expect
  691. * @param string $message
  692. *
  693. * @throws InvalidArgumentException
  694. */
  695. public static function nullOrEq($value, $expect, $message = '');
  696. /**
  697. * @param mixed $value
  698. * @param mixed $expect
  699. * @param string $message
  700. *
  701. * @throws InvalidArgumentException
  702. */
  703. public static function allEq($value, $expect, $message = '');
  704. /**
  705. * @param mixed $value
  706. * @param mixed $expect
  707. * @param string $message
  708. *
  709. * @throws InvalidArgumentException
  710. */
  711. public static function nullOrNotEq($value, $expect, $message = '');
  712. /**
  713. * @param mixed $value
  714. * @param mixed $expect
  715. * @param string $message
  716. *
  717. * @throws InvalidArgumentException
  718. */
  719. public static function allNotEq($value, $expect, $message = '');
  720. /**
  721. * @psalm-pure
  722. *
  723. * @param mixed $value
  724. * @param mixed $expect
  725. * @param string $message
  726. *
  727. * @throws InvalidArgumentException
  728. */
  729. public static function nullOrSame($value, $expect, $message = '');
  730. /**
  731. * @psalm-pure
  732. *
  733. * @param mixed $value
  734. * @param mixed $expect
  735. * @param string $message
  736. *
  737. * @throws InvalidArgumentException
  738. */
  739. public static function allSame($value, $expect, $message = '');
  740. /**
  741. * @psalm-pure
  742. *
  743. * @param mixed $value
  744. * @param mixed $expect
  745. * @param string $message
  746. *
  747. * @throws InvalidArgumentException
  748. */
  749. public static function nullOrNotSame($value, $expect, $message = '');
  750. /**
  751. * @psalm-pure
  752. *
  753. * @param mixed $value
  754. * @param mixed $expect
  755. * @param string $message
  756. *
  757. * @throws InvalidArgumentException
  758. */
  759. public static function allNotSame($value, $expect, $message = '');
  760. /**
  761. * @psalm-pure
  762. *
  763. * @param mixed $value
  764. * @param mixed $limit
  765. * @param string $message
  766. *
  767. * @throws InvalidArgumentException
  768. */
  769. public static function nullOrGreaterThan($value, $limit, $message = '');
  770. /**
  771. * @psalm-pure
  772. *
  773. * @param mixed $value
  774. * @param mixed $limit
  775. * @param string $message
  776. *
  777. * @throws InvalidArgumentException
  778. */
  779. public static function allGreaterThan($value, $limit, $message = '');
  780. /**
  781. * @psalm-pure
  782. *
  783. * @param mixed $value
  784. * @param mixed $limit
  785. * @param string $message
  786. *
  787. * @throws InvalidArgumentException
  788. */
  789. public static function nullOrGreaterThanEq($value, $limit, $message = '');
  790. /**
  791. * @psalm-pure
  792. *
  793. * @param mixed $value
  794. * @param mixed $limit
  795. * @param string $message
  796. *
  797. * @throws InvalidArgumentException
  798. */
  799. public static function allGreaterThanEq($value, $limit, $message = '');
  800. /**
  801. * @psalm-pure
  802. *
  803. * @param mixed $value
  804. * @param mixed $limit
  805. * @param string $message
  806. *
  807. * @throws InvalidArgumentException
  808. */
  809. public static function nullOrLessThan($value, $limit, $message = '');
  810. /**
  811. * @psalm-pure
  812. *
  813. * @param mixed $value
  814. * @param mixed $limit
  815. * @param string $message
  816. *
  817. * @throws InvalidArgumentException
  818. */
  819. public static function allLessThan($value, $limit, $message = '');
  820. /**
  821. * @psalm-pure
  822. *
  823. * @param mixed $value
  824. * @param mixed $limit
  825. * @param string $message
  826. *
  827. * @throws InvalidArgumentException
  828. */
  829. public static function nullOrLessThanEq($value, $limit, $message = '');
  830. /**
  831. * @psalm-pure
  832. *
  833. * @param mixed $value
  834. * @param mixed $limit
  835. * @param string $message
  836. *
  837. * @throws InvalidArgumentException
  838. */
  839. public static function allLessThanEq($value, $limit, $message = '');
  840. /**
  841. * @psalm-pure
  842. *
  843. * @param mixed $value
  844. * @param mixed $min
  845. * @param mixed $max
  846. * @param string $message
  847. *
  848. * @throws InvalidArgumentException
  849. */
  850. public static function nullOrRange($value, $min, $max, $message = '');
  851. /**
  852. * @psalm-pure
  853. *
  854. * @param mixed $value
  855. * @param mixed $min
  856. * @param mixed $max
  857. * @param string $message
  858. *
  859. * @throws InvalidArgumentException
  860. */
  861. public static function allRange($value, $min, $max, $message = '');
  862. /**
  863. * @psalm-pure
  864. *
  865. * @param mixed $value
  866. * @param array $values
  867. * @param string $message
  868. *
  869. * @throws InvalidArgumentException
  870. */
  871. public static function nullOrOneOf($value, $values, $message = '');
  872. /**
  873. * @psalm-pure
  874. *
  875. * @param mixed $value
  876. * @param array $values
  877. * @param string $message
  878. *
  879. * @throws InvalidArgumentException
  880. */
  881. public static function allOneOf($value, $values, $message = '');
  882. /**
  883. * @psalm-pure
  884. *
  885. * @param mixed $value
  886. * @param array $values
  887. * @param string $message
  888. *
  889. * @throws InvalidArgumentException
  890. */
  891. public static function nullOrInArray($value, $values, $message = '');
  892. /**
  893. * @psalm-pure
  894. *
  895. * @param mixed $value
  896. * @param array $values
  897. * @param string $message
  898. *
  899. * @throws InvalidArgumentException
  900. */
  901. public static function allInArray($value, $values, $message = '');
  902. /**
  903. * @psalm-pure
  904. *
  905. * @param null|string $value
  906. * @param string $subString
  907. * @param string $message
  908. *
  909. * @throws InvalidArgumentException
  910. */
  911. public static function nullOrContains($value, $subString, $message = '');
  912. /**
  913. * @psalm-pure
  914. *
  915. * @param iterable<string> $value
  916. * @param string $subString
  917. * @param string $message
  918. *
  919. * @throws InvalidArgumentException
  920. */
  921. public static function allContains($value, $subString, $message = '');
  922. /**
  923. * @psalm-pure
  924. *
  925. * @param null|string $value
  926. * @param string $subString
  927. * @param string $message
  928. *
  929. * @throws InvalidArgumentException
  930. */
  931. public static function nullOrNotContains($value, $subString, $message = '');
  932. /**
  933. * @psalm-pure
  934. *
  935. * @param iterable<string> $value
  936. * @param string $subString
  937. * @param string $message
  938. *
  939. * @throws InvalidArgumentException
  940. */
  941. public static function allNotContains($value, $subString, $message = '');
  942. /**
  943. * @psalm-pure
  944. *
  945. * @param null|string $value
  946. * @param string $message
  947. *
  948. * @throws InvalidArgumentException
  949. */
  950. public static function nullOrNotWhitespaceOnly($value, $message = '');
  951. /**
  952. * @psalm-pure
  953. *
  954. * @param iterable<string> $value
  955. * @param string $message
  956. *
  957. * @throws InvalidArgumentException
  958. */
  959. public static function allNotWhitespaceOnly($value, $message = '');
  960. /**
  961. * @psalm-pure
  962. *
  963. * @param null|string $value
  964. * @param string $prefix
  965. * @param string $message
  966. *
  967. * @throws InvalidArgumentException
  968. */
  969. public static function nullOrStartsWith($value, $prefix, $message = '');
  970. /**
  971. * @psalm-pure
  972. *
  973. * @param iterable<string> $value
  974. * @param string $prefix
  975. * @param string $message
  976. *
  977. * @throws InvalidArgumentException
  978. */
  979. public static function allStartsWith($value, $prefix, $message = '');
  980. /**
  981. * @psalm-pure
  982. *
  983. * @param null|string $value
  984. * @param string $prefix
  985. * @param string $message
  986. *
  987. * @throws InvalidArgumentException
  988. */
  989. public static function nullOrNotStartsWith($value, $prefix, $message = '');
  990. /**
  991. * @psalm-pure
  992. *
  993. * @param iterable<string> $value
  994. * @param string $prefix
  995. * @param string $message
  996. *
  997. * @throws InvalidArgumentException
  998. */
  999. public static function allNotStartsWith($value, $prefix, $message = '');
  1000. /**
  1001. * @psalm-pure
  1002. *
  1003. * @param mixed $value
  1004. * @param string $message
  1005. *
  1006. * @throws InvalidArgumentException
  1007. */
  1008. public static function nullOrStartsWithLetter($value, $message = '');
  1009. /**
  1010. * @psalm-pure
  1011. *
  1012. * @param mixed $value
  1013. * @param string $message
  1014. *
  1015. * @throws InvalidArgumentException
  1016. */
  1017. public static function allStartsWithLetter($value, $message = '');
  1018. /**
  1019. * @psalm-pure
  1020. *
  1021. * @param null|string $value
  1022. * @param string $suffix
  1023. * @param string $message
  1024. *
  1025. * @throws InvalidArgumentException
  1026. */
  1027. public static function nullOrEndsWith($value, $suffix, $message = '');
  1028. /**
  1029. * @psalm-pure
  1030. *
  1031. * @param iterable<string> $value
  1032. * @param string $suffix
  1033. * @param string $message
  1034. *
  1035. * @throws InvalidArgumentException
  1036. */
  1037. public static function allEndsWith($value, $suffix, $message = '');
  1038. /**
  1039. * @psalm-pure
  1040. *
  1041. * @param null|string $value
  1042. * @param string $suffix
  1043. * @param string $message
  1044. *
  1045. * @throws InvalidArgumentException
  1046. */
  1047. public static function nullOrNotEndsWith($value, $suffix, $message = '');
  1048. /**
  1049. * @psalm-pure
  1050. *
  1051. * @param iterable<string> $value
  1052. * @param string $suffix
  1053. * @param string $message
  1054. *
  1055. * @throws InvalidArgumentException
  1056. */
  1057. public static function allNotEndsWith($value, $suffix, $message = '');
  1058. /**
  1059. * @psalm-pure
  1060. *
  1061. * @param null|string $value
  1062. * @param string $pattern
  1063. * @param string $message
  1064. *
  1065. * @throws InvalidArgumentException
  1066. */
  1067. public static function nullOrRegex($value, $pattern, $message = '');
  1068. /**
  1069. * @psalm-pure
  1070. *
  1071. * @param iterable<string> $value
  1072. * @param string $pattern
  1073. * @param string $message
  1074. *
  1075. * @throws InvalidArgumentException
  1076. */
  1077. public static function allRegex($value, $pattern, $message = '');
  1078. /**
  1079. * @psalm-pure
  1080. *
  1081. * @param null|string $value
  1082. * @param string $pattern
  1083. * @param string $message
  1084. *
  1085. * @throws InvalidArgumentException
  1086. */
  1087. public static function nullOrNotRegex($value, $pattern, $message = '');
  1088. /**
  1089. * @psalm-pure
  1090. *
  1091. * @param iterable<string> $value
  1092. * @param string $pattern
  1093. * @param string $message
  1094. *
  1095. * @throws InvalidArgumentException
  1096. */
  1097. public static function allNotRegex($value, $pattern, $message = '');
  1098. /**
  1099. * @psalm-pure
  1100. *
  1101. * @param mixed $value
  1102. * @param string $message
  1103. *
  1104. * @throws InvalidArgumentException
  1105. */
  1106. public static function nullOrUnicodeLetters($value, $message = '');
  1107. /**
  1108. * @psalm-pure
  1109. *
  1110. * @param mixed $value
  1111. * @param string $message
  1112. *
  1113. * @throws InvalidArgumentException
  1114. */
  1115. public static function allUnicodeLetters($value, $message = '');
  1116. /**
  1117. * @psalm-pure
  1118. *
  1119. * @param mixed $value
  1120. * @param string $message
  1121. *
  1122. * @throws InvalidArgumentException
  1123. */
  1124. public static function nullOrAlpha($value, $message = '');
  1125. /**
  1126. * @psalm-pure
  1127. *
  1128. * @param mixed $value
  1129. * @param string $message
  1130. *
  1131. * @throws InvalidArgumentException
  1132. */
  1133. public static function allAlpha($value, $message = '');
  1134. /**
  1135. * @psalm-pure
  1136. *
  1137. * @param null|string $value
  1138. * @param string $message
  1139. *
  1140. * @throws InvalidArgumentException
  1141. */
  1142. public static function nullOrDigits($value, $message = '');
  1143. /**
  1144. * @psalm-pure
  1145. *
  1146. * @param iterable<string> $value
  1147. * @param string $message
  1148. *
  1149. * @throws InvalidArgumentException
  1150. */
  1151. public static function allDigits($value, $message = '');
  1152. /**
  1153. * @psalm-pure
  1154. *
  1155. * @param null|string $value
  1156. * @param string $message
  1157. *
  1158. * @throws InvalidArgumentException
  1159. */
  1160. public static function nullOrAlnum($value, $message = '');
  1161. /**
  1162. * @psalm-pure
  1163. *
  1164. * @param iterable<string> $value
  1165. * @param string $message
  1166. *
  1167. * @throws InvalidArgumentException
  1168. */
  1169. public static function allAlnum($value, $message = '');
  1170. /**
  1171. * @psalm-pure
  1172. * @psalm-assert null|lowercase-string $value
  1173. *
  1174. * @param null|string $value
  1175. * @param string $message
  1176. *
  1177. * @throws InvalidArgumentException
  1178. */
  1179. public static function nullOrLower($value, $message = '');
  1180. /**
  1181. * @psalm-pure
  1182. * @psalm-assert iterable<lowercase-string> $value
  1183. *
  1184. * @param iterable<string> $value
  1185. * @param string $message
  1186. *
  1187. * @throws InvalidArgumentException
  1188. */
  1189. public static function allLower($value, $message = '');
  1190. /**
  1191. * @psalm-pure
  1192. *
  1193. * @param null|string $value
  1194. * @param string $message
  1195. *
  1196. * @throws InvalidArgumentException
  1197. */
  1198. public static function nullOrUpper($value, $message = '');
  1199. /**
  1200. * @psalm-pure
  1201. *
  1202. * @param iterable<string> $value
  1203. * @param string $message
  1204. *
  1205. * @throws InvalidArgumentException
  1206. */
  1207. public static function allUpper($value, $message = '');
  1208. /**
  1209. * @psalm-pure
  1210. *
  1211. * @param null|string $value
  1212. * @param int $length
  1213. * @param string $message
  1214. *
  1215. * @throws InvalidArgumentException
  1216. */
  1217. public static function nullOrLength($value, $length, $message = '');
  1218. /**
  1219. * @psalm-pure
  1220. *
  1221. * @param iterable<string> $value
  1222. * @param int $length
  1223. * @param string $message
  1224. *
  1225. * @throws InvalidArgumentException
  1226. */
  1227. public static function allLength($value, $length, $message = '');
  1228. /**
  1229. * @psalm-pure
  1230. *
  1231. * @param null|string $value
  1232. * @param int|float $min
  1233. * @param string $message
  1234. *
  1235. * @throws InvalidArgumentException
  1236. */
  1237. public static function nullOrMinLength($value, $min, $message = '');
  1238. /**
  1239. * @psalm-pure
  1240. *
  1241. * @param iterable<string> $value
  1242. * @param int|float $min
  1243. * @param string $message
  1244. *
  1245. * @throws InvalidArgumentException
  1246. */
  1247. public static function allMinLength($value, $min, $message = '');
  1248. /**
  1249. * @psalm-pure
  1250. *
  1251. * @param null|string $value
  1252. * @param int|float $max
  1253. * @param string $message
  1254. *
  1255. * @throws InvalidArgumentException
  1256. */
  1257. public static function nullOrMaxLength($value, $max, $message = '');
  1258. /**
  1259. * @psalm-pure
  1260. *
  1261. * @param iterable<string> $value
  1262. * @param int|float $max
  1263. * @param string $message
  1264. *
  1265. * @throws InvalidArgumentException
  1266. */
  1267. public static function allMaxLength($value, $max, $message = '');
  1268. /**
  1269. * @psalm-pure
  1270. *
  1271. * @param null|string $value
  1272. * @param int|float $min
  1273. * @param int|float $max
  1274. * @param string $message
  1275. *
  1276. * @throws InvalidArgumentException
  1277. */
  1278. public static function nullOrLengthBetween($value, $min, $max, $message = '');
  1279. /**
  1280. * @psalm-pure
  1281. *
  1282. * @param iterable<string> $value
  1283. * @param int|float $min
  1284. * @param int|float $max
  1285. * @param string $message
  1286. *
  1287. * @throws InvalidArgumentException
  1288. */
  1289. public static function allLengthBetween($value, $min, $max, $message = '');
  1290. /**
  1291. * @param mixed $value
  1292. * @param string $message
  1293. *
  1294. * @throws InvalidArgumentException
  1295. */
  1296. public static function nullOrFileExists($value, $message = '');
  1297. /**
  1298. * @param mixed $value
  1299. * @param string $message
  1300. *
  1301. * @throws InvalidArgumentException
  1302. */
  1303. public static function allFileExists($value, $message = '');
  1304. /**
  1305. * @param mixed $value
  1306. * @param string $message
  1307. *
  1308. * @throws InvalidArgumentException
  1309. */
  1310. public static function nullOrFile($value, $message = '');
  1311. /**
  1312. * @param mixed $value
  1313. * @param string $message
  1314. *
  1315. * @throws InvalidArgumentException
  1316. */
  1317. public static function allFile($value, $message = '');
  1318. /**
  1319. * @param mixed $value
  1320. * @param string $message
  1321. *
  1322. * @throws InvalidArgumentException
  1323. */
  1324. public static function nullOrDirectory($value, $message = '');
  1325. /**
  1326. * @param mixed $value
  1327. * @param string $message
  1328. *
  1329. * @throws InvalidArgumentException
  1330. */
  1331. public static function allDirectory($value, $message = '');
  1332. /**
  1333. * @param null|string $value
  1334. * @param string $message
  1335. *
  1336. * @throws InvalidArgumentException
  1337. */
  1338. public static function nullOrReadable($value, $message = '');
  1339. /**
  1340. * @param iterable<string> $value
  1341. * @param string $message
  1342. *
  1343. * @throws InvalidArgumentException
  1344. */
  1345. public static function allReadable($value, $message = '');
  1346. /**
  1347. * @param null|string $value
  1348. * @param string $message
  1349. *
  1350. * @throws InvalidArgumentException
  1351. */
  1352. public static function nullOrWritable($value, $message = '');
  1353. /**
  1354. * @param iterable<string> $value
  1355. * @param string $message
  1356. *
  1357. * @throws InvalidArgumentException
  1358. */
  1359. public static function allWritable($value, $message = '');
  1360. /**
  1361. * @psalm-assert null|class-string $value
  1362. *
  1363. * @param mixed $value
  1364. * @param string $message
  1365. *
  1366. * @throws InvalidArgumentException
  1367. */
  1368. public static function nullOrClassExists($value, $message = '');
  1369. /**
  1370. * @psalm-assert iterable<class-string> $value
  1371. *
  1372. * @param mixed $value
  1373. * @param string $message
  1374. *
  1375. * @throws InvalidArgumentException
  1376. */
  1377. public static function allClassExists($value, $message = '');
  1378. /**
  1379. * @psalm-pure
  1380. * @psalm-template ExpectedType of object
  1381. * @psalm-param class-string<ExpectedType> $class
  1382. * @psalm-assert null|class-string<ExpectedType>|ExpectedType $value
  1383. *
  1384. * @param mixed $value
  1385. * @param string|object $class
  1386. * @param string $message
  1387. *
  1388. * @throws InvalidArgumentException
  1389. */
  1390. public static function nullOrSubclassOf($value, $class, $message = '');
  1391. /**
  1392. * @psalm-pure
  1393. * @psalm-template ExpectedType of object
  1394. * @psalm-param class-string<ExpectedType> $class
  1395. * @psalm-assert iterable<class-string<ExpectedType>|ExpectedType> $value
  1396. *
  1397. * @param mixed $value
  1398. * @param string|object $class
  1399. * @param string $message
  1400. *
  1401. * @throws InvalidArgumentException
  1402. */
  1403. public static function allSubclassOf($value, $class, $message = '');
  1404. /**
  1405. * @psalm-assert null|class-string $value
  1406. *
  1407. * @param mixed $value
  1408. * @param string $message
  1409. *
  1410. * @throws InvalidArgumentException
  1411. */
  1412. public static function nullOrInterfaceExists($value, $message = '');
  1413. /**
  1414. * @psalm-assert iterable<class-string> $value
  1415. *
  1416. * @param mixed $value
  1417. * @param string $message
  1418. *
  1419. * @throws InvalidArgumentException
  1420. */
  1421. public static function allInterfaceExists($value, $message = '');
  1422. /**
  1423. * @psalm-pure
  1424. * @psalm-template ExpectedType of object
  1425. * @psalm-param class-string<ExpectedType> $interface
  1426. * @psalm-assert null|class-string<ExpectedType> $value
  1427. *
  1428. * @param mixed $value
  1429. * @param mixed $interface
  1430. * @param string $message
  1431. *
  1432. * @throws InvalidArgumentException
  1433. */
  1434. public static function nullOrImplementsInterface($value, $interface, $message = '');
  1435. /**
  1436. * @psalm-pure
  1437. * @psalm-template ExpectedType of object
  1438. * @psalm-param class-string<ExpectedType> $interface
  1439. * @psalm-assert iterable<class-string<ExpectedType>> $value
  1440. *
  1441. * @param mixed $value
  1442. * @param mixed $interface
  1443. * @param string $message
  1444. *
  1445. * @throws InvalidArgumentException
  1446. */
  1447. public static function allImplementsInterface($value, $interface, $message = '');
  1448. /**
  1449. * @psalm-pure
  1450. * @psalm-param null|class-string|object $classOrObject
  1451. *
  1452. * @param null|string|object $classOrObject
  1453. * @param mixed $property
  1454. * @param string $message
  1455. *
  1456. * @throws InvalidArgumentException
  1457. */
  1458. public static function nullOrPropertyExists($classOrObject, $property, $message = '');
  1459. /**
  1460. * @psalm-pure
  1461. * @psalm-param iterable<class-string|object> $classOrObject
  1462. *
  1463. * @param iterable<string|object> $classOrObject
  1464. * @param mixed $property
  1465. * @param string $message
  1466. *
  1467. * @throws InvalidArgumentException
  1468. */
  1469. public static function allPropertyExists($classOrObject, $property, $message = '');
  1470. /**
  1471. * @psalm-pure
  1472. * @psalm-param null|class-string|object $classOrObject
  1473. *
  1474. * @param null|string|object $classOrObject
  1475. * @param mixed $property
  1476. * @param string $message
  1477. *
  1478. * @throws InvalidArgumentException
  1479. */
  1480. public static function nullOrPropertyNotExists($classOrObject, $property, $message = '');
  1481. /**
  1482. * @psalm-pure
  1483. * @psalm-param iterable<class-string|object> $classOrObject
  1484. *
  1485. * @param iterable<string|object> $classOrObject
  1486. * @param mixed $property
  1487. * @param string $message
  1488. *
  1489. * @throws InvalidArgumentException
  1490. */
  1491. public static function allPropertyNotExists($classOrObject, $property, $message = '');
  1492. /**
  1493. * @psalm-pure
  1494. * @psalm-param null|class-string|object $classOrObject
  1495. *
  1496. * @param null|string|object $classOrObject
  1497. * @param mixed $method
  1498. * @param string $message
  1499. *
  1500. * @throws InvalidArgumentException
  1501. */
  1502. public static function nullOrMethodExists($classOrObject, $method, $message = '');
  1503. /**
  1504. * @psalm-pure
  1505. * @psalm-param iterable<class-string|object> $classOrObject
  1506. *
  1507. * @param iterable<string|object> $classOrObject
  1508. * @param mixed $method
  1509. * @param string $message
  1510. *
  1511. * @throws InvalidArgumentException
  1512. */
  1513. public static function allMethodExists($classOrObject, $method, $message = '');
  1514. /**
  1515. * @psalm-pure
  1516. * @psalm-param null|class-string|object $classOrObject
  1517. *
  1518. * @param null|string|object $classOrObject
  1519. * @param mixed $method
  1520. * @param string $message
  1521. *
  1522. * @throws InvalidArgumentException
  1523. */
  1524. public static function nullOrMethodNotExists($classOrObject, $method, $message = '');
  1525. /**
  1526. * @psalm-pure
  1527. * @psalm-param iterable<class-string|object> $classOrObject
  1528. *
  1529. * @param iterable<string|object> $classOrObject
  1530. * @param mixed $method
  1531. * @param string $message
  1532. *
  1533. * @throws InvalidArgumentException
  1534. */
  1535. public static function allMethodNotExists($classOrObject, $method, $message = '');
  1536. /**
  1537. * @psalm-pure
  1538. *
  1539. * @param null|array $array
  1540. * @param string|int $key
  1541. * @param string $message
  1542. *
  1543. * @throws InvalidArgumentException
  1544. */
  1545. public static function nullOrKeyExists($array, $key, $message = '');
  1546. /**
  1547. * @psalm-pure
  1548. *
  1549. * @param iterable<array> $array
  1550. * @param string|int $key
  1551. * @param string $message
  1552. *
  1553. * @throws InvalidArgumentException
  1554. */
  1555. public static function allKeyExists($array, $key, $message = '');
  1556. /**
  1557. * @psalm-pure
  1558. *
  1559. * @param null|array $array
  1560. * @param string|int $key
  1561. * @param string $message
  1562. *
  1563. * @throws InvalidArgumentException
  1564. */
  1565. public static function nullOrKeyNotExists($array, $key, $message = '');
  1566. /**
  1567. * @psalm-pure
  1568. *
  1569. * @param iterable<array> $array
  1570. * @param string|int $key
  1571. * @param string $message
  1572. *
  1573. * @throws InvalidArgumentException
  1574. */
  1575. public static function allKeyNotExists($array, $key, $message = '');
  1576. /**
  1577. * @psalm-pure
  1578. * @psalm-assert null|array-key $value
  1579. *
  1580. * @param mixed $value
  1581. * @param string $message
  1582. *
  1583. * @throws InvalidArgumentException
  1584. */
  1585. public static function nullOrValidArrayKey($value, $message = '');
  1586. /**
  1587. * @psalm-pure
  1588. * @psalm-assert iterable<array-key> $value
  1589. *
  1590. * @param mixed $value
  1591. * @param string $message
  1592. *
  1593. * @throws InvalidArgumentException
  1594. */
  1595. public static function allValidArrayKey($value, $message = '');
  1596. /**
  1597. * @param null|Countable|array $array
  1598. * @param int $number
  1599. * @param string $message
  1600. *
  1601. * @throws InvalidArgumentException
  1602. */
  1603. public static function nullOrCount($array, $number, $message = '');
  1604. /**
  1605. * @param iterable<Countable|array> $array
  1606. * @param int $number
  1607. * @param string $message
  1608. *
  1609. * @throws InvalidArgumentException
  1610. */
  1611. public static function allCount($array, $number, $message = '');
  1612. /**
  1613. * @param null|Countable|array $array
  1614. * @param int|float $min
  1615. * @param string $message
  1616. *
  1617. * @throws InvalidArgumentException
  1618. */
  1619. public static function nullOrMinCount($array, $min, $message = '');
  1620. /**
  1621. * @param iterable<Countable|array> $array
  1622. * @param int|float $min
  1623. * @param string $message
  1624. *
  1625. * @throws InvalidArgumentException
  1626. */
  1627. public static function allMinCount($array, $min, $message = '');
  1628. /**
  1629. * @param null|Countable|array $array
  1630. * @param int|float $max
  1631. * @param string $message
  1632. *
  1633. * @throws InvalidArgumentException
  1634. */
  1635. public static function nullOrMaxCount($array, $max, $message = '');
  1636. /**
  1637. * @param iterable<Countable|array> $array
  1638. * @param int|float $max
  1639. * @param string $message
  1640. *
  1641. * @throws InvalidArgumentException
  1642. */
  1643. public static function allMaxCount($array, $max, $message = '');
  1644. /**
  1645. * @param null|Countable|array $array
  1646. * @param int|float $min
  1647. * @param int|float $max
  1648. * @param string $message
  1649. *
  1650. * @throws InvalidArgumentException
  1651. */
  1652. public static function nullOrCountBetween($array, $min, $max, $message = '');
  1653. /**
  1654. * @param iterable<Countable|array> $array
  1655. * @param int|float $min
  1656. * @param int|float $max
  1657. * @param string $message
  1658. *
  1659. * @throws InvalidArgumentException
  1660. */
  1661. public static function allCountBetween($array, $min, $max, $message = '');
  1662. /**
  1663. * @psalm-pure
  1664. * @psalm-assert null|list $array
  1665. *
  1666. * @param mixed $array
  1667. * @param string $message
  1668. *
  1669. * @throws InvalidArgumentException
  1670. */
  1671. public static function nullOrIsList($array, $message = '');
  1672. /**
  1673. * @psalm-pure
  1674. * @psalm-assert iterable<list> $array
  1675. *
  1676. * @param mixed $array
  1677. * @param string $message
  1678. *
  1679. * @throws InvalidArgumentException
  1680. */
  1681. public static function allIsList($array, $message = '');
  1682. /**
  1683. * @psalm-pure
  1684. * @psalm-assert null|non-empty-list $array
  1685. *
  1686. * @param mixed $array
  1687. * @param string $message
  1688. *
  1689. * @throws InvalidArgumentException
  1690. */
  1691. public static function nullOrIsNonEmptyList($array, $message = '');
  1692. /**
  1693. * @psalm-pure
  1694. * @psalm-assert iterable<non-empty-list> $array
  1695. *
  1696. * @param mixed $array
  1697. * @param string $message
  1698. *
  1699. * @throws InvalidArgumentException
  1700. */
  1701. public static function allIsNonEmptyList($array, $message = '');
  1702. /**
  1703. * @psalm-pure
  1704. * @psalm-template T
  1705. * @psalm-param null|mixed|array<T> $array
  1706. * @psalm-assert null|array<string, T> $array
  1707. *
  1708. * @param mixed $array
  1709. * @param string $message
  1710. *
  1711. * @throws InvalidArgumentException
  1712. */
  1713. public static function nullOrIsMap($array, $message = '');
  1714. /**
  1715. * @psalm-pure
  1716. * @psalm-template T
  1717. * @psalm-param iterable<mixed|array<T>> $array
  1718. * @psalm-assert iterable<array<string, T>> $array
  1719. *
  1720. * @param mixed $array
  1721. * @param string $message
  1722. *
  1723. * @throws InvalidArgumentException
  1724. */
  1725. public static function allIsMap($array, $message = '');
  1726. /**
  1727. * @psalm-pure
  1728. * @psalm-template T
  1729. * @psalm-param null|mixed|array<T> $array
  1730. *
  1731. * @param mixed $array
  1732. * @param string $message
  1733. *
  1734. * @throws InvalidArgumentException
  1735. */
  1736. public static function nullOrIsNonEmptyMap($array, $message = '');
  1737. /**
  1738. * @psalm-pure
  1739. * @psalm-template T
  1740. * @psalm-param iterable<mixed|array<T>> $array
  1741. *
  1742. * @param mixed $array
  1743. * @param string $message
  1744. *
  1745. * @throws InvalidArgumentException
  1746. */
  1747. public static function allIsNonEmptyMap($array, $message = '');
  1748. /**
  1749. * @psalm-pure
  1750. *
  1751. * @param null|string $value
  1752. * @param string $message
  1753. *
  1754. * @throws InvalidArgumentException
  1755. */
  1756. public static function nullOrUuid($value, $message = '');
  1757. /**
  1758. * @psalm-pure
  1759. *
  1760. * @param iterable<string> $value
  1761. * @param string $message
  1762. *
  1763. * @throws InvalidArgumentException
  1764. */
  1765. public static function allUuid($value, $message = '');
  1766. /**
  1767. * @psalm-param class-string<Throwable> $class
  1768. *
  1769. * @param null|Closure $expression
  1770. * @param string $class
  1771. * @param string $message
  1772. *
  1773. * @throws InvalidArgumentException
  1774. */
  1775. public static function nullOrThrows($expression, $class = 'Exception', $message = '');
  1776. /**
  1777. * @psalm-param class-string<Throwable> $class
  1778. *
  1779. * @param iterable<Closure> $expression
  1780. * @param string $class
  1781. * @param string $message
  1782. *
  1783. * @throws InvalidArgumentException
  1784. */
  1785. public static function allThrows($expression, $class = 'Exception', $message = '');
  1786. }