MySQL2MySQLi/Function/.svn/text-base/Generic.php.svn-base

152 lines
3.7 KiB
Plaintext

<?php
/**
* Converter: generic converter and base class for other converter functions
*
* @category Functions
* @package MySQLConverterTool
* @author Andrey Hristov <andrey@php.net>, Ulf Wendel <ulf.wendel@phpdoc.de>
* @copyright 1997-2006 The PHP Group
* @license http://www.php.net/license/3_0.txt PHP License 3.0
* @version CVS: $Id:$, Release: @package_version@
* @link http://www.mysql.com
* @since Class available since Release 1.0
*/
class MySQLConverterTool_Function_Generic {
/**
*
* @const PARSE_ERROR_WRONG_PARAMS
*/
const PARSE_ERROR_WRONG_PARAMS = 'Wrong parameter count. Function call not converted, resulting code is incomplete -- original code used. You must check your source!';
//
// public
//
/**
* New name of the converted function
*
* Used only for functions that have MySQLi counterpart that takes the same
* parameters as the originial MySQL extension function.
*
*
* @var string
*/
public $new_name;
/**
* Name of a variable holding the connection identifier of all functions that rely on default connections
*
* @var string
*/
public $ston_name = '$GLOBALS["___mysqli_ston"]';
//
// public
//
public function __construct($new_name, $ston_name = NULL) {
$this->new_name = $new_name;
if (!is_null($ston_name))
$this->ston_name = $ston_name;
}
/*
* Try to use less concats - dots - in the output string
*
* @param string
* @param string
*/
public function smart_concat($par1, $par2) {
if ($par2[0] !== '"' && $par2[0] !== "'")
return '"' . $par1 . '" . ' . $par2;
return $par2[0] . $par1 . substr($par2, 1);
}
/**
* Returns a string with the functions call
*
* @param array list of parameters of the returned function call
*/
public function handle(Array $params = array()) {
$params = $this->extractParamValues($params);
return array(NULL, $this->new_name."(".implode(", ", $params).")");
}
/**
* Returns a string which describes who the conversion is done
*
* @return string
*/
public function getConversionHint() {
return 'Using 1:1 counterpart from the MySQLi extension';
}
/**
* Returns a PHP comment which describes how the conversion is done
*
* @return string
*/
public function getConversionPHPComment() {
$ret = wordwrap($this->getConversionHint(), 60);
$ret = explode("\n", $ret);
$ret = "\n// [MySQL->MySQLi] " . implode("\n// [MySQL->MySQLi] ", $ret);
$ret .= "\n";
return $ret;
}
//
// protected
//
/**
* Extracts the parameter values from the parameter scanner hash
*
* @param array
* @return array
*/
protected function extractParamValues($params) {
$ret = array();
foreach ($params as $k => $param) {
$ret[] = $param['value'];
}
return $ret;
}
/**
*
*/
protected function extractValueAndType($var) {
$var_type = 'const';
if ("" != $var && ($var[0] == '"' || $var[0] == "'") && $var[0] == substr($var, -1)) {
$var = substr($var, 1, -1);
$var_type = 'string_or_var';
}
if ("" != ($tmp = trim($var)) && $tmp[0] == '$') {
$var_type = 'string_or_var';
}
return array($var, $var_type);
}
}
?>