Пример #1
0
<?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')));
        }
    }
}
Пример #3
0
}
$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);
Пример #4
0
<?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!
     */
}