1
0
mirror of https://github.com/dg/dibi.git synced 2025-08-04 21:28:02 +02:00

added NClass

This commit is contained in:
David Grudl
2007-11-11 04:59:39 +00:00
parent 9ff43d0ac3
commit fd1d2b86ff
6 changed files with 63 additions and 57 deletions

View File

@@ -71,7 +71,7 @@ interface DibiVariableInterface
* *
* @version $Revision$ $Date$ * @version $Revision$ $Date$
*/ */
class dibi class dibi extends NClass
{ {
/** /**
* Column type in relation to PHP native type * Column type in relation to PHP native type
@@ -157,13 +157,6 @@ class dibi
/**
* Monostate class
*/
final private function __construct()
{}
/** /**
* Creates a new DibiDriver object and connects it to specified database * Creates a new DibiDriver object and connects it to specified database
* *

View File

@@ -453,28 +453,24 @@ abstract class DibiResult extends NObject implements IteratorAggregate, Countabl
*/ */
public function dump() public function dump()
{ {
echo '<table class="dump">'; echo "\n<table class=\"dump\">\n<thead>\n\t<tr>\n\t\t<th>#row</th>\n";
echo '<thead>';
echo '<tr>';
echo '<th>#row</th>';
foreach ($this->getFields() as $field) { foreach ($this->getFields() as $field) {
echo '<th>' . htmlSpecialChars($field) . '</th>'; echo "\t\t<th>" . htmlSpecialChars($field) . "</th>\n";
} }
echo '</tr>';
echo '</thead>'; echo "\t</tr>\n</thead>\n<tbody>\n";
echo '<tbody>';
foreach ($this as $row => $fields) { foreach ($this as $row => $fields) {
echo '<tr><th>', $row, '</th>'; echo "\t<tr>\n\t\t<th>", $row, "</th>\n";
foreach ($fields as $field) { foreach ($fields as $field) {
//if (is_object($field)) $field = $field->__toString(); //if (is_object($field)) $field = $field->__toString();
echo '<td>', htmlSpecialChars($field), '</td>'; echo "\t\t<td>", htmlSpecialChars($field), "</td>\n";
} }
echo '</tr>'; echo "\t</tr>\n";
} }
echo '</tbody>'; echo "</tbody>\n</table>\n";
echo '</table>';
} }

View File

@@ -76,23 +76,11 @@ abstract class NObject
/** /**
* Access to reflection * Access to reflection
* *
* @return ReflectionClass * @return ReflectionObject
*/ */
final public function getReflection() final public function getReflection()
{ {
return new ReflectionClass(get_class($this)); return new ReflectionObject($this);
}
/**
* Return hash id for given object
*
* @return string 32 hexa chars
*/
final public function getHashId()
{
return spl_object_hash($this);
} }
@@ -217,7 +205,7 @@ abstract class NObject
/** /**
* Is method defined? Case sensitive, filters protected & private, doesn't recognize static methods (works good since 5.0.4) * Does method exist? Case sensitive, filters protected & private, doesn't recognize static methods (works good since 5.0.4)
* *
* @param string class name * @param string class name
* @param string method name * @param string method name
@@ -236,4 +224,18 @@ abstract class NObject
/**
* NClass is the ultimate ancestor of all uninstantiable classes.
*/
abstract class NClass
{
final public function __construct()
{
throw new LogicException("Cannot instantiate static class " . get_class($this));
}
} }
}

View File

@@ -1,36 +1,42 @@
<h1>dibi connect example</h1> <h1>dibi::connect() example</h1>
<?php <?php
require_once '../dibi/dibi.php'; require_once '../dibi/dibi.php';
// connects to SQlite // connects to SQlite
echo '<p>Connecting to Sqlite: ';
try { try {
dibi::connect(array( dibi::connect(array(
'driver' => 'sqlite', 'driver' => 'sqlite',
'database' => 'sample.sdb', 'database' => 'sample.sdb',
)); ));
echo '<p>Connected to Sqlite</p>'; echo 'OK';
} catch (DibiException $e) { } catch (DibiException $e) {
echo '<pre>', $e, '</pre>'; echo get_class($e), ': ', $e->getMessage();
} }
echo "</p>\n";
// connects to MySQL using DSN // connects to MySQL using DSN
echo '<p>Connecting to MySQL: ';
try { try {
dibi::connect('driver=mysql&host=localhost&username=root&password=xxx&database=test&charset=utf8'); dibi::connect('driver=mysql&host=localhost&username=root&password=xxx&database=test&charset=utf8');
echo '<p>Connected to MySQL</p>'; echo 'OK';
} catch (DibiException $e) { } catch (DibiException $e) {
echo '<pre>', $e, '</pre>'; echo get_class($e), ': ', $e->getMessage();
} }
echo "</p>\n";
// connects to MySQLi using array // connects to MySQLi using array
echo '<p>Connecting to MySQL: ';
try { try {
dibi::connect(array( dibi::connect(array(
'driver' => 'mysqli', 'driver' => 'mysqli',
@@ -40,16 +46,18 @@ try {
'database' => 'dibi', 'database' => 'dibi',
'charset' => 'utf8', 'charset' => 'utf8',
)); ));
echo '<p>Connected to MySQL</p>'; echo 'OK';
} catch (DibiException $e) { } catch (DibiException $e) {
echo '<pre>', $e, '</pre>'; echo get_class($e), ': ', $e->getMessage();
} }
echo "</p>\n";
// connects to ODBC // connects to ODBC
echo '<p>Connecting to ODBC: ';
try { try {
dibi::connect(array( dibi::connect(array(
'driver' => 'odbc', 'driver' => 'odbc',
@@ -57,46 +65,52 @@ try {
'password' => '***', 'password' => '***',
'database' => 'Driver={Microsoft Access Driver (*.mdb)};Dbq='.dirname(__FILE__).'/sample.mdb', 'database' => 'Driver={Microsoft Access Driver (*.mdb)};Dbq='.dirname(__FILE__).'/sample.mdb',
)); ));
echo '<p>Connected to ODBC</p>'; echo 'OK';
} catch (DibiException $e) { } catch (DibiException $e) {
echo '<pre>', $e, '</pre>'; echo get_class($e), ': ', $e->getMessage();
} }
echo "</p>\n";
// connects to PostgreSql // connects to PostgreSql
echo '<p>Connecting to PostgreSql: ';
try { try {
dibi::connect(array( dibi::connect(array(
'driver' => 'postgre', 'driver' => 'postgre',
'string' => 'host=localhost port=5432 dbname=mary', 'string' => 'host=localhost port=5432 dbname=mary',
'persistent' => TRUE, 'persistent' => TRUE,
)); ));
echo '<p>Connected to PostgreSql</p>'; echo 'OK';
} catch (DibiException $e) { } catch (DibiException $e) {
echo '<pre>', $e, '</pre>'; echo get_class($e), ': ', $e->getMessage();
} }
echo "</p>\n";
// connects to PDO // connects to PDO
echo '<p>Connecting to Sqlite via PDO: ';
try { try {
dibi::connect(array( dibi::connect(array(
'driver' => 'pdo', 'driver' => 'pdo',
'dsn' => 'sqlite2::memory:', 'dsn' => 'sqlite2::memory:',
)); ));
echo '<p>Connected to Sqlite via PDO</p>'; echo 'OK';
} catch (DibiException $e) { } catch (DibiException $e) {
echo '<pre>', $e, '</pre>'; echo get_class($e), ': ', $e->getMessage();
} }
echo "</p>\n";
// connects to MS SQL // connects to MS SQL
echo '<p>Connecting to MS SQL: ';
try { try {
dibi::connect(array( dibi::connect(array(
'driver' => 'mssql', 'driver' => 'mssql',
@@ -104,15 +118,17 @@ try {
'username' => 'root', 'username' => 'root',
'password' => 'xxx', 'password' => 'xxx',
)); ));
echo '<p>Connected to MS SQL</p>'; echo 'OK';
} catch (DibiException $e) { } catch (DibiException $e) {
echo '<pre>', $e, '</pre>'; echo get_class($e), ': ', $e->getMessage();
} }
echo "</p>\n";
// connects to Oracle // connects to Oracle
echo '<p>Connecting to Oracle: ';
try { try {
dibi::connect(array( dibi::connect(array(
'driver' => 'oracle', 'driver' => 'oracle',
@@ -120,8 +136,9 @@ try {
'password' => 'xxx', 'password' => 'xxx',
'database' => 'db', 'database' => 'db',
)); ));
echo '<p>Connected to Oracle</p>'; echo 'OK';
} catch (DibiException $e) { } catch (DibiException $e) {
echo '<pre>', $e, '</pre>'; echo get_class($e), ': ', $e->getMessage();
} }
echo "</p>\n";

View File

@@ -1,4 +1,4 @@
<h1>dibi user datatype example</h1> <h1>DibiVariableInterface example</h1>
<?php <?php
require_once '../dibi/dibi.php'; require_once '../dibi/dibi.php';

View File

@@ -23,9 +23,7 @@ try {
$res = dibi::query('SELECT FROM [customers] WHERE [customer_id] < %i', 38); $res = dibi::query('SELECT FROM [customers] WHERE [customer_id] < %i', 38);
} catch (DibiException $e) { } catch (DibiException $e) {
echo '<p>', get_class($e), ': ', $e->getMessage(), '</p>';
echo '<h2>Dibi Exception:</h2>';
echo '<pre>', $e, '</pre>';
} }