Una clase, a nivel de código, no es más que la definición de un ámbito.
El siguiente php:
declara una función, y una variable en el ámbito global.La llamada a la función "p()" es la forma de acceder a una función que ha sido definida en el ámbito global.
Una clase es simplemente un tipo de ámbito distinto, donde existen variables y funciones, de la misma forma que en el ámbito global.
La diferencia es que , a diferencia del ámbito global, que sólo hay uno, con clases puedes crear tantos ámbitos como quieras, y a eso se llaman instancias, u "objetos".
Se crea un nuevo ámbito con el operador new, que devuelve una variable a través de la cual se accede a variables y funciones visibles de ese nuevo ámbito.
En PHP hay más contextos.Por ejemplo, namespaces, funciones....Puedes crear tantos namespaces o funciones como quieras, pero las reglas de visibilidad son distintas, y la forma de acceder a ellos no es a través de variables.
Pero la clase es un ámbito en sí mismo, sin necesidad de instancias.En ese ámbito existen las variables y miembros estáticos.Por lo tanto, tanto los objetos como las clases, definen ámbitos, pero no son el mismo.Una clase no es sólo un "concepto", o una "plantilla".Define su propio ámbito, al que se accede no a través de una variable, sino a través del nombre de la clase.
En otros lenguajes, una clase puede tener muchas otras propiedades que no tienen las instancias.O las clases son, a su vez, instancias de otras clases.Pero tanto los objetos como las clases, existen "fisicamente" en el lenguaje de programación, y son cosas distintas.
Cuando crees que la clase es un "concepto", y los objetos son las "realidades", que la clase es el "molde" del que se crean los objetos, estás hablando de una cosa distinta : programación orientada a objetos.Que está relacionada con el soporte del lenguaje de clases y objetos? Si.Que son lo mismo? No.
Normalmente, esas metáforas fallan en la misma cosa: bajo esas metáforas, qué sería un método, o una variable miembro estática?
En definitiva, una clase y un objeto son 2 cosas que existen y tienen propiedades dentro del lenguaje, y son distintas entre sí.Y una clase como construcción de un lenguaje de programación, y como concepto usado en la filosofía de programación orientada a objetos, tampoco son exactamente lo mismo.