2009-10-31 5 views
0

Comment puis-je convertir la fonction PHP dans le code ci-dessous en une non-fonction.Comment convertir une fonction PHP en une fonction non-fonctionnelle?

<?php 
require_once ('./mysqli_connect.php'); // Connect to the db. 

function make_list ($parent) 
{ 
    global $tasks; 
    echo '<ol>'; 
    foreach ($parent as $task_id => $todo) 
    { 
     echo "<li>$todo"; 
     if (isset($tasks[$task_id])) 
     { 
      make_list($tasks[$task_id]); 
     } 
     echo '</li>'; 
    } 

    // Close the ordered list: 
    echo '</ol>'; 
} 

$mysqli = new mysqli("localhost", "root", "", "sitename"); 
$dbc = mysqli_query($mysqli,"SELECT task_id, parent_id, task FROM tasks WHERE date_completed='0000-00-00 00:00:00' ORDER BY parent_id, date_added ASC"); 

if (!$dbc) 
{ 
    // There was an error...do something about it here... 
    print mysqli_error(); 
} 
$tasks = array(); 

while (list($task_id, $parent_id, $task) = mysqli_fetch_array($dbc, MYSQLI_NUM)) 
{ 
    // Add to the array: 
    $tasks[$parent_id][$task_id] = $task; 
} 

make_list($tasks[0]); 

mysqli_close(); // close the connection 

// Include the html footer 
include('./includes/footer.html'); 
?> 

Serait-il préférable de laisser mon code comme celui-ci, même si le reste de mon code que je ne l'ai pas affiché est sous forme non fonction.

+9

Je pense que la meilleure question est: pourquoi voudriez-vous * voulez * pour transformer votre fonction en une non-fonction? – hbw

Répondre

8

Première: Vous ne pouvez pas convertir facilement une fonction récursive en code spaghetti.
Deuxième: Il n'y a aucun intérêt à le faire. Séparez votre logique, les actions en fonctions, ainsi que la logique et la présentation des données. Ne spammez pas votre code avec des balises html. Utilisez une sorte de mécanisme de modèle.

1

en plus de la réponse de erenon (que je soutiens pleinement, il déjà fait valoir les points pourquoi votre question est leader dans le mauvais sens):

utilisation (ou créer) une classe d'abstraction de base de données qui cache la connexion, l'exécution de la requête etc. facilite beaucoup le changement de bases de données ou l'adaptation aux changements d'interface plus tard, et vous avez une place centrale pour la gestion des erreurs.

et ne parlez pas à la base de données ..

super-utilisateur
Questions connexes