2009-08-15 2 views
2

У меня есть класс, предназначенный для определенного сайта. На этом сайте у меня есть разные функции для извлечения данных из базы данных и хранения этих данных в массиве. У меня есть другие функции внутри одного класса, которые берут данные и форматируют их в html и возвращают html, содержащий данные из базы данных.Использование классов PHP для форматирования html?

Например ...

function GetUserProfile($userID){ 

    $query = 'SELECT * FROM users WHERE userID='.$userID; 

    ....... 

    blah blah blah 

    ....... 

    $user = mysqli->fetch_assoc(); 

    return $user; 

} 

function FormatUserProfile($user, $showDesc = false){ 

    $profile = '<h1>'.$user['userName'].'</h1 >'; 

    if($showDesc){ 

    $profile .= '<div>'.$user['description'].'</div >'; 

    } 

    return $profile; 

} 

...

Так что, если я имел функцию только собирать информацию, а также другую функцию только формат, который собрал информацию. Главным образом, потому что я буду показывать одни и те же данные на разных страницах, но на разных страницах отображаются разные данные, например, поиск приведет к появлению имени пользователя, где на странице профиля пользователя будут отображаться имя пользователя и описание, например.

Это хорошая практика, или есть лучший способ сделать это?

ответ

1

Это хорошая практика. Лично я использую следующий шаблон «движок»:

<?php 
class Template{ 
    static function show($path, $arg = NULL){ 
     include "templates/$path.php"; 
    } 

    static function get($path, $arg = NULL){ 
     ob_start(); 
     self::show($path, $info); 
     $block = ob_get_contents(); 
     ob_end_clean(); 
     return $block; 
    } 
} 

В вашем случае шаблон будет выглядеть так:

<?php 
echo '<h1>'.$arg['user']['userName'].'</h1>'; 
if($arg['showDesc']){ 
    echo '<div>'.$arg['user']['description'].'</div>'; 
} 
?> 

Вы можете распаковать массив с аргументами шаблона, но я предпочитаю держать все это в одном месте, поэтому код менее запутан. (Вы всегда знаете, что происходит от ввода, и то, что определено в шаблоне таким образом. Чтобы сократить время, вы можете использовать $ _ вместо $ arg тоже.) Для небольшого примера вроде этого преимущество не очевидно, но для больших шаблонов он сохраняет много переменных манипуляций, так как вы можете использовать собственные возможности шаблонов PHP.

+0

Я думаю, что я понимаю, что ваше высказывание, вместо того, чтобы создать функцию, чтобы сделать это, я должен создать отдельный файл, который только шаблон и просто передать данные к нему, а затем отобразить содержимое этого файла. Итак, что, если у меня есть потоки данных, чтобы показать, и мне нужен foreach или цикл while, будет ли этот стиль по-прежнему подходящим для этого? Так что, я думаю, когда они говорят о отдельной логике из презентации, они ДЕЙСТВИТЕЛЬНО ЗНАЧИТЕЛЬНЫ. – BDuelz

+0

+1 это лучшее решение. – karim79

Смежные вопросы