@@ -276,6 +276,21 @@ private static function getExpressionResolvers(): array
276276 'ObjectHasAttribute ' => static function (Scope $ scope , Arg $ property , Arg $ object ): FuncCall {
277277 return new FuncCall (new Name ('property_exists ' ), [$ object , $ property ]);
278278 },
279+ 'Contains ' => static function (Scope $ scope , Arg $ needle , Arg $ haystack ): Expr {
280+ return new Expr \BinaryOp \BooleanOr (
281+ new Expr \Instanceof_ ($ haystack ->value , new Name ('Traversable ' )),
282+ new FuncCall (new Name ('in_array ' ), [$ needle , $ haystack , new Arg (new ConstFetch (new Name ('true ' )))])
283+ );
284+ },
285+ 'ContainsEquals ' => static function (Scope $ scope , Arg $ needle , Arg $ haystack ): Expr {
286+ return new Expr \BinaryOp \BooleanOr (
287+ new Expr \Instanceof_ ($ haystack ->value , new Name ('Traversable ' )),
288+ new Expr \BinaryOp \BooleanAnd (
289+ new Expr \BooleanNot (new Expr \Empty_ ($ haystack ->value )),
290+ new FuncCall (new Name ('in_array ' ), [$ needle , $ haystack , new Arg (new ConstFetch (new Name ('false ' )))])
291+ )
292+ );
293+ },
279294 'ContainsOnlyInstancesOf ' => static function (Scope $ scope , Arg $ className , Arg $ haystack ): Expr {
280295 return new Expr \BinaryOp \BooleanOr (
281296 new Expr \Instanceof_ ($ haystack ->value , new Name ('Traversable ' )),
0 commit comments