1
0
mirror of https://github.com/php/doc-fr.git synced 2026-04-30 02:03:15 +02:00
Files
archived-doc-fr/reference/session/sessionhandlerinterface.xml
T
Louis-Arnaud 2d314f78aa CI: check-style + nettoyage TRADUCTIONS.txt (#2545)
* CI: add French style checker based on TRADUCTIONS.txt

Checks changed XML files in PRs for:
- Direct address forms (vous/votre/vos) → warnings
- French grammar errors (etc..., comme par exemple, si il) → errors
- Incorrect terminology (librairie, chiffrage, encryption) → warnings

Inspired by doc-ja's textlint+prh approach but simpler:
runs directly on XML sources, no PhD render needed.

Only errors (grammar/spelling) fail the CI.
Style warnings appear as PR annotations without blocking.

* test: introduce style errors to validate CI check

* Revert "test: introduce style errors to validate CI check"

This reverts commit 7c1d523c6bbef116f54fc6dad7b61a45ee4f7ddd.

* Corriger toutes les violations de style TRADUCTIONS.txt

- 174x "Notez que" → "Il est à noter que"
- 50x "depuis PHP X" → "à partir de PHP X"
- 50x "votre" → le/la/du
- 15x "si il" → "s'il"
- 14x "Vous pouvez" → "Il est possible de"
- 14x "encryption" (faux positifs entity refs exclus)
- 12x "assurez-vous" → "il faut s'assurer"
- 12x "Vous devez" → "Il faut"
- 11x "vos" → les/des
- 9x "comme par exemple" → "par exemple"
- 6x "Vous devriez" → "Il est recommandé de"
- 2x "optionel" → "optionnel"
- 2x "reportez-vous" → "se reporter"

Toutes les règles passent désormais en erreur dans la CI.

* Harmoniser les noms de workflows GitHub Actions

- integrate.yaml → build.yml (extension + nom cohérent)
- check-style-fr.yml → check-style.yml ("-fr" redondant)
- Aligner les noms de workflow et job

* Lire les règles dynamiquement depuis TRADUCTIONS.txt

Le script parse TRADUCTIONS.txt au démarrage et génère les règles
de vérification automatiquement. Plus aucune règle en dur.

* Règles dynamiques depuis TRADUCTIONS.txt

Le script CI lit les lignes INTERDIT de TRADUCTIONS.txt pour générer
les règles de vérification. Plus aucune règle en dur dans le script.
Corrige les 27 violations restantes (Depuis PHP → À partir de PHP).

* Corriger les trailing whitespace
2026-02-25 13:13:51 +01:00

167 lines
5.0 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 8859c8b96cd9e80652813f7bcf561432a5e9f934 Maintainer: jpauli Status: ready -->
<!-- Reviewed: no -->
<reference xml:id="class.sessionhandlerinterface" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>L'interface SessionHandlerInterface</title>
<titleabbrev>SessionHandlerInterface</titleabbrev>
<partintro>
<!-- {{{ SessionHandlerInterface intro -->
<section xml:id="sessionhandlerinterface.intro">
&reftitle.intro;
<para>
<classname>SessionHandlerInterface</classname> est une interface
qui définit un prototype minimal pour la création d'un gestionnaire
de session personnalisé. Afin de passer un gestionnaire
de session personnalisé à la fonction <function>session_set_save_handler</function>
en utilisant son invocation <abbrev>OOP</abbrev>, la classe peut implémenter
cette interface.
</para>
<para>
Il est à noter que ces méthodes sont destinées à être appelées de manière interne par PHP, et non
depuis l'espace utilisateur.
</para>
</section>
<!-- }}} -->
<section xml:id="sessionhandlerinterface.synopsis">
&reftitle.interfacesynopsis;
<!-- {{{ Synopsis -->
<classsynopsis class="interface">
<oointerface>
<interfacename>SessionHandlerInterface</interfacename>
</oointerface>
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.sessionhandlerinterface')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[@role='SessionHandlerInterface'])">
<xi:fallback/>
</xi:include>
</classsynopsis>
<!-- }}} -->
</section>
<section xml:id="sessionhandlerinterface.examples">
&reftitle.examples;
<example>
<title>
Exemple avec <classname>SessionHandlerInterface</classname>
</title>
<para>
L'exemple qui suit propose un gestionnaire de stockage de sessions basé sur des fichiers,
basiquement comme les sessions PHP fonctionnent en interne de manière native, avec le
gestionnaire embarqué <parameter>files</parameter>. Cet exemple pourrait être transformé
facilement pour utiliser une base de données.
</para>
<para>
Nous utilisons le style orienté objet avec <function>session_set_save_handler</function> et
nous enregistrons la fonction de fermeture grâce au paramètre de la fonction. C'est en général
conseillé lorsque le gestionnaire de session est basé sur des objets.
</para>
<caution>
<para>
Pour plus de brièveté, cet exemple omet la validation d'entrée. Toutefois,
les paramètres <literal>$id</literal> sont en fait des valeurs fournies
par l'utilisateur qui nécessitent une validation/assainissement appropriée
pour éviter les vulnérabilités, telles que les problèmes de parcours de
chemin. <emphasis>N'utilisez donc pas cet exemple sans modification dans
les environnements de production.</emphasis>
</para>
</caution>
<programlisting role="php">
<![CDATA[
<?php
class MySessionHandler implements SessionHandlerInterface
{
private $savePath;
public function open($savePath, $sessionName): bool
{
$this->savePath = $savePath;
if (!is_dir($this->savePath)) {
mkdir($this->savePath, 0777);
}
return true;
}
public function close(): bool
{
return true;
}
#[\ReturnTypeWillChange]
public function read($id)
{
return (string) @file_get_contents("$this->savePath/sess_$id");
}
public function write($id, $data): bool
{
return file_put_contents("$this->savePath/sess_$id", $data) === false ? false : true;
}
public function destroy($id): bool
{
$file = "$this->savePath/sess_$id";
if (file_exists($file)) {
unlink($file);
}
return true;
}
#[\ReturnTypeWillChange]
public function gc($maxlifetime)
{
foreach (glob("$this->savePath/sess_*") as $file) {
if (filemtime($file) + $maxlifetime < time() && file_exists($file)) {
unlink($file);
}
}
return true;
}
}
$handler = new MySessionHandler();
session_set_save_handler($handler, true);
session_start();
// enregistre/récupère des données avec $_SESSION
]]>
</programlisting>
</example>
</section>
</partintro>
&reference.session.entities.sessionhandlerinterface;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->