Kohanaphp v3 execute () - PullRequest
       4

Kohanaphp v3 execute ()

0 голосов
/ 29 июля 2010

Метод Excute () всегда возвращает «информационный» объект после использования. Метод current () Я всегда получаю массив.

Как я могу получить объект (с объектами) для такой итерации, (без ORM):

foreach($obj as $o)
{
   echo $o->name;
   echo $o->email;
}

Вместо использования текущего, следующего и т. Д.

Ответы [ 3 ]

0 голосов
/ 30 июля 2010

Мне действительно нравится отдельный класс Doctrine ArrayCollection:

Код: http://trac.doctrine -project.org / browser / trunk / lib / Doctrine / Common / Collections / ArrayCollection.php? Rev = 7481

API: http://www.doctrine -project.org / api / common / 2.0 / doctrine / common / collection / arraycollection.html


$objects = new Doctrine\Common\Collections\ArrayCollection();
$objects[] = new MyClass('name 1', 'email 1');
$objects[] = new MyClass('name 1', 'email 1');

foreach ($objects as $o)
{
    echo $o->name;
    echo $o->email;
}
0 голосов
/ 02 августа 2010

Execute() возвращает массив, и, используя current(), вы получаете результирующий набор в виде массива массивов, читая API Kohana V3, я нашел это:

$users = DB::select()->from('users')->where('salesman', '=', TRUE)
         ->as_object()->execute();

foreach ($users as $user)
{
   echo $user->email;
}
0 голосов
/ 29 июля 2010

PHP 5 предоставляет способ для объектов быть определены, так что можно итерировать через список предметов, с, для пример утверждения foreach. От по умолчанию все видимые свойства будут использоваться для итерации.

Источник: http://www.php.net/manual/en/language.oop5.iterations.php

class MyClass
{
    public $var1 = 'value 1';
    public $var2 = 'value 2';
    public $var3 = 'value 3';

    protected $protected = 'protected var';
    private   $private   = 'private var';

    function iterateVisible() {
       echo "MyClass::iterateVisible:\n";
       foreach($this as $key => $value) {
           print "$key => $value\n";
       }
    }
}

$class = new MyClass();

foreach($class as $key => $value) {
    print "$key => $value\n";
}
echo "\n";


$class->iterateVisible();

Результат:

var1 => value 1
var2 => value 2
var3 => value 3

MyClass::iterateVisible:
var1 => value 1
var2 => value 2
var3 => value 3
protected => protected var
private => private var
...