Redeclarar función (sobreescribir)
¿Cuál es el mejor método para cambiar una función previamente declarada por una nueva?
por ejemplo, ya existe declarada:
function smth(){
echo 'aaa';
}
y quiero que muestre no aaa, sino bbb
function smth(){
echo 'bbb';
}
pero cuando inserto la nueva función (dentro de functions.php), obtengo un mensaje de error
(Fatal error: Cannot redeclare **smth()** (previously declared in ... )
ACTUALIZACIÓN - He encontrado una solución:

PHP no permite redeclarar funciones. Si escribes la función original, hay muchas formas que te permiten escribir funciones más flexibles.
Condicionales según los argumentos pasados y los hooks de filtro, son los primeros que me vienen a la mente.
EJ. 1:
function smth( $out = 'a' ){
if ( $out === 'a' ) {
echo 'aaa';
} else {
echo 'bbb';
}
}
Después de eso, primera llamada
smth();
y segunda vez:
smth('b');
EJ. 2
function smth(){
echo apply_filters('my_smth_filter', 'aaa');
}
Después de eso, primera llamada
smth();
y segunda vez:
add_filter('my_smth_filter', function() {
return 'bbb';
});
smth();
Si la función original no es tuya y no proporciona ningún filtro para cambiar la salida y absolutamente necesitas cambiar el comportamiento de esa función, entonces mira Patchwork, una biblioteca de PHP que te permite redefinir funciones definidas por el usuario en tiempo de ejecución. Sin embargo, usa Patchwork con precaución y solo si es absolutamente necesario, porque Patchwork está destinado a usarse con fines de prueba, no en producción.

Sugeriría usar un enfoque de POO (Programación Orientada a Objetos), como:
class SomeClass
{
public function aa()
{
echo 'aa';
}
}
class SomeOtherClass extends SomeClass
{
public function aa()
{
return 'bb';
}
}
$a = new SomeClass();
$a->aa(); // muestra aa
$b = new SomeOtherClass();
$b->aa(); // muestra bb
