$this -> current_page = $_SERVER['PHP_SELF'];
Das ist der Dateiname des aktuellen Skriptes, ausgehend vom $_SERVER['DOCUMENT_ROOT']. Du willst aber den Ressourcen-Name vergleichen, der in der URL gesendet wurde.
Der relevante Teil abgerufene Adresse steht in $_SERVER['REQUEST_URI']
.
Können an der URL Get-Parameter anhängen (oder eben nicht), dann verwende:
$this -> current_page = explode('?', $_SERVER['REQUEST_URI'])[0];
wenn Du das so lässt, dann wirst Du Probleme bekommen, z.B. wenn mod_rewrite verwendet wird. Also irgendwann. Genauer: Zu einem Zeitpunkt, an dem es Dir gar nicht passt.
Da oben stehende liefert den ersten Teil der am '?' getrennten URL (Ohne Protokoll, Port, Servername). Beispiel/Test:
<?php
$_SERVER['REQUEST_URI'] = '/test.php?foo=bar'; # Fake for the test
echo explode('?', $_SERVER['REQUEST_URI'])[0] . PHP_EOL;
$_SERVER['REQUEST_URI'] = '/test.php'; # Fake for the test
echo explode('?', $_SERVER['REQUEST_URI'])[0] . PHP_EOL;
Output:
/test.php
/test.php
Dann wäre noch das hier:
$_SERVER['PHP_SELF'];
Das ist keine Kunst, das soll weg!