Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion en/appendices/3-5-migration-guide.rst
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,6 @@ Collection
* ``Cake\Collection\Collection::avg()`` was added.
* ``Cake\Collection\Collection::median()`` was added.


Core
----

Expand Down
35 changes: 33 additions & 2 deletions fr/appendices/3-5-migration-guide.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
---------------------------------------------
Expand All @@ -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``
Expand All @@ -70,13 +83,18 @@ par des méthodes ``getX()`` et ``setX()`` :
``Cake\I18n\I18n``
* ``locale()``
* ``translator()``
``Cake\ORM\Association\BelongsToMany``
* ``sort()``
``Cake\ORM\LocatorAwareTrait``
* ``tableLocator()``
``Cake\ORM\EntityTrait``
* ``invalid()`` (maintenant ``getInvalid()``, ``setInvalid()``,
``setInvalidField()``, maintenant ``getInvalidField()``)
``Cake\ORM\Table``
* ``validator()``
``Cake\Routing\RouteBuilder``
* ``extensions()``
* ``routeClass()``
``Cake\Routing\RouteCollection``
* ``extensions()``
``Cake\TestSuite\TestFixture``
Expand Down Expand Up @@ -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
----

Expand Down
77 changes: 56 additions & 21 deletions fr/core-libraries/collections.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
===================
Expand Down Expand Up @@ -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
------------------

Expand Down
81 changes: 42 additions & 39 deletions fr/development/configuration.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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 <http://12factor.net/>`_.
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
<https://github.com/josegonzalez/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
================

Expand Down Expand Up @@ -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 <http://12factor.net/>`_
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 <https://github.com/josegonzalez/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
================================

Expand Down
12 changes: 7 additions & 5 deletions fr/development/routing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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]+']);

Expand Down Expand Up @@ -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']);
// ...
});

Expand All @@ -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']
Expand Down Expand Up @@ -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');
});

Expand Down Expand Up @@ -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']
Expand Down