Re: Composer et SPIP sont dans un bateau

Matthieu Marcillaud <[email protected]>
Newsgroups gmane.comp.web.spip.devel
Message-ID <[email protected]>
Le 18/03/2019 à 18:23, Maïeul Rouquette a écri
> ca pose des soucis politiques / editorial, de devoir avoir composer sur
> n'importe quel serveur qui hébergement

Je te retourne ton «c’est à dire ?».

Composer n’a pas besoin de permissions d’administrateur du serveur pour 
fonctionner (c’est un fichier php… enfin une archive .phar) ; si c’est 
la question ?

>> Mais c’est aussi parce que Composer fait un poil plus que ce qu’on a
>> dit
>> (résolution de dépendances & téléchargements).
>> Notamment il calcule aussi un «autoloader», basé sur les différentes
>> déclarations des fichiers composer.json. Et assez certainement, on en
>> aura besoin dans l’avenir dans les plugins.
>>
> c'est à dire?

Ok, détaillons (rapidement).

Un autoloader en PHP, c’est une déclaration qui permet de dire :

- si j’appelle telle classe `new Toto()` ou `new Auto\Mobile()`,
- que je la connais pas encore en mémoire,
- alors, elle se trouve dans tel fichier ; vas-y : charge ce fichier 
automatiquement !

En gros ça pourrait remplacer potentiellement certains include() ou 
include_spip().

Un intérêt, c’est que tu vas déclarer en tête de fichiers toutes les 
classes que tu pourrais utiliser dans ton fichier (ce n’est pas une 
obligation non plus) avec l’instruction `use` :
Ici, tu pourrais avoir `use Auto\Mobile;` ou `use Auto\Mobile as 
Automobile;`, et plus loin quelque part dans ton code `$auto = new 
Mobile();` ou `$auto = new Automobile();` (ou toute autre instruction 
indiquant une classe quelque part)

Le fichier contenant la description de la classe Auto\Mobile ne serait 
chargé (si besoin) que si la ligne new Mobile() est réellement exécutée.

Autrement dit, les `use` ne sont pas comme des include ou des require. 
Ça dit juste, j’aurais probablement besoin de ça — fais-moi en un 
raccourci ; grosso modo.

Et pour savoir la correspondance entre le nom de la classe, et le 
fichier à rechercher, il n’y a pas de mystère : cela s’appuie sur, 
maintenant essentiellement PSR-4 (https://www.php-fig.org/psr/psr-4/), 
et une déclaration dans les fichiers composer.json.

Ainsi tu pourrais avoir `autoload: { "psr-4": { "Auto\\": "src/" } }` 
dans le composer.json du plugin… disons "Auto"… :

Ça dit en gros, cherche ce qui concerne le namespace "Auto/" dans le 
répertoire src/ ici présent…. Ça sous-entendrait qu’il existe le fichier 
"src/Mobile.php" avec la classe Auto/Mobile dedans.

Note que toutes les librairies PHP utilisent ça maintenant et déjà 
depuis quelques temps quand même.

Il me semble (mais là encore ce n’est qu’un avis perso) que nous aurions 
intérêt à nous harmoniser avec les autres un peu :)

MM.




_______________________________________________
liste: https://listes.rezo.net/mailman/listinfo/spip-dev
doc: http://www.spip.net/
dev: http://trac.rezo.net/trac/spip/
irc://irc.freenode.net/spip
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.