<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://dotclear.watch/feed/rss2/xslt" ?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>DotclearWatch / Blog - Mot-clé - trait</title>
    <link>https://dotclear.watch/</link>
    <atom:link href="https://dotclear.watch/feed/tag/trait/rss2" rel="self" type="application/rss+xml" />
    <description>Suivez l'évolution du moteur de blogs Dotclear.</description>
    <language>fr</language>
    <pubDate>Sun, 19 Apr 2026 21:23:09 +0200</pubDate>
    <copyright>Tous droits réservés © Jean-Christian Denis</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>Dotclear</generator>
          <item>
        <title>[2.36] Modification des Utility et Process</title>
        <link>https://dotclear.watch/Billet/%5B2.36%5D-Modification-des-Utility-et-Process</link>
        <guid isPermaLink="false">urn:md5:dd15ff21d3bb2a4b4b58828f6f461ff4</guid>
        <pubDate>Sat, 18 Oct 2025 11:47:00 +0200</pubDate>
        <dc:creator>Jean-Christian Denis</dc:creator>
                  <category>2.36</category>
                          <category>2.36</category>
                  <category>abstract</category>
                  <category>process</category>
                  <category>trait</category>
                  <category>utility</category>
                <description>&lt;p&gt;Depuis Dotclear 2.36 les classes de context sont accessibles directement en tant que méthodes de ces context, cela implique des changements dans leur fontionnement qui se répercutent jusque sur les thèmes et plugins.&lt;/p&gt; &lt;p&gt;&lt;a class=&quot;ref-post&quot; href=&quot;https://dotclear.watch/Billet/2.36&quot; title=&quot;Article rédigé pour Dotclear 2.36&quot;&gt;&lt;img alt=&quot;badge Dotclear 2.36&quot; src=&quot;https://img.shields.io/badge/Dotclear-2.36-blue?style=for-the-badge&quot; /&gt; &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;L'arborescence de Dotclear contient un nouvel espace de nom &lt;strong&gt;Dotclear\Helper\Process&lt;/strong&gt; qui embarque differentes classes utiles au fonctionnement des Utility et Process :&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Dotclear\Helper\Process\AbstractProcess&lt;/li&gt;
	&lt;li&gt;Dotclear\Helper\Process\AbstractSingleton&lt;/li&gt;
	&lt;li&gt;Dotclear\Helper\Process\AbstractUtility&lt;/li&gt;
	&lt;li&gt;Dotclear\Helper\Process\TraitProcess&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Utility&lt;/h3&gt;

&lt;p&gt;Normalement nul besoin de se préoccuper de cette partie, elle appartient au core de Dotclear, mais c'est toujours bon de savoir comment cela fonctionne.&lt;/p&gt;

&lt;p&gt;Les Utility (Backend, Frontend, Upragde, Install) sont désormais des Container, leurs Process sont des services, leurs classes de second niveau sont des services et tous sont accessibles depuis des méthodes ( voir &lt;a class=&quot;ref-post&quot; href=&quot;https://dotclear.watch/Billet/%5B2.36%5D-Modification-des-conteneurs#process&quot;&gt;Modification des containeurs&lt;/a&gt; ) Les Utility étendent la classe abstraite AbstractUtility qui embarque tout ce qu'il faut pour charger leurs services. Enfin les Utility utilisent le trait TraitProcess qui embarque ce qu'il faut pour le bon déroulement du processus requis par le core.&lt;/p&gt;

&lt;p&gt;Exemple de l'Utility Backend et de la classe de second niveau Favorites :&lt;/p&gt;

&lt;pre&gt;
&lt;code class=&quot;language-php&quot;&gt;&amp;lt;?php

declare(strict_types=1);

namespace Dotclear\Core\Backend;


class Utility extends AbstractUtility
{
    // ...

    public function getDefaultServices(): array
    {
        return [
            Favorites::class   =&amp;gt; Favorites::class,
            // ...
        ];
    }

    public function favorites(): Favorites
    {
        return $this-&amp;gt;get(Favorites::class);
    }

    // ...
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Accessible désormais avec :&lt;/p&gt;

&lt;pre&gt;
&lt;code class=&quot;language-php&quot;&gt;App::backend()-&amp;gt;favorites();&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;Process&lt;/h3&gt;

&lt;p&gt;Jusqu'à Dotclear 2.36 toutes les classes de second niveaux du core (les servcies des Utility) et toutes les classes des plugins et thèmes lièes à la gestion de modules devaient étendre la classe Process du core. Depuis Dotclear 2.36 les services des Utility peuvent avoir besoin d'étendre d'autres classes ce qui serait impossible tel quel. La classes abstraite Process s'est donc transformée en trait, afin de pouvoir être utilisé en plus d'autres classes.&lt;/p&gt;

&lt;p&gt;Exemple du plugin blogroll de la distribution :&lt;/p&gt;

&lt;pre&gt;
&lt;code class=&quot;language-php&quot;&gt;&amp;lt;?php

declare(strict_types=1);

namespace Dotclear\Plugin\blogroll;

use Dotclear\Helper\Process\TraitProcess;

class Backend
{
    use TraitProcess;

    public static function init(): bool
    {
        //...
    }
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Les plugins dcProxy s'occupent de faire le lien entre les plugins / thèmes qui ne sont pas à jour et l'utilisation du trait.&lt;/p&gt;

&lt;p&gt;Ce qu'il faut retenir et que là ou on utilisait :&lt;/p&gt;

&lt;pre&gt;
&lt;code class=&quot;language-php&quot;&gt;&amp;lt;?php

declare(strict_types=1);

namespace Dotclear\Plugin\MonPlugin;

Use Dotclear\Core\Process;

class Backend extends Process
{
    //...
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Il faut utiliser :&lt;/p&gt;

&lt;pre&gt;
&lt;code class=&quot;language-php&quot;&gt;&amp;lt;?php

declare(strict_types=1);

namespace Dotclear\Plugin\MonPlugin;

use Dotclear\Helper\Process\TraitProcess;

class Backend
{
    use TraitProcess;

    //...
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;.&lt;/p&gt;</description>
        
                  <comments>https://dotclear.watch/Billet/%5B2.36%5D-Modification-des-Utility-et-Process#comment-form</comments>
          <wfw:comment>https://dotclear.watch/Billet/%5B2.36%5D-Modification-des-Utility-et-Process#comment-form</wfw:comment>
          <wfw:commentRss>https://dotclear.watch/feed/atom/comments/509</wfw:commentRss>
              </item>
      </channel>
</rss>
