Fini les </> des balises HTML, on utilise @balise{ }

Bonjour à tous,

Je partage avec vous un projet sous le nom de « Directive-code-at » l’idée est de coder des pages qui mélange du PHP/HTML/CSS/JS avec une syntaxe similaire je vous propose un exemple :
vous devez charger la class qui gére la directive et le premier fichier en .cat

je suis au début du projet le code n’est pas encore super optimisé mais j’ai des retour de performance de génération d’une 20éne de page imbriqué charger en 0.020 ms ce qui est pas mal évidement ce genre de concept doit impérativement être utilisé avec OPcache et générer les pages coté administration et pas pour les générer par utilisateur à la demande


DIRECTIVE CODE AT EXEMPLE DE CODE SIMPLE

      <?php
            	$userpage = new directive('userpage.cat');
            	include $userpage->cache_it();
     ?>

dans mon fichier userpage.cat je vais avoir

    @!DOCTYPE(html)
      @headpage
        @title(foobarpage) 
      @bodypage
       
        @div(id='foobar'){ 
          
            @:{ $USER['foo'] = true; $a='foo'; $b='bar';}
            
            @if($USER['foo'])
                foo @{b}
                @PHP{
                      echo $a;
                }
             @else
                @{a} bar 
             @endif
             
        } 
    @JS{

      $( document ).ready(function() {
            console.log( "ready!" );
       });

  }
      @endpage 

EXEMPLE CHARGEMENT TEMPLATE

le fichier généré sera userpage.cat.php il est évidement possible de faire des includes de fichier ou de charger des segments de code PHP ou HTML. évidement il faudra coté apache bloqué les extensions .cat ainsi que les extension . seg pour j’utilise pour définir les segments de code et .tpl pour du template.

exemple de code qui charge un template mon fichier userpage.cat aura ce code si
notez que structure pour le moment à une syntaxe pas génial pour séparer les éléments je pense opter pour un style json à l’avenir tout en gardant l’actuel

@structure( 'file.seg' ){ 
  |TITLE~'MYTITLE'
  |[email protected]( 'file2.seg' )
} 

dans mon fichier file.seg qui sera charger par Structure je vais avoir
par exemple :

<BODY>{{TITLE}}{{DATA}}</BODY>

ou en directive

@body{   {{TITLE}}{{DATA}}    }

EXEMPLE SEGMENT DE CODE @Directive ou HTML ou PHP

Exemple de code qui charge un Segment, mon fichier userpage.cat.php

@getsegment('file.seg' ){ totosegment }

Dans mon fichier file.seg nous avons

@setsegment( totosegment  ) 

   TEXT DU SEGMENT @P{ TOTO }

@endsegment
@setsegment( tata ) 

      @div{ TATA }

@endsegment

FONCTIONS RACCOURCI

Vous avez aussi la possibilité d’utilisé directement des fonctionnalités de raccourci comme :

@div[+Flex,column]{

   @div{ test1 }
   @div{ test2 }

}

cela permet de charger directement les fonctionnalités Flex dans l’attribut style de la balise
la zone [ ] est justement là pour proposé des fonctionnalités futur de ce type comme

@div[+list,1,2,3,4]

générera : 
<div>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
</div>


PS:

Évidement il existe pour une même balise parfois plusieurs manière de générer celle-ci, dans le premier exemple @bodypage se terme par @endpage mais on aurait aussi très bien utilisé la forme longue @body{ } sans oublier de créé @html{ } aussi…

Dés que ma syntaxe globale aura obtenu un style et une logique d’organisation stable
je réaliserai un manuel par fonction pour le moment je suis dans la phase de normalisation de cette syntaxe et d’optimisation.

Merci d’avance pour vos retours et critiques.