Un objet dans une fonction récursive

Petit nouveau ! | 2 Messages

15 févr. 2011, 15:44

Bonjour à tous,
j'ai une classe Model et Connect. Je viens d'écrire une fonction récursive pour afficher le plan du site et je me pose une question. En effet, j'ai un objet dans cette fonction. Comment ça se passe techniquement et cela peut-il poser des problèmes éventuelles du fait que l'objet porte un nom unique, si la fonction passe un certain nombre de fois à chaque fois l'objet est recréé, ça peut poser des problèmes ? Pour l'instant je n'ai rien constaté. Merci d'avance pour vos remarques
Antoine
<?php
/* 
 * Sitemap
 */
include_once 'library/model.php';
include_once 'library/Connect.php';


$DB = new Connect();

function sitemap($id_parent =0 )
{
    global $html ; //pour rendre la variable accessible dans la récursion
    $Model = new Model();
    $rows = $Model->select('titre, id_category', 'articles', 'id_parent='.$id_parent);
    if( sizeof($rows) > 0 )
    {
       $html .= '<ul>';
        for ( $i=0; $i< sizeof($rows); $i++ )
        {
           $html .= '<li><a href="#">'.$rows[$i]['titre'].'</a>';
                sitemap($rows[$i]['id_category']);
            $html .= '</li>';
        }
            
        $html .= '</ul>';
    }
   return $html;
}

$DB->connect_db();
echo sitemap();

$DB->deconnect_db();
?>





ViPHP
ViPHP | 2577 Messages

15 févr. 2011, 16:23

Bonjour,

Je trouve le principe bon. Par contre, je supprimerai bien le global $html.
            $html .= '<li><a href="#">'.$rows[$i]['titre'].'</a>'.sitemap($rows[$i]['id_category']);
            $html .= '</li>';

Petit nouveau ! | 2 Messages

18 févr. 2011, 16:03

Bonjour,
merci pour ta remarque je regarde ce que tu proposes de retirer dans mon code
Antoine