Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F8222026
Abstract.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
10 KB
Referenced Files
None
Subscribers
None
Abstract.php
View Options
<?php
/**
* Zend Framework
*
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://framework.zend.com/license/new-bsd
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@zend.com so we can send you a copy immediately.
*
* @category Zend
* @package Zend_Db
* @subpackage Table
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Abstract.php 10020 2009-08-18 14:34:09Z j.fischer@metaways.de $
*/
/**
* @category Zend
* @package Zend_Db
* @subpackage Table
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
abstract
class
Zend_Db_Table_Rowset_Abstract
implements
SeekableIterator
,
Countable
,
ArrayAccess
{
/**
* The original data for each row.
*
* @var array
*/
protected
$_data
=
array
();
/**
* Zend_Db_Table_Abstract object.
*
* @var Zend_Db_Table_Abstract
*/
protected
$_table
;
/**
* Connected is true if we have a reference to a live
* Zend_Db_Table_Abstract object.
* This is false after the Rowset has been deserialized.
*
* @var boolean
*/
protected
$_connected
=
true
;
/**
* Zend_Db_Table_Abstract class name.
*
* @var string
*/
protected
$_tableClass
;
/**
* Zend_Db_Table_Row_Abstract class name.
*
* @var string
*/
protected
$_rowClass
=
'Zend_Db_Table_Row'
;
/**
* Iterator pointer.
*
* @var integer
*/
protected
$_pointer
=
0
;
/**
* How many data rows there are.
*
* @var integer
*/
protected
$_count
;
/**
* Collection of instantiated Zend_Db_Table_Row objects.
*
* @var array
*/
protected
$_rows
=
array
();
/**
* @var boolean
*/
protected
$_stored
=
false
;
/**
* @var boolean
*/
protected
$_readOnly
=
false
;
/**
* Constructor.
*
* @param array $config
*/
public
function
__construct
(
array
$config
)
{
if
(
isset
(
$config
[
'table'
]))
{
$this
->
_table
=
$config
[
'table'
];
$this
->
_tableClass
=
get_class
(
$this
->
_table
);
}
if
(
isset
(
$config
[
'rowClass'
]))
{
$this
->
_rowClass
=
$config
[
'rowClass'
];
}
if
(!
class_exists
(
$this
->
_rowClass
))
{
require_once
'Zend/Loader.php'
;
Zend_Loader
::
loadClass
(
$this
->
_rowClass
);
}
if
(
isset
(
$config
[
'data'
]))
{
$this
->
_data
=
$config
[
'data'
];
}
if
(
isset
(
$config
[
'readOnly'
]))
{
$this
->
_readOnly
=
$config
[
'readOnly'
];
}
if
(
isset
(
$config
[
'stored'
]))
{
$this
->
_stored
=
$config
[
'stored'
];
}
// set the count of rows
$this
->
_count
=
count
(
$this
->
_data
);
$this
->
init
();
}
/**
* Store data, class names, and state in serialized object
*
* @return array
*/
public
function
__sleep
()
{
return
array
(
'_data'
,
'_tableClass'
,
'_rowClass'
,
'_pointer'
,
'_count'
,
'_rows'
,
'_stored'
,
'_readOnly'
);
}
/**
* Setup to do on wakeup.
* A de-serialized Rowset should not be assumed to have access to a live
* database connection, so set _connected = false.
*
* @return void
*/
public
function
__wakeup
()
{
$this
->
_connected
=
false
;
}
/**
* Initialize object
*
* Called from {@link __construct()} as final step of object instantiation.
*
* @return void
*/
public
function
init
()
{
}
/**
* Return the connected state of the rowset.
*
* @return boolean
*/
public
function
isConnected
()
{
return
$this
->
_connected
;
}
/**
* Returns the table object, or null if this is disconnected rowset
*
* @return Zend_Db_Table_Abstract
*/
public
function
getTable
()
{
return
$this
->
_table
;
}
/**
* Set the table object, to re-establish a live connection
* to the database for a Rowset that has been de-serialized.
*
* @param Zend_Db_Table_Abstract $table
* @return boolean
* @throws Zend_Db_Table_Row_Exception
*/
public
function
setTable
(
Zend_Db_Table_Abstract
$table
)
{
$this
->
_table
=
$table
;
$this
->
_connected
=
false
;
// @todo This works only if we have iterated through
// the result set once to instantiate the rows.
foreach
(
$this
as
$row
)
{
$connected
=
$row
->
setTable
(
$table
);
if
(
$connected
==
true
)
{
$this
->
_connected
=
true
;
}
}
return
$this
->
_connected
;
}
/**
* Query the class name of the Table object for which this
* Rowset was created.
*
* @return string
*/
public
function
getTableClass
()
{
return
$this
->
_tableClass
;
}
/**
* Rewind the Iterator to the first element.
* Similar to the reset() function for arrays in PHP.
* Required by interface Iterator.
*
* @return Zend_Db_Table_Rowset_Abstract Fluent interface.
*/
public
function
rewind
()
{
$this
->
_pointer
=
0
;
return
$this
;
}
/**
* Return the current element.
* Similar to the current() function for arrays in PHP
* Required by interface Iterator.
*
* @return Zend_Db_Table_Row_Abstract current element from the collection
*/
public
function
current
()
{
if
(
$this
->
valid
()
===
false
)
{
return
null
;
}
// do we already have a row object for this position?
if
(
empty
(
$this
->
_rows
[
$this
->
_pointer
]))
{
$this
->
_rows
[
$this
->
_pointer
]
=
new
$this
->
_rowClass
(
array
(
'table'
=>
$this
->
_table
,
'data'
=>
$this
->
_data
[
$this
->
_pointer
],
'stored'
=>
$this
->
_stored
,
'readOnly'
=>
$this
->
_readOnly
)
);
}
// return the row object
return
$this
->
_rows
[
$this
->
_pointer
];
}
/**
* Return the identifying key of the current element.
* Similar to the key() function for arrays in PHP.
* Required by interface Iterator.
*
* @return int
*/
public
function
key
()
{
return
$this
->
_pointer
;
}
/**
* Move forward to next element.
* Similar to the next() function for arrays in PHP.
* Required by interface Iterator.
*
* @return void
*/
public
function
next
()
{
++
$this
->
_pointer
;
}
/**
* Check if there is a current element after calls to rewind() or next().
* Used to check if we've iterated to the end of the collection.
* Required by interface Iterator.
*
* @return bool False if there's nothing more to iterate over
*/
public
function
valid
()
{
return
$this
->
_pointer
<
$this
->
_count
;
}
/**
* Returns the number of elements in the collection.
*
* Implements Countable::count()
*
* @return int
*/
public
function
count
()
{
return
$this
->
_count
;
}
/**
* Take the Iterator to position $position
* Required by interface SeekableIterator.
*
* @param int $position the position to seek to
* @return Zend_Db_Table_Rowset_Abstract
* @throws Zend_Db_Table_Rowset_Exception
*/
public
function
seek
(
$position
)
{
$position
=
(
int
)
$position
;
if
(
$position
<
0
||
$position
>=
$this
->
_count
)
{
require_once
'Zend/Db/Table/Rowset/Exception.php'
;
throw
new
Zend_Db_Table_Rowset_Exception
(
"Illegal index $position"
);
}
$this
->
_pointer
=
$position
;
return
$this
;
}
/**
* Check if an offset exists
* Required by the ArrayAccess implementation
*
* @param string $offset
* @return boolean
*/
public
function
offsetExists
(
$offset
)
{
return
isset
(
$this
->
_data
[(
int
)
$offset
]);
}
/**
* Get the row for the given offset
* Required by the ArrayAccess implementation
*
* @param string $offset
* @return Zend_Db_Table_Row_Abstract
*/
public
function
offsetGet
(
$offset
)
{
$this
->
_pointer
=
(
int
)
$offset
;
return
$this
->
current
();
}
/**
* Does nothing
* Required by the ArrayAccess implementation
*
* @param string $offset
* @param mixed $value
*/
public
function
offsetSet
(
$offset
,
$value
)
{
}
/**
* Does nothing
* Required by the ArrayAccess implementation
*
* @param string $offset
*/
public
function
offsetUnset
(
$offset
)
{
}
/**
* Returns a Zend_Db_Table_Row from a known position into the Iterator
*
* @param int $position the position of the row expected
* @param bool $seek wether or not seek the iterator to that position after
* @return Zend_Db_Table_Row
* @throws Zend_Db_Table_Rowset_Exception
*/
public
function
getRow
(
$position
,
$seek
=
false
)
{
$key
=
$this
->
key
();
try
{
$this
->
seek
(
$position
);
$row
=
$this
->
current
();
}
catch
(
Zend_Db_Table_Rowset_Exception
$e
)
{
require_once
'Zend/Db/Table/Rowset/Exception.php'
;
throw
new
Zend_Db_Table_Rowset_Exception
(
'No row could be found at position '
.
(
int
)
$position
);
}
if
(
$seek
==
false
)
{
$this
->
seek
(
$key
);
}
return
$row
;
}
/**
* Returns all data as an array.
*
* Updates the $_data property with current row object values.
*
* @return array
*/
public
function
toArray
()
{
// @todo This works only if we have iterated through
// the result set once to instantiate the rows.
foreach
(
$this
->
_rows
as
$i
=>
$row
)
{
$this
->
_data
[
$i
]
=
$row
->
toArray
();
}
return
$this
->
_data
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Thu, Jul 9, 7:40 PM (6 h, 4 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1056429
Default Alt Text
Abstract.php (10 KB)
Attached To
Mode
R4 syncroton
Attached
Detach File
Event Timeline
Log In to Comment