<?php $shelf = Craur::createFromCsvFile(dirname(__FILE__) . '/fixtures/books.csv', array('book[].name', 'book[].year', 'book[].author[].name', 'book[].author[].age', 'book[].reader[].name')); assert(count($shelf->get('book[]')) === 2); foreach ($shelf->get('book[]') as $book) { if ($book->get('name') === 'My Book') { assert(count($book->get('author[]')) === 2); assert($book->get('author.name') == 'Hans'); assert($book->get('author.age') == '32'); foreach ($book->get('author[]') as $author) { assert(in_array($author->get('age'), array('32', '20'))); assert(in_array($author->get('name'), array('Hans', 'Paul'))); } } elseif ($book->get('name') === 'My second Book') { assert(count($book->get('author[]')) === 1); assert($book->get('author.name') == 'Erwin'); assert($book->get('author.age') == '10'); } }
<?php $shelf = Craur::createFromCsvFile(dirname(__FILE__) . '/fixtures/books_with_categories.csv', array('book[].name', 'book[].year', 'book[].author[].name', 'book[].author[].age', 'book[].category[]')); assert(count($shelf->get('book[]')) === 2); foreach ($shelf->get('book[]') as $book) { if ($book->get('name') === 'My Book') { assert(count($book->get('author[]')) === 2); assert($book->get('author.name') == 'Hans'); assert($book->get('author.age') == '32'); foreach ($book->get('author[]') as $author) { assert(in_array($author->get('age'), array('32', '20'))); assert(in_array($author->get('name'), array('Hans', 'Paul'))); } assert(count($book->get('category[]')) === 1); assert($book->get('category') == 'Fantasy'); } elseif ($book->get('name') === 'My second Book') { assert(count($book->get('author[]')) === 1); assert($book->get('author.name') == 'Erwin'); assert($book->get('author.age') == '10'); assert(count($book->get('category[]')) === 2); foreach ($book->get('category[]') as $category) { assert(in_array((string) $category, array('Fantasy', 'Comedy'))); } } }
} $node = Craur::createFromJson('{"books": [{"name":"A", "price": 30}, {"name": "B", "price": 10}, {"name": "C", "price": 15}]}'); $cheap_books = $node->getWithFilter('books[]', 'isACheapBook'); assert(count($cheap_books) == 2); assert($cheap_books[0]->get('name') == 'B'); assert($cheap_books[1]->get('name') == 'C'); /* Craur#saveToCsvFile */ $data = array('book' => array(array('name' => 'My Book', 'year' => '2012', 'author' => array(array('name' => 'Hans'), array('name' => 'Paul'))), array('name' => 'My second Book', 'year' => '2010', 'author' => array(array('name' => 'Erwin'))))); $shelf = new Craur($data); $shelf->saveToCsvFile('fixtures/temp_csv_file.csv', array('book[].name', 'book[].year', 'book[].author[].name')); // csv file will look like this now: // book[].name;book[].year;book[].author[].name // "My Book";2012;Hans // "My Book";2012;Paul // "My second Book";2010;Erwin assert(json_encode(array($data)) == Craur::createFromCsvFile('fixtures/temp_csv_file.csv', array('book[].name', 'book[].year', 'book[].author[].name'))->toJsonString()); unlink('fixtures/temp_csv_file.csv'); /* CraurCsvWriter#extractDirectDescendants */ $craur = new Craur(array('name' => 'My Book', 'year' => '2012', 'categories' => array('comedy', 'fantasy'), 'authors' => array(array('name' => 'Paul'), array('name' => 'Erwin')), 'pages' => '212')); $expected_data = array(0 => 'My Book', 1 => '2012', 4 => '212'); $result_data = CraurCsvWriter::extractDirectDescendants($craur, array('name', 'year', 'categories[]', 'authors[].name', 'pages'), ''); assert(json_encode($expected_data) == json_encode($result_data)); /* CraurCsvWriter#extractAllDescendants */ $craur = new Craur(array('name' => 'My Book', 'year' => '2012', 'authors' => array(array('name' => 'Paul', 'age' => '30'), array('name' => 'Erwin', 'age' => '20')), 'categories' => array('comedy', 'fantasy'), 'pages' => '212')); $expected_data = array(array('My Book', '2012', 'Paul', '30', 'comedy', '212'), array('My Book', '2012', 'Erwin', '20', 'fantasy', '212')); $result_data = CraurCsvWriter::extractAllDescendants($craur, array('name', 'year', 'authors[].name', 'authors[].age', 'categories[]', 'pages'), ''); assert(json_encode($expected_data) == json_encode($result_data)); /* CraurCsvReader#mergePathEntriesRecursive */ $entries = array(array('book' => array('name' => 'My Book', 'year' => 2012, 'author' => array('name' => 'Hans', 'age' => '32'))), array('book' => array('name' => 'My Book', 'year' => 2012, 'author' => array('name' => 'Paul', 'age' => '20'))), array('book' => array('name' => 'My second Book', 'year' => 2010, 'author' => array('name' => 'Erwin', 'age' => '10')))); $merged_entries = CraurCsvReader::mergePathEntriesRecursive($entries); assert(count($merged_entries) === 1);
<?php try { $shelf = Craur::createFromCsvFile(dirname(__FILE__) . '/fixtures/non_existing_books.csv', array('book[].name')); assert(false); } catch (Exception $exception) { /* * Great, the file does not exist! */ }