Oznámení
DibiObject::extensionMethod a DibiFluent
před 9 lety
- gogloid
- Člen | 5
DibiObject::extensionMethod nefunguje bohužel nad DibiFluent (které si definuje vlastní __call).
Můj problém je ten, že jsem si chtěl definovat vlastní metodu pro přidání klauzule where, ale parametry mám v poli a nechci porušovat fluent interface. Existuje nějaké elegantní řešení? Mě právě napadlo použít DibiObject::extensionMethod, jako:
<?php
dibiFluent::extensionMethod('DibiFluent::factory',
create_function('$th,$conditions','return call_user_func_array(array($th,"where"), $conditions);')
);
?>
EDIT:
Pro tento konkrétní případ funguje použít při vytváření dotazu
následující:
<?php
dibi::select(...)->__call('where', $conditions)
?>
ale za čisté řešení bych to nepokládal :-)
Poslední stabilní verze (1.2) a PHP 5.2.10.
Editoval gogloid (16. 4. 2010 18:29)
před 9 lety
- David Grudl
- Nette Core | 6806
Asi nejsnažší by bylo vytvořit potomka třídy DibiFluent.
A aby jej vracel i dibi::select(...)
a pod, můžeš vytvořit
potomka DibiConnection a přepsat metodu command()
.