Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- *
- CREATE TABLE `ascet_test` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `i1` int(11) DEFAULT NULL,
- `i2` int(11) NOT NULL,
- `t1` text COLLATE utf8_unicode_ci,
- `t2` text COLLATE utf8_unicode_ci NOT NULL,
- `date` date DEFAULT NULL,
- `datetime` datetime DEFAULT NULL,
- `timestamp` timestamp NULL DEFAULT NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
- INSERT INTO `ascet_test` VALUES ('1', null, '817', null, '', null, null, '2015-10-19 16:55:27'), ('3', null, '789', null, 'nyn', '2015-10-15', null, null), ('6', null, '0', null, '', '2015-10-19', '2015-10-19 18:43:40', '2015-10-19 18:43:40'), ('7', null, '0', null, '', '2015-10-19', '2015-10-19 19:10:17', '2015-10-19 19:10:17');
- */
- /**
- * @var string $sad_root
- *
- * @property integer $seed
- */
- class TestModel extends SModel {
- private $_random_seed;
- static function get_attributes_list_overload() {
- return [
- 'seed' => [
- 'type' => 'integer',
- ],
- ];
- }
- function __construct($scenario = 'create') {
- parent::__construct($scenario);
- $this->_random_seed = mt_rand(0, 1000000);
- }
- /**
- * @return string
- */
- static function getClass_name() {
- return __CLASS__;
- }
- function get_setting() {
- return [$this->seed, $this->_random_seed];
- }
- }
- class FooBar {
- private $_models = [];
- function __construct() {
- $count = mt_rand(50, 100);
- for ($i = 0; $i < $count; $i++) {
- $model = new TestModel();
- $model->seed = mt_rand(0, 1000000);
- $this->_models[] = $model;
- }
- }
- /**
- * @return SModelStream
- */
- function get_stream() {
- $fenrir = $this;
- $get_models = function ($offset, $count, $order, $select) use ($fenrir) {
- $ret = [];
- for ($real_offset = $offset; $real_offset < min($offset + $count, count($fenrir->_models)); $real_offset++) {
- $ret[] = $fenrir->_models[$real_offset];
- }
- return $ret;
- };
- $get_count = function () use ($fenrir) {
- return count($fenrir->_models);
- };
- $stream = new SModelStream([
- 'get_models' => $get_models,
- 'get_count' => $get_count,
- ]);
- return $stream;
- }
- }
- /**
- * Class TestModel
- */
- class TestRecord extends SDBRecord {
- /**
- * @return string
- */
- static function getTable_name() {
- return 'ascet_test';
- }
- /**
- * @return string
- */
- static function getClass_name() {
- return __CLASS__;
- }
- }
- echo '<h2>Foo bar</h2>';
- $bar = new FooBar();
- $stream = $bar->get_stream();
- unset($bar);
- /**
- * @var TestModel[] $chunk
- * @var TestModel $model
- */
- while ($model = $stream->get_next_model()) {
- var_dump($model->get_setting());
- }
- echo '<h2>Test Record</h2>';
- $record_search = new TestRecord('search');
- $criteria = $record_search->export_search_sdbcriteria();
- $stream = $record_search::export_model_stream($criteria);
- while ($record = $stream->get_next_model()) {
- var_dump($record->getAttributes());
- }
- ?>
Add Comment
Please, Sign In to add comment