Directorios reesctructurados, integración total con PHP autoload
This commit is contained in:
parent
496eb58dcb
commit
d5912072f2
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
|
||||
set_include_path
|
||||
(
|
||||
get_include_path ()
|
||||
.PATH_SEPARATOR.__DIR__
|
||||
);
|
||||
set_include_path (__DIR__.PATH_SEPARATOR.get_include_path ());
|
||||
|
||||
$vnAutoloadMap = [];
|
||||
$vnAutoloadMap['vn/lib'] = __DIR__.'/lib';
|
||||
$vnAutoloadMap['vn/db'] = __DIR__.'/db';
|
||||
|
||||
?>
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
|
||||
namespace Vn\Db;
|
||||
|
||||
require_once ('vn/lib/type.php');
|
||||
require_once ('vn/db/exception.php');
|
||||
use Vn\Lib\Type;
|
||||
|
||||
class Conn
|
||||
class Connection
|
||||
{
|
||||
private $conn = NULL;
|
||||
private $isOpen = FALSE;
|
||||
|
@ -74,7 +73,7 @@ class Conn
|
|||
/**
|
||||
* Returns the internal database connection handler. This function shoud be
|
||||
* used to set options for specific databases that could not be set using
|
||||
* the Db\Conn class methods.
|
||||
* the Connection class methods.
|
||||
*
|
||||
* @return Objetct The connection handler
|
||||
**/
|
||||
|
@ -314,7 +313,7 @@ class Conn
|
|||
|
||||
/**
|
||||
* Check if there has been an error in the last query or multiquery,
|
||||
* throwing a @Db\Exception exception if any.
|
||||
* throwing a @Exception exception if any.
|
||||
**/
|
||||
function checkError ()
|
||||
{
|
||||
|
@ -378,17 +377,17 @@ class Conn
|
|||
function renderValue ($value)
|
||||
{
|
||||
if ($value !== NULL)
|
||||
switch (get_type ($value))
|
||||
switch (Type::get ($value))
|
||||
{
|
||||
case TYPE_BOOLEAN:
|
||||
case Type::BOOLEAN:
|
||||
return ($value) ? 'TRUE' : 'FALSE';
|
||||
case TYPE_STRING:
|
||||
case Type::STRING:
|
||||
return '\'' . $this->conn->escape_string ($value) . '\'';
|
||||
case TYPE_DATE:
|
||||
case Type::DATE:
|
||||
return strftime ('\'%Y-%m-%d\'', $value->getTimestamp ());
|
||||
case TYPE_TIME:
|
||||
case Type::TIME:
|
||||
return strftime ('\'%T\'', $value->getTimestamp ());
|
||||
case TYPE_DATE_TIME:
|
||||
case Type::DATE_TIME:
|
||||
return strftime ('\'%Y-%m-%d %T\'', $value->getTimestamp ());
|
||||
default:
|
||||
return '\'' . $this->conn->escape_string ($value) . '\'';
|
|
@ -1 +1,3 @@
|
|||
vn usr/share/php
|
||||
lib usr/share/php/vn
|
||||
db usr/share/php/vn
|
||||
vn-autoload.php usr/share/php
|
||||
|
|
|
@ -2,14 +2,9 @@
|
|||
|
||||
namespace Vn\Lib;
|
||||
|
||||
require_once (__DIR__.'/method.php');
|
||||
require_once (__DIR__.'/exception.php');
|
||||
require_once (__DIR__.'/user-exception.php');
|
||||
require_once (__DIR__.'/locale.php');
|
||||
require_once (__DIR__.'/util.php');
|
||||
require_once ('vn/db/conn.php');
|
||||
require_once __DIR__.'/util.php';
|
||||
|
||||
use Vn\Db\Conn;
|
||||
use Vn\Db\Connection;
|
||||
use Vn\Lib\Locale;
|
||||
|
||||
if (!defined ('_DEBUG_MODE'))
|
||||
|
@ -106,7 +101,7 @@ class App
|
|||
if ($persistent)
|
||||
$host = 'p:'.$host;
|
||||
|
||||
$conn = new Conn ();
|
||||
$conn = new Connection ();
|
||||
$conn->open (
|
||||
$host
|
||||
,$user
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
namespace Vn\Lib;
|
||||
|
||||
require_once (__DIR__.'/app.php');
|
||||
|
||||
/**
|
||||
* Implements command line applications.
|
||||
**/
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
namespace Vn\Lib;
|
||||
|
||||
require_once (__DIR__.'/app.php');
|
||||
|
||||
/**
|
||||
* Base class for rest methods.
|
||||
**/
|
||||
|
@ -25,14 +23,15 @@ abstract class Method
|
|||
/**
|
||||
* Executes the method. Shoud be defined by child classes.
|
||||
*
|
||||
* @param {Db\Conn} $db The main database connection
|
||||
* @return mixed The result of the method
|
||||
**/
|
||||
abstract function run ();
|
||||
abstract function run ($db);
|
||||
|
||||
/**
|
||||
* Returns the system database connection.
|
||||
*
|
||||
* return Db\Conn The database connection
|
||||
* return {Db\Conn} The database connection
|
||||
**/
|
||||
function getSysConn ()
|
||||
{
|
|
@ -0,0 +1,69 @@
|
|||
<?php
|
||||
|
||||
namespace Vn\Lib;
|
||||
|
||||
class Time extends \DateTime {}
|
||||
|
||||
class Date extends \DateTime {}
|
||||
|
||||
class Type
|
||||
{
|
||||
const NUL = 1;
|
||||
const BOOLEAN = 2;
|
||||
const INTEGER = 3;
|
||||
const DOUBLE = 4;
|
||||
const STRING = 5;
|
||||
const OBJECT = 6;
|
||||
const TIME = 7;
|
||||
const DATE = 8;
|
||||
const DATE_TIME = 9;
|
||||
|
||||
static function get ($value)
|
||||
{
|
||||
if (is_bool ($value))
|
||||
return self::BOOLEAN;
|
||||
elseif (is_int ($value))
|
||||
return self::INTEGER;
|
||||
elseif (is_float ($value))
|
||||
return self::DOUBLE;
|
||||
elseif (is_string ($value))
|
||||
return self::STRING;
|
||||
elseif (is_object ($value))
|
||||
{
|
||||
if ($value instanceof Time)
|
||||
return self::TIME;
|
||||
elseif ($value instanceof Date)
|
||||
return self::DATE;
|
||||
elseif ($value instanceof \DateTime)
|
||||
return self::DATE_TIME;
|
||||
else
|
||||
return self::OBJECT;
|
||||
}
|
||||
|
||||
return self::NUL;
|
||||
}
|
||||
|
||||
static function set (& $value, $type)
|
||||
{
|
||||
switch ($type)
|
||||
{
|
||||
case self::INTEGER:
|
||||
settype ($value, 'integer');
|
||||
break;
|
||||
case self::DOUBLE:
|
||||
settype ($value, 'float');
|
||||
break;
|
||||
case self::STRING:
|
||||
settype ($value, 'string');
|
||||
break;
|
||||
case self::BOOLEAN:
|
||||
settype ($value, 'boolean');
|
||||
break;
|
||||
case self::NUL:
|
||||
$value = NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
namespace Vn\Lib;
|
||||
|
||||
require_once (__DIR__.'/exception.php');
|
||||
|
||||
/**
|
||||
* Class used to store information about errors, warnings and info messages,
|
||||
* that end users understood and are allowed to see.
|
|
@ -0,0 +1,41 @@
|
|||
<?php
|
||||
|
||||
$vnAutoloadReplace = function ($matches)
|
||||
{
|
||||
$match = strtolower ($matches[0]);
|
||||
|
||||
if (strlen ($match) == 1)
|
||||
return $match;
|
||||
if ($match{0} == '\\')
|
||||
return DIRECTORY_SEPARATOR. $match{1};
|
||||
|
||||
return $match{0} .'-'. $match{1};
|
||||
};
|
||||
|
||||
spl_autoload_register (function ($className)
|
||||
{
|
||||
global $vnAutoloadReplace, $vnAutoloadMap;
|
||||
|
||||
$classPath = preg_replace_callback ('/.?[A-Z]/', $vnAutoloadReplace, $className);
|
||||
$classPath .= '.php';
|
||||
|
||||
if (isset ($vnAutoloadMap))
|
||||
foreach ($vnAutoloadMap as $prefix => $location)
|
||||
{
|
||||
$prefixLen = strlen ($prefix);
|
||||
|
||||
if (strncmp ($classPath, $prefix, $prefixLen) == 0)
|
||||
{
|
||||
$classPath = "$location/". substr ($classPath, $prefixLen);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($classPath{0} != DIRECTORY_SEPARATOR)
|
||||
$classPath = stream_resolve_include_path ($classPath);
|
||||
|
||||
if (file_exists ($classPath))
|
||||
require_once $classPath;
|
||||
});
|
||||
|
||||
?>
|
|
@ -1,64 +0,0 @@
|
|||
<?php
|
||||
|
||||
const TYPE_NULL = 1;
|
||||
const TYPE_BOOLEAN = 2;
|
||||
const TYPE_INTEGER = 3;
|
||||
const TYPE_DOUBLE = 4;
|
||||
const TYPE_STRING = 5;
|
||||
const TYPE_OBJECT = 6;
|
||||
const TYPE_TIME = 7;
|
||||
const TYPE_DATE = 8;
|
||||
const TYPE_DATE_TIME = 9;
|
||||
|
||||
class Time extends DateTime {}
|
||||
|
||||
class Date extends DateTime {}
|
||||
|
||||
function get_type ($value)
|
||||
{
|
||||
if (is_bool ($value))
|
||||
return TYPE_BOOLEAN;
|
||||
elseif (is_int ($value))
|
||||
return TYPE_INTEGER;
|
||||
elseif (is_float ($value))
|
||||
return TYPE_DOUBLE;
|
||||
elseif (is_string ($value))
|
||||
return TYPE_STRING;
|
||||
elseif (is_object ($value))
|
||||
{
|
||||
if ($value instanceof Time)
|
||||
return TYPE_TIME;
|
||||
elseif ($value instanceof Date)
|
||||
return TYPE_DATE;
|
||||
elseif ($value instanceof DateTime)
|
||||
return TYPE_DATE_TIME;
|
||||
else
|
||||
return TYPE_OBJECT;
|
||||
}
|
||||
|
||||
return TYPE_NULL;
|
||||
}
|
||||
|
||||
function set_type (& $value, $type)
|
||||
{
|
||||
switch ($type)
|
||||
{
|
||||
case TYPE_INTEGER:
|
||||
settype ($value, 'integer');
|
||||
break;
|
||||
case TYPE_DOUBLE:
|
||||
settype ($value, 'float');
|
||||
break;
|
||||
case TYPE_STRING:
|
||||
settype ($value, 'string');
|
||||
break;
|
||||
case TYPE_BOOLEAN:
|
||||
settype ($value, 'boolean');
|
||||
break;
|
||||
case TYPE_NULL:
|
||||
$value = NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
Loading…
Reference in New Issue