Klassen

So wie Funktionen, sollten die Klassen ausserhalb des Web-Roots liegen.
Ich verwende sogar einen eigenen Ordner dafür.
Zusätzlich sollte jede Klasse in einer eigenen Datei sein, um so das Ganze auseinander zu halten.
Ich gehe sogar so weit, dass jede Klassen-Datei einen Prefix im Namen hat.

Da nicht immer jede Klasse zu jedem Zeitpunkt verwendet wird, kann man sich einen Weg überlegen wie man diese includiert.
Mein Ansatz ist, so wie bei den Funktionen, Dateien zu schnüren, die je nach Gebiet eingebunden werden.

Warum Klassen?

Generell kann man alles in eine Klasse legen, das geht so das ein System nur mehr aus Klassen besteht, dies hat zB THboard bewiesen.
Wenn man nun PHP her nimmt, macht es in den Versionen unter 5, kaum Sinn welche zu Erstellen, da diese nach dem Seitenaufbau wieder verworfen werden, und bei nächsten, wieder gestartet werden.
Ab PHP 5 soll es möglich sein Klassen über mehrere Seiten hinweg weiter zuführen.
Dies bedeutet aber nicht, dass es kein Sinn macht.
Ein grosser Vorteile einer Klasse ist, das man eine klare definierte Schnittstelle zum restlichen Code hat.
Im Gegensatz zur Funktions-Bibliothek hat die Klasse, Funktionen die Privat Attribute bzw. Variablen hat.

Was macht Sinn in eine Klasse zu legen?

Was, in meinen Augen, sehr Sinnvoll ist DB Klassen zu verwende, diese haben den Vorteil, das wenn man die SQL-Statements sauber geschrieben hat,
ohne weiteres das Datenbank-System im Hintergrund einfach wechselen kann, um dies zu Erreichen, braucht man eine Klasse.
Wenn man in diesen Fall keine verwenden würde, kommt man nicht herum, in jeder Datei die DB-Funktions-Befehle zu verändern.
Beispiel:
Statt:    
    mysql_query ($sql);
könnte man:
    $DB->Query ($sql);

Die Klasse selbst setzt dann, je nach Datenbank-System den geeigeneten Befehl.

Fazit:

Es gibt keine beste Lösung (Funktionslib vs Klassen).
Es kommt eher drauf an, wie das Projekt geplant ist, und welche Schnittstellen geplant sind.