Pour te donner un exemple bâteau :
Supposons que j'ai un objet (une classe) Voiture. Ma voiture se caractérise par une marque, une couleur, une immatriculation, etc. (ce sont ses attributs) et par des actions comme démarrer le moteur, mettre le clignotant, freiner, etc. (ce sont ses méthodes).
class Voiture {
public $marque;
public $couleur;
public $immat;
function demarre() {
echo 'Vrouuuummm';
}
function clignotant() {
...
}
function freine() {
...
}
}
A partir de là, je peux travailler sur une voiture spécifique (une instance), par exemple une ferrari rouge immatriculée en italie :
$maFerrari = new Voiture();
$maFerrari->marque = 'ferrari';
$maFerrari->couleur = 'rouge';
...
ou une lada rose.... (ouais ben on choisit pas toujours hein

)
$maPoubelle = new Voiture();
$maPoubelle->marque = 'lada';
$maPoubelle->couleur = 'rose bonbon avec des poids verts';
...
Et je peux manipuler l'un comme l'autre :
$maFerrari->demarre(); // Ma ferrari démarre dans un grand "Vrouuuummm"
$maFerrari->repeindre("noir"); // Parce qu'en noir aussi c'est classe ;p
$maPoubelle->vaALaCasse(); // Ta lada
C'est quand même beaucoup plus puissant qu'un tableau

Et tu peux l'adapter à tout et n'importe quoi... une classe MessageDeForum avec les attributs auteur, date, message et les méthodes poster(), editer() ; une classe Film avec un titre, un réalisateur, des méthodes projeter(), rembobiner(), etc.