You can add custom functions to the Expression Language for use with the if parameter.
#[Route('/post/{id<\d+>}', name: 'post_details', methods: 'GET')]
#[PurgeOn(Post::class, if: 'should_purge(obj)')]
public function detailsAction(Post $post)
{
}
To enable this functionality, make sure your service is tagged correctly in the service configuration:
# services.yaml
App\ShouldPurge:
    tags:
        - { name: 'purgatory.expression_language_function', function: should_purge }
Alternatively, you can use the #[AsExpressionLanguageFunction] attribute directly in the service class:
use Sofascore\PurgatoryBundle\Attribute\AsExpressionLanguageFunction;
#[AsExpressionLanguageFunction('should_purge')]
class ShouldPurge
{
    public function __invoke(Post $post)
    {
        // Define your custom logic here
    }
}