function testxmlDatabaseReal() { $xmlDb = new xmlDb('databasename'); $xmlTable = new xmlTable('table'); $xmlTable->addField(new xmlField('field', 'name')); $this->assertNoErrors($xmlDb->addTable($xmlTable)); $this->assertEqual($xmlDb->getDisplayFields(), array('name')); $this->assertEqual($xmlDb->getTables(), array($xmlTable)); }
function package($xmlTree) { if (isset($xmlTree[0])) { $dataTreeAndMeta = $xmlTree[0]['_ELEMENTS']; $dataTree = $dataTreeAndMeta[0]['_ELEMENTS']; //DB name $xmlDb = new xmlDb($dataTree[0]['_ELEMENTS'][0]['_DATA']); //DB tables for ($index = 1; $index < sizeof($dataTree[0]['_ELEMENTS']); $index++) { $xmlDb->addTable(xmlPackage::__breakupContents($dataTree[0]['_ELEMENTS'][$index]['_ELEMENTS'])); } } return $xmlDb; }
/** * constructor */ private function __construct($database) { // in use database file $this->in_use = dirname(__FILE__) . '/data/' . $database . '.lock'; // if file exists that means the db file is in use, so we wait - trying to prevent race condition $i = 20; while (true == file_exists($this->in_use)) { usleep($i += 20); } // create in use file, we are using this db now $i = 20; while (false == ($this->fh = @fopen($this->in_use, 'w'))) { usleep($i += 20); } // wait for file lock $i = 20; while (false == flock($this->fh, LOCK_EX)) { usleep($i += 20); } // register shutdown register_shutdown_function(array($this, '__unlock')); // in use file is created and locked, now we can work with database // db file $this->file = dirname(__FILE__) . '/data/' . $database . '.xml'; if (false == file_exists($this->file)) { // if db file not exists, create db file with db schema file_put_contents($this->file, '<?xml version="1.0" encoding="utf-8"?><database></database>'); // set permissions on db file xmlDb::chmodDatabase($database); } libxml_use_internal_errors(true); // load xml try { $this->xml = new SimpleXMLElement(file_get_contents($this->file)); } catch (Exception $e) { exit('Error: ' . $e->getMessage()); } }
<?php // ADDING AND REMOVING COLUMNS FROM TABLE // include db class include '../xmldb/xmldb.php'; // connect to database $db = xmlDb::connect('example_database'); // add table $db->addTable('example_table'); // add column // you can have unlimited number of columns in table // note: for doing anything with table (adding columns, removing columns, selecting data, etc.) // first you must select table by calling method table(table_name) // example: $db->table('table_name'); // add column id and set it's value to 1 $db->table('example_table')->addColumn('id', 1); // add another column called name $db->table('example_table')->addColumn('name', 'John'); // add another column called lastname $db->table('example_table')->addColumn('lastname', 'Doe'); // now we can get columns from our table // method getColumns() returns an array of columns names // you can get columns names like this $columns = $db->table('example_table')->getColumns(); print_r($columns); // or like this $columns = $db->getColumns('example_table'); print_r($columns); // removing column from table /* $db->table('example_table')->removeColumn('lastname');