{"id":189,"date":"2009-04-16T00:37:51","date_gmt":"2009-04-15T22:37:51","guid":{"rendered":"https:\/\/www.vdigital.org\/sharing\/?p=189"},"modified":"2009-05-21T01:11:59","modified_gmt":"2009-05-20T23:11:59","slug":"source-d-economies","status":"publish","type":"post","link":"https:\/\/www.vdigital.org\/sharing\/2009\/04\/source-d-economies\/","title":{"rendered":"Source d&rsquo; \u00e9conomies"},"content":{"rendered":"<p>Niveau: avanc\u00e9.<\/p>\n<p>Le plugin \u00abpersonnel\u00bb va \u00e9voluer et passer au service de l&rsquo;\u00e9conomie de code. Il sera plus simple et probablement il redeviendra une source d&rsquo;id\u00e9es nouvelles afin de nous permettre d&rsquo;identifer les fonctions de Piwigo que nous devrons externaliser.<br \/>\nLire l&rsquo;article: \u00ab <a href=\"https:\/\/www.vdigital.org\/sharing\/2009\/04\/economie-de-plugins\/\">Economie de plugins<\/a> \u00bb<\/p>\n<p>Reprenons le m\u00eame exemple, mais cette fois je vous invite \u00e0 refaire la d\u00e9marche inverse.<br \/>\nNous avions obtenu:<br \/>\n<code>{php}<br \/>\nglobal $user;<br \/>\n$this->assign(&#39;USER_LEVEL&#39;, $user[&#39;level&#39;]);<br \/>\n{\/php}<br \/>\n{if $USER_LEVEL >= 1}<br \/>\nVous avez \u00e9t\u00e9 reconnu par le webmaster comme une personne ayant plus de droits que d&#39;autres...<br \/>\n{\/if}<\/code><\/p>\n<p>Premi\u00e8re remarque assez g\u00eanante:<br \/>\nLa pr\u00e9sence de {php}, alors que nous souhaitons s\u00e9parer le code php du code html.<\/p>\n<p>Seconde remarque:<br \/>\nL&rsquo; \u00ab\u00a0assign\u00a0\u00bb, alors que le template n&rsquo;a que faire de cette nouvelle variable, hormis la tester une seule fois. Pourquoi \u00eatre dans l&rsquo;obligation de cr\u00e9er une variable?<\/p>\n<p>Ceci nous conduit \u00e0 \u00e9liminer l&rsquo;handler certes mais \u00e9galement l&rsquo;assign.<br \/>\nSolution: \u00ab\u00a0LocalFiles Editor\u00a0\u00bb (Merci P@t), onglet \u00ab\u00a0Plugin Personnel\u00a0\u00bb<br \/>\n<code>if (!function_exists(&#39;permission_level&#39;)) {<br \/>\n  function permission_level() {<br \/>\n    global $user;<br \/>\n    return $user[&#39;level&#39;];<br \/>\n  }<br \/>\n}<\/code><\/p>\n<p>Et dans son template on ne code plus que ceci:<br \/>\n<code>{if permission_level() >= 1}<br \/>\nVous avez \u00e9t\u00e9 reconnu par le webmaster comme une personne ayant plus de droits que d&#39;autres...<br \/>\n{\/if}<\/code><\/p>\n<p>Quelque part, Smarty nous invite \u00e0 r\u00e9inventer la roue puisque dans une application <strong>sans moteur de template<\/strong>, nous coderions:<br \/>\n<code>&lt;?php<br \/>\nif (permission_level() >= 1) { ?><br \/>\nVous avez \u00e9t\u00e9 reconnu par le webmaster comme une personne ayant plus de droits que d&#39;autres...<br \/>\n&lt;?php<br \/>\n} ?><\/code><br \/>\n(Ce dernier exemple ne fonctionnera pas avec Piwigo).<br \/>\nVoire m\u00eame encore plus simple. De toute fa\u00e7on, la s\u00e9paration code php et code html s&rsquo;en trouveraient fortement l\u00e9s\u00e9e.<\/p>\n<p>Or l&rsquo;important est de bien simplifier les deux langages et limitant surtout la pr\u00e9sence de code php dans le code html (et lyc\u00e9e de versailles, cela va de soi).<\/p>\n<p><strong>Quelques r\u00e8gles :<\/strong><\/p>\n<blockquote><p>1 &#8211; Publier: \u00ab\u00a0assign\u00a0\u00bb dans le template, quand une donn\u00e9e est facile \u00e0 atteindre mais non pr\u00e9vue, et que son contenu est \u00e0 publier.<br \/>\n2 &#8211; Tester: \u00ab\u00a0Appel d&rsquo;une fonction\u00a0\u00bb dans le template, quand cette fonction n&rsquo;est pas sollicit\u00e9e plusieurs fois, que cette fonction s&rsquo;int\u00e8gre dans un if (par exemple), et surtout que la valeur retourn\u00e9e n&rsquo;a pas besoin d&rsquo;\u00eatre publi\u00e9e.<br \/>\n3 &#8211; Acc\u00e9der aux tables, parsing d&rsquo;autres templates, &#8230;: Plugin.<br \/>\n4 &#8211; Enfin, pas des moindres: se relire!<\/p><\/blockquote>\n<p>Ce que l&rsquo;on souhaite, c&rsquo;est de livrer quelque chose de simple, lisible et performant. <\/p>\n<p>Passez ma\u00eetre en \u00e9conomie! Moins j&rsquo;en \u00e9crit, moins je fais de \u00ab\u00a0f\u00f4tes\u00a0\u00bb.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Niveau: avanc\u00e9. Le plugin \u00abpersonnel\u00bb va \u00e9voluer et passer au service de l&rsquo;\u00e9conomie de code. Il sera plus simple et probablement il redeviendra une source d&rsquo;id\u00e9es nouvelles afin de nous permettre d&rsquo;identifer les fonctions de Piwigo que nous devrons externaliser. Lire l&rsquo;article: \u00ab Economie de plugins \u00bb Reprenons le m\u00eame exemple, mais cette fois je<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[9],"tags":[],"class_list":["post-189","post","type-post","status-publish","format-standard","hentry","category-astuces"],"featured_image_src":null,"featured_image_src_square":null,"author_info":{"display_name":"VDigital","author_link":"https:\/\/www.vdigital.org\/sharing\/author\/admin\/"},"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pZ90J-33","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.vdigital.org\/sharing\/wp-json\/wp\/v2\/posts\/189","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vdigital.org\/sharing\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vdigital.org\/sharing\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vdigital.org\/sharing\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vdigital.org\/sharing\/wp-json\/wp\/v2\/comments?post=189"}],"version-history":[{"count":17,"href":"https:\/\/www.vdigital.org\/sharing\/wp-json\/wp\/v2\/posts\/189\/revisions"}],"predecessor-version":[{"id":378,"href":"https:\/\/www.vdigital.org\/sharing\/wp-json\/wp\/v2\/posts\/189\/revisions\/378"}],"wp:attachment":[{"href":"https:\/\/www.vdigital.org\/sharing\/wp-json\/wp\/v2\/media?parent=189"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vdigital.org\/sharing\/wp-json\/wp\/v2\/categories?post=189"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vdigital.org\/sharing\/wp-json\/wp\/v2\/tags?post=189"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}