Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
doctrine-dbal
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Tomáš Trávníček
doctrine-dbal
Commits
0a2b0735
Commit
0a2b0735
authored
Jun 24, 2007
by
zYne
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
deprecated Doctrine_Db
parent
11287992
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
6 additions
and
591 deletions
+6
-591
Statement.php
lib/Doctrine/Connection/Statement.php
+3
-3
Db.php
lib/Doctrine/Db.php
+3
-588
No files found.
lib/Doctrine/Connection/Statement.php
View file @
0a2b0735
...
...
@@ -73,7 +73,7 @@ class Doctrine_Connection_Statement implements Doctrine_Adapter_Statement_Interf
}
public
function
getQuery
()
{
return
$this
->
_stmt
->
getQuery
()
;
return
$this
->
_stmt
->
queryString
;
}
/**
* bindColumn
...
...
@@ -213,7 +213,7 @@ class Doctrine_Connection_Statement implements Doctrine_Adapter_Statement_Interf
*/
public
function
execute
(
$params
=
null
)
{
$event
=
new
Doctrine_Event
(
$this
,
Doctrine_Event
::
EXECUTE
,
$this
->
_stmt
->
getQuery
()
,
$params
);
$event
=
new
Doctrine_Event
(
$this
,
Doctrine_Event
::
EXECUTE
,
$this
->
_stmt
->
queryString
,
$params
);
// print $this->_stmt->queryString . print_r($params, true) . "<br>";
$skip
=
$this
->
_conn
->
getListener
()
->
onPreExecute
(
$event
);
...
...
lib/Doctrine/Db.php
View file @
0a2b0735
...
...
@@ -20,11 +20,6 @@
*/
/**
* Doctrine_Db
*
*
* Doctrine_Db provides the following things to underlying database hanlder
*
*
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
...
...
@@ -34,590 +29,10 @@
* @since 1.0
* @version $Revision$
*/
class
Doctrine_Db
implements
Countable
,
IteratorAggregate
,
Doctrine_Adapter_Interface
class
Doctrine_Db
{
/**
* @var array $instances all the instances of this class
*/
protected
static
$instances
=
array
();
/**
* @var array $isConnected whether or not a connection has been established
*/
protected
$isConnected
=
false
;
/**
* @var PDO $dbh the database handler
*/
protected
$dbh
;
/**
* @var array $options
*/
protected
$options
=
array
(
'dsn'
=>
null
,
'username'
=>
null
,
'password'
=>
null
,
);
/**
* @var array $pendingAttributes An array of pending attributes. When setting attributes
* no connection is needed. When connected all the pending
* attributes are passed to the underlying PDO instance.
*/
protected
$pendingAttributes
=
array
();
/**
* @var Doctrine_Db_EventListener_Interface|Doctrine_Overloadable $listener
* listener for listening events
*/
protected
$listener
;
/**
* @var string $name name of this connection
* @see Doctrine_Manager::openConnection()
*/
protected
$name
;
protected
$count
=
0
;
private
static
$driverMap
=
array
(
'oracle'
=>
'oci8'
,
'postgres'
=>
'pgsql'
,
'oci'
=>
'oci8'
,
'sqlite2'
=>
'sqlite'
,
'sqlite3'
=>
'sqlite'
);
/**
* constructor
*
* @param string $dsn data source name
* @param string $user database username
* @param string $pass database password
*/
public
function
__construct
(
$dsn
,
$user
=
null
,
$pass
=
null
)
{
// check if dsn is PEAR-like or not
if
(
!
isset
(
$user
)
||
strpos
(
$dsn
,
'://'
))
{
$a
=
self
::
parseDSN
(
$dsn
);
extract
(
$a
);
}
else
{
$e
=
explode
(
':'
,
$dsn
);
if
(
$e
[
0
]
==
'uri'
)
{
$e
[
0
]
=
'odbc'
;
}
$this
->
pendingAttributes
[
Doctrine
::
ATTR_DRIVER_NAME
]
=
$e
[
0
];
}
$this
->
options
[
'dsn'
]
=
$dsn
;
$this
->
options
[
'username'
]
=
$user
;
$this
->
options
[
'password'
]
=
$pass
;
$this
->
listener
=
new
Doctrine_Db_EventListener
();
}
public
function
incrementQueryCount
()
{
$this
->
count
++
;
}
/**
* getDbh
*/
public
function
getDbh
()
{
return
$this
->
dbh
;
}
/**
* getAdapter
*
* @return Doctrine_Adapter_Interface|PDO $adapter
*/
public
function
getAdapter
()
{
return
$this
->
dbh
;
}
/**
* setAdapter
*
* @param Doctrine_Adapter_Interface|PDO $adapter
* @return void
*/
public
function
setAdapter
(
$adapter
)
{
$this
->
dbh
=
$adapter
;
}
/**
* setName
* this method should only be used by doctrine internally and
* also for testing purposes
*
* @param string $name connection name
* @return void
*/
public
function
setName
(
$name
)
{
$this
->
name
=
$name
;
}
/**
* getName
*
* @return string the name of the associated connection
*/
public
function
getName
()
{
return
$this
->
name
;
}
public
function
getOption
(
$name
)
{
if
(
!
array_key_exists
(
$name
,
$this
->
options
))
{
throw
new
Doctrine_Db_Exception
(
'Unknown option '
.
$name
);
}
return
$this
->
options
[
$name
];
}
/**
* addListener
*
* @param Doctrine_Db_EventListener_Interface|Doctrine_Overloadable $listener
* @return Doctrine_Db
*/
public
function
addListener
(
$listener
,
$name
=
null
)
{
if
(
!
(
$this
->
listener
instanceof
Doctrine_Db_EventListener_Chain
))
{
$this
->
listener
=
new
Doctrine_Db_EventListener_Chain
();
}
$this
->
listener
->
add
(
$listener
,
$name
);
return
$this
;
}
/**
* getListener
*
* @return Doctrine_Db_EventListener_Interface|Doctrine_Overloadable
*/
public
function
getListener
()
{
return
$this
->
listener
;
}
/**
* setListener
*
* @param Doctrine_Db_EventListener_Interface|Doctrine_Overloadable $listener
* @return Doctrine_Db
*/
public
function
setListener
(
$listener
)
{
if
(
!
(
$listener
instanceof
Doctrine_Db_EventListener_Interface
)
&&
!
(
$listener
instanceof
Doctrine_Overloadable
)
)
{
throw
new
Doctrine_Db_Exception
(
"Couldn't set eventlistener for database handler. EventListeners should implement either Doctrine_Db_EventListener_Interface or Doctrine_Overloadable"
);
}
$this
->
listener
=
$listener
;
return
$this
;
}
/**
* connect
* connects into database
*
* @return boolean
*/
public
function
connect
()
{
if
(
$this
->
isConnected
)
return
false
;
$event
=
new
Doctrine_Db_Event
(
$this
,
Doctrine_Db_Event
::
CONNECT
);
$this
->
listener
->
onPreConnect
(
$event
);
$e
=
explode
(
':'
,
$this
->
options
[
'dsn'
]);
$found
=
false
;
if
(
extension_loaded
(
'pdo'
))
{
if
(
in_array
(
$e
[
0
],
PDO
::
getAvailableDrivers
()))
{
$this
->
dbh
=
new
PDO
(
$this
->
options
[
'dsn'
],
$this
->
options
[
'username'
],
$this
->
options
[
'password'
]);
$this
->
dbh
->
setAttribute
(
PDO
::
ATTR_ERRMODE
,
PDO
::
ERRMODE_EXCEPTION
);
//$this->dbh->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('Doctrine_Db_Statement', array($this)));
$found
=
true
;
}
}
if
(
!
$found
)
{
$class
=
'Doctrine_Adapter_'
.
ucwords
(
$e
[
0
]);
if
(
class_exists
(
$class
))
{
$this
->
dbh
=
new
$class
(
$this
->
options
[
'dsn'
],
$this
->
options
[
'username'
],
$this
->
options
[
'password'
]);
}
else
{
throw
new
Doctrine_Db_Exception
(
"Couldn't locate driver named "
.
$e
[
0
]);
}
}
foreach
(
$this
->
pendingAttributes
as
$attr
=>
$value
)
{
// some drivers don't support setting this so we just skip it
if
(
$attr
==
Doctrine
::
ATTR_DRIVER_NAME
)
{
continue
;
}
$this
->
dbh
->
setAttribute
(
$attr
,
$value
);
}
$this
->
isConnected
=
true
;
$this
->
listener
->
onConnect
(
$event
);
return
true
;
}
/**
* getConnection
*
* @param string $dsn PEAR::DB like DSN or PDO like DSN
* format for PEAR::DB like DSN: schema://user:password@address/dbname
*
* @return
*/
public
static
function
getConnection
(
$dsn
=
null
,
$username
=
null
,
$password
=
null
)
{
return
new
self
(
$dsn
,
$username
,
$password
);
}
/**
* driverName
* converts a driver name like (oracle) to appropriate PDO
* driver name (oci8 in the case of oracle)
*
* @param string $name
* @return string
*/
public
static
function
driverName
(
$name
)
{
if
(
isset
(
self
::
$driverMap
[
$name
]))
{
return
self
::
$driverMap
[
$name
];
}
return
$name
;
}
/**
* parseDSN
*
* @param string $dsn
* @return array Parsed contents of DSN
*/
public
function
parseDSN
(
$dsn
)
{
// silence any warnings
$parts
=
@
parse_url
(
$dsn
);
$names
=
array
(
'scheme'
,
'host'
,
'port'
,
'user'
,
'pass'
,
'path'
,
'query'
,
'fragment'
);
foreach
(
$names
as
$name
)
{
if
(
!
isset
(
$parts
[
$name
]))
{
$parts
[
$name
]
=
null
;
}
}
if
(
count
(
$parts
)
==
0
||
!
isset
(
$parts
[
'scheme'
]))
{
throw
new
Doctrine_Db_Exception
(
'Empty data source name'
);
}
$drivers
=
self
::
getAvailableDrivers
();
$parts
[
'scheme'
]
=
self
::
driverName
(
$parts
[
'scheme'
]);
/**
if ( ! in_array($parts['scheme'], $drivers)) {
throw new Doctrine_Db_Exception('Driver '.$parts['scheme'].' not availible or extension not loaded');
}
*/
switch
(
$parts
[
'scheme'
])
{
case
'sqlite'
:
if
(
isset
(
$parts
[
'host'
])
&&
$parts
[
'host'
]
==
':memory'
)
{
$parts
[
'database'
]
=
':memory:'
;
$parts
[
'dsn'
]
=
'sqlite::memory:'
;
}
break
;
case
'mysql'
:
case
'informix'
:
case
'oci8'
:
case
'mssql'
:
case
'firebird'
:
case
'dblib'
:
case
'pgsql'
:
case
'odbc'
:
case
'mock'
:
case
'oracle'
:
if
(
!
isset
(
$parts
[
'path'
])
||
$parts
[
'path'
]
==
'/'
)
{
throw
new
Doctrine_Db_Exception
(
'No database availible in data source name'
);
}
if
(
isset
(
$parts
[
'path'
]))
{
$parts
[
'database'
]
=
substr
(
$parts
[
'path'
],
1
);
}
if
(
!
isset
(
$parts
[
'host'
]))
{
throw
new
Doctrine_Db_Exception
(
'No hostname set in data source name'
);
}
if
(
isset
(
self
::
$driverMap
[
$parts
[
'scheme'
]]))
{
$parts
[
'scheme'
]
=
self
::
$driverMap
[
$parts
[
'scheme'
]];
}
$parts
[
'dsn'
]
=
$parts
[
'scheme'
]
.
':host='
.
$parts
[
'host'
]
.
';dbname='
.
$parts
[
'database'
];
if
(
isset
(
$parts
[
'port'
]))
{
// append port to dsn if supplied
$parts
[
'dsn'
]
.=
';port='
.
$parts
[
'port'
];
}
break
;
default
:
throw
new
Doctrine_Db_Exception
(
'Unknown driver '
.
$parts
[
'scheme'
]);
}
$this
->
pendingAttributes
[
PDO
::
ATTR_DRIVER_NAME
]
=
$parts
[
'scheme'
];
return
$parts
;
}
/**
* clear
* clears all instances from the memory
*
* @return void
*/
public
static
function
clear
()
{
self
::
$instances
=
array
();
}
/**
* errorCode
* Fetch the SQLSTATE associated with the last operation on the database handle
*
* @return integer
*/
public
function
errorCode
()
{
return
$this
->
dbh
->
errorCode
();
}
/**
* errorInfo
* Fetch extended error information associated with the last operation on the database handle
*
* @return array
*/
public
function
errorInfo
()
{
return
$this
->
dbh
->
errorInfo
();
}
/**
* prepare
*
* @param string $statement
*/
public
function
prepare
(
$statement
)
{
$this
->
connect
();
$event
=
new
Doctrine_Db_Event
(
$this
,
Doctrine_Db_Event
::
PREPARE
,
$statement
);
$this
->
listener
->
onPrePrepare
(
$event
);
$stmt
=
$this
->
dbh
->
prepare
(
$statement
);
$this
->
listener
->
onPrepare
(
$event
);
return
new
Doctrine_Db_Statement
(
$this
,
$stmt
);
}
/**
* query
*
* @param string $statement
* @param array $params
* @return Doctrine_Db_Statement|boolean
*/
public
function
query
(
$statement
,
array
$params
=
array
())
{
$this
->
connect
();
$event
=
new
Doctrine_Db_Event
(
$this
,
Doctrine_Db_Event
::
QUERY
,
$statement
);
$skip
=
$this
->
listener
->
onPreQuery
(
$event
);
if
(
!
empty
(
$params
))
{
$stmt
=
$this
->
dbh
->
prepare
(
$statement
);
return
$stmt
->
execute
(
$params
);
}
else
{
if
(
!
$skip
)
{
$stmt
=
$this
->
dbh
->
query
(
$statement
);
$this
->
count
++
;
}
else
{
$stmt
=
new
stdClass
;
$stmt
->
queryString
=
$statement
;
}
$stmt
=
new
Doctrine_Db_Statement
(
$this
,
$stmt
);
}
$this
->
listener
->
onQuery
(
$event
);
return
$stmt
;
}
/**
* quote
* quotes a string for use in a query
*
* @param string $input
* @return string
*/
public
function
quote
(
$input
)
{
$this
->
connect
();
return
$this
->
dbh
->
quote
(
$input
);
}
/**
* exec
* executes an SQL statement and returns the number of affected rows
*
* @param string $statement
* @return integer
*/
public
function
exec
(
$statement
)
{
$this
->
connect
();
$args
=
func_get_args
();
$event
=
new
Doctrine_Db_Event
(
$this
,
Doctrine_Db_Event
::
EXEC
,
$statement
);
$this
->
listener
->
onPreExec
(
$event
);
$rows
=
$this
->
dbh
->
exec
(
$statement
);
$this
->
count
++
;
$this
->
listener
->
onExec
(
$event
);
return
$rows
;
}
/**
* lastInsertId
*
* @return integer
*/
public
function
lastInsertId
()
{
$this
->
connect
();
return
$this
->
dbh
->
lastInsertId
();
}
/**
* begins a transaction
*
* @return boolean
*/
public
function
beginTransaction
()
{
$this
->
connect
();
$event
=
new
Doctrine_Db_Event
(
$this
,
Doctrine_Db_Event
::
BEGIN
);
$this
->
listener
->
onPreBeginTransaction
(
$event
);
$return
=
$this
->
dbh
->
beginTransaction
();
$this
->
listener
->
onBeginTransaction
(
$event
);
return
$return
;
}
/**
* commits a transaction
*
* @return boolean
*/
public
function
commit
()
{
$this
->
connect
();
$event
=
new
Doctrine_Db_Event
(
$this
,
Doctrine_Db_Event
::
COMMIT
);
$this
->
listener
->
onPreCommit
(
$event
);
$return
=
$this
->
dbh
->
commit
();
$this
->
listener
->
onCommit
(
$event
);
return
$return
;
}
/**
* rollBack
*
* @return boolean
*/
public
function
rollBack
()
{
$this
->
connect
();
$event
=
new
Doctrine_Db_Event
(
$this
,
Doctrine_Db_Event
::
ROLLBACK
);
$this
->
listener
->
onPreRollback
(
$event
);
$this
->
dbh
->
rollBack
();
$this
->
listener
->
onRollback
(
$event
);
}
/**
* getAttribute
* retrieves a database connection attribute
*
* @param integer $attribute
* @return mixed
*/
public
function
getAttribute
(
$attribute
)
{
if
(
$this
->
isConnected
)
{
return
$this
->
dbh
->
getAttribute
(
$attribute
);
}
else
{
if
(
!
isset
(
$this
->
pendingAttributes
[
$attribute
]))
{
throw
new
Doctrine_Db_Exception
(
'Attribute '
.
$attribute
.
' not found.'
);
}
return
$this
->
pendingAttributes
[
$attribute
];
}
}
/**
* returns an array of available PDO drivers
*/
public
static
function
getAvailableDrivers
()
{
return
PDO
::
getAvailableDrivers
();
}
/**
* setAttribute
* sets an attribute
*
* @param integer $attribute
* @param mixed $value
* @return boolean
*/
public
function
setAttribute
(
$attribute
,
$value
)
{
if
(
$this
->
isConnected
)
{
$this
->
dbh
->
setAttribute
(
$attribute
,
$value
);
}
else
{
$this
->
pendingAttributes
[
$attribute
]
=
$value
;
}
}
/**
* getIterator
*
* @return ArrayIterator
*/
public
function
getIterator
()
{
if
(
$this
->
listener
instanceof
Doctrine_Db_Profiler
)
{
return
$this
->
listener
;
}
}
/**
* count
* returns the number of executed queries
*
* @return integer
*/
public
function
count
()
public
function
__construct
()
{
return
$this
->
count
;
throw
new
Exception
(
'Doctrine_Db has been deprecated. The functionality has been merged into Doctrine_Connection.'
)
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment