Smileyworld...?
Konstanten haben zwei wesentliche Vorteile, die schon genannt worden: Sie sind überall im Global Scope (nach ihrer Definierung), und sie haben einen festen Wert. Das ermöglicht eine effizientere Speicherung von Konstanten, was an sich der Performance zuträglich ist. Negativ hingegen ist, dass der Aufruf von [phpf]define[/phpf] diesen Vorteil überwiegend auffrisst. So oft kann man eine Konstante gar nicht aufrufen, wie [phpf]define[/phpf] rummehrt

Besser sind da Klassenkonstanten, welche dank des Sprachkonstrukts schnell initialisiert werden können.
Letztenendes ist es dir überlassen. Ich verwende Konstanten dort, wo ein konstanter und globaler Wert benötigt wird, und wo ich mich auf eben das verlassen möchte (zB
$param[ Class::FOO ] = 'bar';).
Variablen werden in kleineren Scopes und dort, wo ein Manipulieren der enthaltenen Daten von Nöten ist, verwendet.
"Counter" hört sich für mich recht veränderlich an, würde deshalb auf Variablen setzen.