File: D:/HostingSpaces/SBogers84/zuiderbos.nl/vendor/nqxcode/phpmorphy/src/phpMorphy/Source/Dba.php
<?php
/*
* This file is part of phpMorphy project
*
* Copyright (c) 2007-2012 Kamaev Vladimir <heromantor@users.sourceforge.net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
class phpMorphy_Source_Dba implements phpMorphy_Source_SourceInterface {
const DEFAULT_HANDLER = 'db3';
protected $handle;
function __construct($fileName, $options = null) {
$this->handle = $this->openFile($fileName, $this->repairOptions($options));
}
function close() {
if(isset($this->handle)) {
dba_close($this->handle);
$this->handle = null;
}
}
static function getDefaultHandler() {
return self::DEFAULT_HANDLER;
}
protected function openFile($fileName, $options) {
if(false === ($new_filename = realpath($fileName))) {
throw new phpMorphy_Exception("Can`t get realpath for '$fileName' file");
}
$lock_mode = $options['lock_mode'];
$handler = $options['handler'];
$func = $options['persistent'] ? 'dba_popen' : 'dba_open';
if(false === ($result = $func($new_filename, "r$lock_mode", $handler))) {
throw new phpMorphy_Exception("Can`t open '$fileName' file");
}
return $result;
}
protected function repairOptions($options) {
$defaults = array(
'lock_mode' => 'd',
'handler' => self::getDefaultHandler(),
'persistent' => false
);
return (array)$options + $defaults;
}
function getValue($key) {
return dba_fetch($key, $this->handle);
}
}