El problema es que empty() es un language construct, no una función como tal, por eso falla, lo que se puede hacer para ahorrar código es:
Ya que trim() opera sobre strings por lo cual es posible evaluarlo y compararlo contra una cadena vacia.
Saludos.