En PHP 5, una clase puede ser declarada como final, para prevenir que sea extendida:
<?php
    
// en una libreria general
    
final class NotasLiterales {
        
/* ... */

        
function obtenerNota($alumno) {
            return 
'F';
        }
    }

    
/* ------------ */

    // un *lamer* sin acceso a la libreria quiere
    // modificar el comportamiento de la clase
    
class MisNotasMostras extends NotasLiterales {

        function 
obtenerNota($alumno) {
            return 
'A';
        }
    }
    
// pero todo lo que obtiene es un error
?>
al ejecutar se produce el error
Fatal error: Class MisNotasMostras may not inherit 
from final class (NotasLiterales) 
in micrackeo.php on line 20
Y para mayor control aún, los métodos pueden ser declarados finales, para que no puedan ser redefinidos en una sub-clase.
<?php
    
class PaletaDeColores {
        
/* ... */

        
final function nombreDelColor($r$g$b) { /* ... */ }
    }
    
    class 
Daltonico extends PaletaDeColores {

        
// esta redefinicion causa un error
        
function nombreDelColor($r$g$b) {
            return 
'gris';
        }
    }
?>
Fatal error: Cannot override final method 
PaletaDeColores::nombreDelColor() 
in daltol33t.php on line 14