diff --git a/en/appendices/3-5-migration-guide.rst b/en/appendices/3-5-migration-guide.rst
index f9670cc731..30c1845e3b 100644
--- a/en/appendices/3-5-migration-guide.rst
+++ b/en/appendices/3-5-migration-guide.rst
@@ -194,7 +194,6 @@ Collection
* ``Cake\Collection\Collection::avg()`` was added.
* ``Cake\Collection\Collection::median()`` was added.
-
Core
----
diff --git a/fr/appendices/3-5-migration-guide.rst b/fr/appendices/3-5-migration-guide.rst
index 16a8cab665..3f053b9043 100644
--- a/fr/appendices/3-5-migration-guide.rst
+++ b/fr/appendices/3-5-migration-guide.rst
@@ -27,6 +27,12 @@ version 4.0.0, à partir de laquelle ils seront supprimés.
``Cake\Database\TableSchemaAwareInterface`` à la place.
* ``Cake\Console\ShellDispatcher`` est dépréciée. Vous devez mettre à jour vos
Applications pour qu'elles utilisent ``Cake\Console\CommandRunner`` à la place.
+* ``Cake\Database\Schema\TableSchema::column()`` est dépréciée. Utilisez
+ ``Cake\Database\Schema\TableSchema::getColumn()`` à la place.
+* ``Cake\Database\Schema\TableSchema::constraint()`` est dépréciée. Utilisez
+ ``Cake\Database\Schema\TableSchema::getConstraint()`` à la place.
+* ``Cake\Database\Schema\TableSchema::index()`` est dépréciée. Utilisez
+ ``Cake\Database\Schema\TableSchema::getIndex()`` à la place.
Dépréciation des Méthodes Get / Set combinées
---------------------------------------------
@@ -51,16 +57,23 @@ par des méthodes ``getX()`` et ``setX()`` :
* ``outputAs()``
``Cake\Database\Connection``
* ``logger()``
-``Cake\Datasource\TypedResultTrait``
+``Cake\Database\TypedResultInterface``
+ * ``returnType()``
+``Cake\Database\TypedResultTrait``
* ``returnType()``
``Cake\Database\Log\LoggingStatement``
* ``logger()``
``Cake\Datasource\ModelAwareTrait``
* ``modelType()``
``Cake\Database\Query``
- * ``valueBinder()`` est maintenant ``getValueBinder()``
+ * la partie "getter" de ``valueBinder()`` (maintenant ``getValueBinder()``)
+``Cake\Database\Schema\TableSchema``
+ * ``columnType()``
``Cake\Datasource\QueryTrait``
+ * la partie "getter" de ``eagerLoaded()`` (maintenant ``isEagerLoaded()``)
* ``eagerLoaded()`` (maintenant ``isEagerLoaded()``)
+``Cake\Event\EventDispatcherInterface``
+ * ``eventManager()``
``Cake\Event\EventDispatcherTrait``
* ``eventManager()``
``Cake\Error\Debugger``
@@ -70,6 +83,8 @@ par des méthodes ``getX()`` et ``setX()`` :
``Cake\I18n\I18n``
* ``locale()``
* ``translator()``
+``Cake\ORM\Association\BelongsToMany``
+ * ``sort()``
``Cake\ORM\LocatorAwareTrait``
* ``tableLocator()``
``Cake\ORM\EntityTrait``
@@ -77,6 +92,9 @@ par des méthodes ``getX()`` et ``setX()`` :
``setInvalidField()``, maintenant ``getInvalidField()``)
``Cake\ORM\Table``
* ``validator()``
+``Cake\Routing\RouteBuilder``
+ * ``extensions()``
+ * ``routeClass()``
``Cake\Routing\RouteCollection``
* ``extensions()``
``Cake\TestSuite\TestFixture``
@@ -165,6 +183,19 @@ le moteur était mal configuré ou indisponible. Reportez-vous à la section
:ref:`cache-configuration-fallback` pour plus d'informations sur la configuration
de 'fallbacks' pour vos configurations de cache.
+Support de dotenv au squelette d'Application
+--------------------------------------------
+
+Le squelette d'application possède maintenant une intégration "dotenv", facilitant
+l'utilisation de variables d'environnement pour configurer votre application.
+Référez-vous à la section :ref:`environment-variables` pour plus d'informations.
+
+Collection
+----------
+
+* ``Cake\Collection\Collection::avg()`` a été ajoutée.
+* ``Cake\Collection\Collection::median()`` a été ajoutée.
+
Core
----
diff --git a/fr/core-libraries/collections.rst b/fr/core-libraries/collections.rst
index 380b2f98b8..736acaeab6 100644
--- a/fr/core-libraries/collections.rst
+++ b/fr/core-libraries/collections.rst
@@ -55,27 +55,27 @@ Liste des Méthodes
.. table::
:class: docutils internal-toc
- +-----------------------+---------------------------+----------------------+---------------------+
- | :php:meth:`append` | :php:meth:`buffered` | :php:meth:`combine` | :php:meth:`compile` |
- +-----------------------+---------------------------+----------------------+---------------------+
- | :php:meth:`contains` | :php:meth:`countBy` | :php:meth:`chunk` | :php:meth:`each` |
- +-----------------------+---------------------------+----------------------+---------------------+
- | :php:meth:`every` | :php:meth:`extract` | :php:meth:`filter` | :php:meth:`first` |
- +-----------------------+---------------------------+----------------------+---------------------+
- | :php:meth:`groupBy` | :php:meth:`indexBy` | :php:meth:`insert` | :php:meth:`isEmpty` |
- +-----------------------+---------------------------+----------------------+---------------------+
- | :php:meth:`last` | :php:meth:`listNested` | :php:meth:`map` | :php:meth:`match` |
- +-----------------------+---------------------------+----------------------+---------------------+
- | :php:meth:`max` | :php:meth:`min` | :php:meth:`nest` | :php:meth:`reduce` |
- +-----------------------+---------------------------+----------------------+---------------------+
- | :php:meth:`reject` | :php:meth:`sample` | :php:meth:`shuffle` | :php:meth:`skip` |
- +-----------------------+---------------------------+----------------------+---------------------+
- | :php:meth:`some` | :php:meth:`sortBy` | :php:meth:`stopWhen` | :php:meth:`sumOf` |
- +-----------------------+---------------------------+----------------------+---------------------+
- | :php:meth:`take` | :php:meth:`through` | :php:meth:`unfold` | :php:meth:`zip` |
- +-----------------------+---------------------------+----------------------+---------------------+
- | :php:meth:`transpose` | :php:meth:`chunkWithKeys` | | |
- +-----------------------+---------------------------+----------------------+---------------------+
+ +---------------------------------------------------+----------------------+------------------------+
+ | :php:meth:`append` | :php:meth:`avg` | :php:meth:`buffered` | :php:meth:`combine` |
+ +---------------------------+-----------------------+----------------------+------------------------+
+ | :php:meth:`compile` | :php:meth:`contains` | :php:meth:`countBy` | :php:meth:`chunk` |
+ +---------------------------+-----------------------+----------------------+------------------------+
+ | :php:meth:`chunkWithKeys` | :php:meth:`each` | :php:meth:`every` | :php:meth:`extract` |
+ +---------------------------+-----------------------+----------------------+------------------------+
+ | :php:meth:`filter` | :php:meth:`first` | :php:meth:`groupBy` | :php:meth:`indexBy` |
+ +---------------------------+-----------------------+----------------------+------------------------+
+ | :php:meth:`insert` | :php:meth:`isEmpty` | :php:meth:`last` | :php:meth:`listNested` |
+ +---------------------------+-----------------------+----------------------+------------------------+
+ | :php:meth:`map` | :php:meth:`match` | :php:meth:`max` | :php:meth:`median` |
+ +---------------------------+-----------------------+----------------------+------------------------+
+ | :php:meth:`min` | :php:meth:`nest` | :php:meth:`reduce` | :php:meth:`reject` |
+ +---------------------------+-----------------------+----------------------+------------------------+
+ | :php:meth:`sample` | :php:meth:`shuffle` | :php:meth:`skip` | :php:meth:`some` |
+ +---------------------------+-----------------------+----------------------+------------------------+
+ | :php:meth:`sortBy` | :php:meth:`stopWhen` | :php:meth:`sumOf` | :php:meth:`take` |
+ +---------------------------+-----------------------+----------------------+------------------------+
+ | :php:meth:`through` | :php:meth:`transpose` | :php:meth:`unfold` | :php:meth:`zip` |
+ +---------------------------+-----------------------+----------------------+------------------------+
Faire une Itération
===================
@@ -483,6 +483,41 @@ les éléments::
$sumOfDadAges = $collection->sumOf('dad.age');
+.. php:method:: avg($matcher = null)
+
+Calcule la moyenne des éléments de la collection. Vous pouvez passer, en
+option, un "path" à matcher ou une fonction pour extraire les valeurs pour
+lesquelles vous souhaitez générer la moyenne::
+
+ $items = [
+ ['invoice' => ['total' => 100]],
+ ['invoice' => ['total' => 200]],
+ ];
+
+ // Moyenne : 150
+ $average = (new Collection($items))->avg('invoice.total');
+
+.. versionadded:: 3.5.0
+
+.. php:method:: median($matcher = null)
+
+Calcule la valeur médianne d'un jeu d'élément. Vous pouvez passer, en
+option, un "path" à matcher ou une fonction pour extraire les valeurs pour
+lesquelles vous souhaitez calculer la valeur médianne::
+
+ $items = [
+ ['invoice' => ['total' => 400]],
+ ['invoice' => ['total' => 500]],
+ ['invoice' => ['total' => 100]],
+ ['invoice' => ['total' => 333]],
+ ['invoice' => ['total' => 200]],
+ ];
+
+ // Valeur médiane : 333
+ $median = (new Collection($items))->median('invoice.total');
+
+.. versionadded:: 3.5.0
+
Grouper et Compter
------------------
diff --git a/fr/development/configuration.rst b/fr/development/configuration.rst
index 4a61b4f238..9ac2f9ebe1 100755
--- a/fr/development/configuration.rst
+++ b/fr/development/configuration.rst
@@ -231,6 +231,48 @@ Configuration de Inflection
Regardez :ref:`inflection-configuration` pour plus d'informations.
+.. _environment-variables:
+
+Variables d'Environnement
+=========================
+
+Beaucoup de fournisseurs de cloud, comme Heroku, vous permettent de définir des
+variables pour les données de configuration. Vous pouvez configurer CakePHP
+via des variables d'environnement à la manière `12factor app `_.
+Les variables d'environnement permettent à votre application d'avoir besoin de moins
+d'états, facilitant la gestion de votre application lors de déploiements sur
+plusieurs environnements.
+
+Comme vous pouvez le voir dans votre fichier **app.php**, la fonction ``env()``
+est utilisée pour lire des données de configuration depuis l'environnement et
+construire la configuration de l'application.
+CakePHP utilise les chaînes :term:`DSN` pour les configurations des bases de données,
+des logs, des transports d'emails et du cache, vous permettant de faire varier les
+configurations d'un environnement à l'autre.
+
+Lors d'un développement local, CakePHP utilise `dotenv
+`_ pour faciliter l'utilisation des variables
+d'environnement. Vous verrez un fichier ``config/.env.default`` dans votre application.
+En copiant ce fichier dans ``config/.env`` et en modifiant les valeurs, vous pourrez
+configurer votre application.
+
+Il est conseillé de ne pas commiter le fichier ``config/.env`` dans votre dépôt
+et d'utiliser le fichier ``config/.env.default`` comme template avec des valeurs
+par défaut (ou des placeholders) pour que les membres de votre équipe sachent
+quelles variables sont utilisées et ce que chaque variable est censée contenir.
+
+Une fois vos variables d'environnement définies, vous pouvez utiliser la
+fonction ``env()`` pour lire les données depuis l'environnement::
+
+ $debug = env('APP_DEBUG', false);
+
+La seconde valeur passée à la fonction ``env()`` est la valeur par défaut. Cette
+valeur sera utilisée si aucune variable d'environnement n'existe pas pour la clé
+fournie.
+
+.. versionchanged:: 3.5.0
+ Support de la librairie dotenv ajouté au squelette d'application.
+
Classe Configure
================
@@ -675,45 +717,6 @@ Charger les plugins et les événements dans ``Application::bootstrap()`` rend
les :ref:`integration-testing` plus faciles car les événements et les routes
seront ainsi à nouveau traités pour chaque méthode de test.
-Variables d'environnement
-=========================
-
-Certains fournisseurs d'architectures dans le cloud comme Heroku, vous
-permettent de définir des variables d'environnement. En définissant des
-variables d'environnement, vous pouvez configurer vos applications comme des
-applications 12factor. Suivre les `instructions pour les applications 12factor `_
-vous permet de créer des applications "stateless" et donc de faciliter le
-déploiement de votre application.
-Cela signifie ainsi que si vous avez besoin par exemple de changer votre base
-de données, vous avez juste besoin de changer la variable DATABASE_URL dans la
-configuration sur votre fournisseur sans rien avoir à changer dans votre code.
-
-Comme vous pouvez le voir dans le fichier **app.php**, les variables suivantes
-sont concernés :
-
-- ``DEBUG`` (``0`` or ``1``)
-- ``APP_ENCODING`` (ex: UTF-8)
-- ``APP_DEFAULT_LOCALE`` (ex: ``en_US``)
-- ``SECURITY_SALT``
-- ``CACHE_DEFAULT_URL`` (ex: ``File:///?prefix=myapp_&serialize=true&timeout=3600&path=../tmp/cache/``)
-- ``CACHE_CAKECORE_URL`` (ex: ``File:///?prefix=myapp_cake_core_&serialize=true&timeout=3600&path=../tmp/cache/persistent/``)
-- ``CACHE_CAKEMODEL_URL`` (ex: ``File:///?prefix=myapp_cake_model_&serialize=true&timeout=3600&path=../tmp/cache/models/``)
-- ``EMAIL_TRANSPORT_DEFAULT_URL`` (ex: ``smtp://user:password@hostname:port?tls=null&client=null&timeout=30``)
-- ``DATABASE_URL`` (ex: ``mysql://user:pass@db/my_app``)
-- ``DATABASE_TEST_URL`` (ex: ``mysql://user:pass@db/test_my_app``)
-- ``LOG_DEBUG_URL`` (ex: ``file:///?levels[]=notice&levels[]=info&levels[]=debug&file=debug&path=../logs/``)
-- ``LOG_ERROR_URL`` (ex: ``file:///?levels[]=warning&levels[]=error&levels[]=critical&levels[]=alert&levels[]=emergency&file=error&path=../logs/``)
-
-Comme vous pouvez le voir dans ces exemples, nous définissons certaines options
-de configuration à l'aide de chaînes :term:`DSN`. C'est le cas pour les bases
-de données, les logs, le transport d'emails et les configurations du cache.
-
-Si certaines variables d'environnement ne sont pas définies dans votre environnement,
-CakePHP utilisera les valeurs définies dans **app.php**. Vous pouvez utiliser
-la `librairie php-dotenv `_ pour
-utiliser les variables d'environnement dans vos développements en local.
-Reportez-vous aux instructions dans le README pour plus d'informations.
-
Désactiver les tables génériques
================================
diff --git a/fr/development/routing.rst b/fr/development/routing.rst
index e3a9bad2ad..dbcda57b8e 100644
--- a/fr/development/routing.rst
+++ b/fr/development/routing.rst
@@ -316,7 +316,8 @@ l'exemple ci-dessus peut être réécrit en::
// Crée un builder avec une classe de Route différente.
$routes->scope('/', function ($routes) {
- $routes->routeClass(DashedRoute::class);
+
+ $routes->setRouteClass(DashedRoute::class);
$routes->connect('/:controller/:id', ['action' => 'view'])
->setPatterns(['id' => '[0-9]+']);
@@ -856,7 +857,7 @@ Pour restreindre les extensions à un *scope* spécifique, vous pouvez les défi
en utilisant la méthode :php:meth:`Cake\\Routing\\RouteBuilder::extensions()`::
Router::scope('/', function ($routes) {
- $routes->extensions(['json', 'xml']);
+ $routes->setExtensions(['json', 'xml']);
// ...
});
@@ -880,7 +881,7 @@ souhaitez créer une URL comme ``/page/title-of-page.html`` vous devriez créer
un scope comme ceci::
Router::scope('/page', function ($routes) {
- $routes->extensions(['json', 'xml', 'html']);
+ $routes->setExtensions(['json', 'xml', 'html']);
$routes->connect(
'/:title',
['controller' => 'Pages', 'action' => 'view']
@@ -989,7 +990,7 @@ de données REST, nous ferions quelque chose comme ceci::
//Dans config/routes.php
Router::scope('/', function ($routes) {
- $routes->extensions(['json']);
+ $routes->setExtensions(['json']);
$routes->resources('Recipes');
});
@@ -1397,7 +1398,8 @@ d'une route en utilisant l'option ``routeClass``::
// Ou en définissant la routeClass dans votre scope.
$routes->scope('/', function ($routes) {
- $routes->routeClass('SlugRoute');
+ // Avant 3.5.0, utilisez `routeClass()`
+ $routes->setRouteClass('SlugRoute');
$routes->connect(
'/:slug',
['controller' => 'Articles', 'action' => 'view']