Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class XMLGenerator
- {
- // отступ n-ого уровня
- private function indent($level)
- {
- $indent = '';
- $delta = ' ';
- for ($i = 0; $i < $level; $i++) $indent .= $delta;
- return $indent;
- }
- // генерация XML с отступами
- private function generate_xml($info, $history)
- {
- $current_level = 0;
- $result = self::indent($current_level) . "<?xml version=\"1.0\"?>\n";
- $result .= self::indent($current_level) . "<customer name=\"{$info['name']}\" email=\"{$info['email']}\" phone=\"{$info['phone']}\">\n";
- $current_level++;
- foreach ($history as $order) {
- $result .= self::indent($current_level) . "<order id=\"{$order['id']}\" date=\"" . date('H:i:s d-m-Y', $order['date']) . "\" total_price=\"{$order['totalPrice']}\">\n";
- $current_level++;
- foreach ($order['products'] as $product) {
- $result .= self::indent($current_level) . "<product>\n";
- $current_level++;
- $result .= self::indent($current_level) . "<name>{$product['name']}</name>\n";
- $result .= self::indent($current_level) . "<price>{$product['price']}</price>\n";
- $result .= self::indent($current_level) . "<qty>{$product['qty']}</qty>\n";
- $current_level--;
- $result .= self::indent($current_level) . "</product>\n";
- }
- $current_level--;
- $result .= self::indent($current_level) . "</order>\n";
- }
- $current_level--;
- $result .= self::indent($current_level) . "</customer>\n";
- return $result;
- }
- // сгенерировать XML-файл
- public static function generate_xml_file($info, $history)
- {
- $file = fopen('result.xml', 'w+');
- fwrite($file, self::generate_xml($info, $history));
- fclose($file);
- }
- // возврат XML с отступами
- public static function generate_xml_string_with_indents($info, $history)
- {
- return self::generate_xml($info, $history);
- }
- // возврат XML без отступов и в одну строку
- public static function generate_xml_string($info, $history)
- {
- return str_replace(self::indent(1), "", str_replace("\n", "", self::generate_xml($info, $history)));
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement