Entonces no sabes de DQL, puedes usar DQL, o un query para hacerlo, es por eso que debes de abstraer eso, tu método getApps debe de ser un proxy a un modelo que traiga los datos desde la BDD, eso se conoce como "lazy loading", cualquier framework decente lo hace, o bien puedes tú programar eso que traiga solo las apps activas.
Nada te limita tampoco a que le pases parámetros a tu método de getApps como el offset y la cantidad de apps a cargar, para eso las funciones aceptan parámetros, para cambiar el comportamiento de la función, y no es necesario traer toda la base de datos para eso, sí lo haces así actualmente pues vas a tener un problema muy grave de rendimiento cuando tu sistema sea muy grande.
Te invito un poco a que leas bien sobre usar un ORM como Doctrine y estudies usar DQL, aunque también lo puedes hacer programandolo tú, pero es más trabajo y mejor usa SQL para ello, para eso existe, solo es cuestión de que separes bien las capas, ej:
Código PHP:
Ver originalclass User {
public function getApps($bActive = false, $offset = 0)
{
$appsDAO = DAO::factory('Apps');
return $appsDAO->getAppsByUser($this, $bActive, $offset);
}
}
Posibilidades hay muchas, formas de hacerlo también hay muchas, como te digo, todo depende de como hagas esa abstracción, y las decisiones que tomes como arquitecto de software.
Saludos.