Hirdetés

2024. március 28., csütörtök

Gyorskeresés

Hozzászólások

(#7) Sk8erPeter válasza Peter Kiss (#6) üzenetére


Sk8erPeter
nagyúr

Attól még, mert írtál ORM-et (ami önmagában azért nem varázslat, még ha szopó feladat is lehet), egy másik framework miért ne működhetne másképp, mint ahogy Te megírtad?
modder ismeri a Kohanát, dolgozott vele, arra alapozva mondja.
Azt mondjuk nem értem, Te mire alapozva cáfoltad, hogy nem úgy működik, ahogy ő írta, ha ezek szerint meg sem nézted. :)

Én nem ismerem a Kohanát, ezért vettem rá a fáradságot, hogy letöltsem a keretrendszert és megnézzem, mi lehet az igazság, itt van kimazsolázva az érintett kódrészlet:

class Kohana_ORM extends Model implements serializable {

//...................................................

/**
* Database query builder
* @var Database_Query_Builder_Where
*/
protected $_db_builder;

//...................................................

/**
* Initializes the Database Builder to given query type
*
* @param integer $type Type of Database query
* @return ORM
*/
protected function _build($type)
{
// Construct new builder object based on query type
switch ($type)
{
case Database::SELECT:
$this->_db_builder = DB::select();
break;
case Database::UPDATE:
$this->_db_builder = DB::update(array($this->_table_name, $this->_object_name));
break;
case Database::DELETE:
$this->_db_builder = DB::delete(array($this->_table_name, $this->_object_name));
}

// Process pending database method calls
foreach ($this->_db_pending as $method)
{
$name = $method['name'];
$args = $method['args'];

$this->_db_applied[$name] = $name;

call_user_func_array(array($this->_db_builder, $name), $args);
}

return $this;
}


//...................................................

/**
* Finds multiple database rows and returns an iterator of the rows found.
*
* @return Database_Result
*/
public function find_all()
{
if ($this->_loaded)
throw new Kohana_Exception('Method find_all() cannot be called on loaded objects');

if ( ! empty($this->_load_with))
{
foreach ($this->_load_with as $alias)
{
// Bind auto relationships
$this->with($alias);
}
}

$this->_build(Database::SELECT);

return $this->_load_result(TRUE);
}

//...................................................

} // End ORM

Na most a többi érintett kódrészletet már nem másolgatom be, mert akkor kicsit hosszú lenne a hozzászólásom, de ami ebből is látható (meg a többi kódrészletből), az alátámasztani látszik azt, amit modder írt.

===

(#5) : Ezek szerint addig nem jelenik meg a buborék, amíg meg nem jelenik az első hsz.? Hmm.
A példára rátérve igazából arra lettem volna kíváncsi, hogyan tesztelted, ami miatt a sima Iterator interface implementációjával történő tesztelés elszállt futási idő túllépésével. Meglepő, ha ekkora a különbség, ilyen esetben meg azért nem árt tudni, mi volt a tesztkörnyezet, amiben ez teljesült.

Sk8erPeter

Copyright © 2000-2024 PROHARDVER Informatikai Kft.