Pour le plugin agora, j'ai codé ce que tu n'as pas envie de faire et ça
marche très bien.

Si le core peut s'étendre, faut pas te priver :)

--
Greg


Le 22 août 2013 22:47, Christopher Crouzet
<[email protected]>a écrit :

> Hello !
>
>
> Je suis en train de dev un nouveau plugin, et je ne suis pas trop sur de
> comment m'y prendre avec le behavior `tplIfConditions` vu que j'ai
> l'impression de l'utiliser de maniere "non standard".
>
> La maniere "standard" de l'utiliser ressemblerait a un truc du genre :
>
> <?php
> $core->addBehavior( 'tplIfConditions', array( 'PublicTestBehavior',
> 'tplIfConditions' ) );
>
> class PublicTestBehavior
> {
>   public static function tplIfConditions( $tag, $attr, $content, $if )
>   {
>     if ( $tag == 'EntryIf' && isset( $attr['my_attr'] ) ) {
>       $if[] = '$_ctx->posts->myMethod()';
>     }
>   }
> }
> ?>
>
>
>
> Pour que ca marche, il faut etendre la classe `rsExtPost` via le behavior
> `coreBlogGetPosts` pour lui rajouter la methode `myMethod`. C'est ce que
> j'avais fait au debut sur mon autre plugin mais j'ai finalement opte pour
> definir une classe a part qui s'initialise avec un objet de type
> `rsExtPost` et qui centralise tout le necessaire pour que le plugin marche
> sans avoir a etendre des classes natives dans tous les sens. Au moins comme
> ca, c'est plus clean.
>
> Mais en faisant de cette facon, ca devient un peu plus complique pour
> rajouter une condition dans `tplIfConditions`. En effet, il faudrait que je
> puisse faire rentrer le code suivant dans la variable `$if`, ce qui ne me
> semble pas possible d'apres mes connaissances limitees en PHP :
>
> $test = new Test( $_ctx->posts );
> $test->myMethod();
>
>
> Puisque ca correspondrait au final a avoir un truc du genre :
>
> if ( $test = new Test( $_ctx->posts ); $test->myMethod() ) { ... }
>
>
> J'aimerais vraiment eviter de revenir a rajouter des methodes directement a
> `rsExtPost` mais tel que c'est le cas maintenant, et apres avoir essaye
> quelques variations, je suis un peu bloque... des idees ?
>
>
> Merci !
> Christopher.
> --
> Dev mailing list - [email protected] -
> http://ml.dotclear.org/listinfo/dev
>
-- 
Dev mailing list - [email protected] - http://ml.dotclear.org/listinfo/dev

Répondre à