Curiosidad con tablas, echo y funciones en PHP

Después de varios días depurando las tablas SQL (os explicaré otro día dicho proceso) por fin empieza la etapa desarollo de un proyecto web.

El principal "problema" del proyecto es que tiene que ser compatible a SMF por lo que la metodología que usa es similar (que no igual).

El index.php trabaja de la siguiente forma:
- Carga unos textos
- Carga unas funciones básicas
- Carga las funciones gráficas y de procesos de la sección que se quiere acceder.
Para mostrarlo se llama a 3 procesos:
head(); middle(); foot();

La primera es variable según los metadatos y la última, en principio, es fija.
La que mas varía es la del medio.

head(): marca el principio de la tabla y la deja a medias para rellenarla con middle(), una vez que middle() acabó se llama a la función foot() que cierra todo.

Ahora, donde está la curiosidad? Esta está en middle(), al llamar a la función esta hace un echo con HTML y llama algunas funciones. Aquí viene el problema.

index.php
<?php
include_once('text.php');
include_once(
'functions/basic.php');
 
if (
$_GET['ac'] == 'news')
   include_once(
'news.php');
 
head(); //las 3 mas abajo
middle();
foot();
//no es exactamente así pero para que se entienda xD
?>


functions/basic.php

<?php

function head() {
      echo 
'los heads y el inicio de una tabla';
}
function 
foot() {
     echo 
'el final de la tabla y el pie de pagina';
?>


news.php
<?php
 
function middle() {
 
echo 
'la continuacion de la tabla'.funcion().'cierro celdas'//lo raro esta aqui
}
function 
funcion {
 echo 
'por ejemplo el contenido de la celda';
 
}
?>
 


como veis en news.php se concatena un string con una funcion que trae un string.
Bueno, ponga un echo o un return resulta que las tablas se descuadran totalmente y el código HTML se situa donde no debe ir.

Un par de imágenes para entenderlo:

asi está mal:


así esta bien:





como apreciais, al concatenar, el recuadro del menú se descuadra a una posición inferior y las tablas parecen no estar bien creadas.

Solución a esta curiosidad?

<?php echo 'la continuacion de la tabla'funcion() ; echo 'cierro celdas'?>

en vez de concatenar echo lo que hacemos es separar sentencias con un ; y a otra cosa mariposa...