Skip to content

Commit

Permalink
[fr] follows cakephp#4371 & cakephp#4377
Browse files Browse the repository at this point in the history
  • Loading branch information
cake17 committed Oct 9, 2016
1 parent dca40f6 commit be0b3d2
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 65 deletions.
17 changes: 9 additions & 8 deletions en/intro/conventions.rst
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ path. For example, ``UsersController`` (which would be defined in the file name

While you can route multiple word controllers in any way you like, the
convention is that your URLs are lowercase and dashed using the ``DashedRoute``
class, therefore ``/article-categories/view-all`` is the correct form to access the
``ArticleCategoriesController::viewAll()`` action.
class, therefore ``/article-categories/view-all`` is the correct form to access
the ``ArticleCategoriesController::viewAll()`` action.

When you create links using ``this->Html->link()``, you can use the following
conventions for the url array::
Expand Down Expand Up @@ -76,8 +76,8 @@ folder.
Model and Database Conventions
==============================

Table class names are plural and CamelCased. 'Users', 'ArticleCategories', and
'UserFavoritePages' are all examples of conventional model names.
Table class names are plural and CamelCased. ``Users``, ``ArticleCategories``,
and ``UserFavoritePages`` are all examples of conventional model names.

Table names corresponding to CakePHP models are plural and underscored. The
underlying tables for the above mentioned models would be ``users``,
Expand All @@ -96,9 +96,10 @@ Field names with two or more words are underscored: ``first_name``.

Foreign keys in hasMany, belongsTo/hasOne relationships are recognized by
default as the (singular) name of the related table followed by ``_id``. So if
Users hasMany Articles, the articles table will refer to the users table via a
``user_id`` foreign key. For a table like ``article_categories`` whose name contains
multiple words, the foreign key would be ``article_category_id``.
Users hasMany Articles, the ``articles`` table will refer to the ``users``
table via a ``user_id`` foreign key. For a table like ``article_categories``
whose name contains multiple words, the foreign key would be
``article_category_id``.

Join tables, used in BelongsToMany relationships between models, should be named
after the model tables they will join, arranged in alphabetical order
Expand Down Expand Up @@ -144,4 +145,4 @@ together.

.. meta::
:title lang=en: CakePHP Conventions
:keywords lang=en: web development experience,maintenance nightmare,index method,legacy systems,method names,php class,uniform system,config files,tenets,apples,conventions,conventional controller,best practices,maps,visibility,news articles,functionality,logic,cakephp,developers
:keywords lang=en: web development experience,maintenance nightmare,index method,legacy systems,method names,php class,uniform system,config files,tenets,articles,conventions,conventional controller,best practices,maps,visibility,news articles,functionality,logic,cakephp,developers
105 changes: 50 additions & 55 deletions fr/intro/conventions.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,34 +13,27 @@ Les Conventions des Controllers
===============================

Les noms des classes de controller sont au pluriel, en CamelCase et se terminent
par ``Controller``. ``PeopleController`` et ``LatestArticlesController`` sont
par ``Controller``. ``UsersController`` et ``ArticleCategoriesController`` sont
des exemples respectant cette convention.

les méthodes publiques des controllers sont souvent exposées comme des 'actions'
accessibles via un navigateur web. Par exemple ``/articles/view`` correspond à
la méthode ``view()`` de ``ArticlesController`` sans rien modifier. Les méthodes
privées ou protégées ne peuvent pas être accédées avec le routing.
accessibles via un navigateur web. Par exemple ``/users/view`` correspond à
la méthode ``view()`` de ``UsersController`` sans rien modifier. Les méthodes
privées ou protégées ne sont pas accessibles avec le routing.

Considérations concernant les URLs et les Noms des Controllers
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Comme vous venez de voir, un controller à mot unique renvoie vers un chemin URL
en minuscules. Par exemple, ``ApplesController`` (qui serait défini dans le nom
de fichier 'ApplesController.php') est accessible à l'adresse
http://exemple.com/apples.
en minuscules. Par exemple, ``UsersController`` (qui serait défini dans le nom
de fichier **UsersController.php**) est accessible à l'adresse
http://exemple.com/users.

Les controllers avec plusieurs mots *peuvent* être de forme "inflecté" qui
correspondent au nom du controller:

* /redApples
* /RedApples
* /Red_apples
* /red_apples

Pointeront tous vers l'index du controller RedApples. Cependant, la convention
est que vos URLs soient en minuscules avec des tirets en utilisant la classe
``DashedRoute``, donc ``/red-apples/go-pick`` est la bonne forme pour accéder à
l'action ``RedApplesController::goPick()``.
Alors que vous pouvez router des controllers qui ont plusieurs mots de la façon
que vous souhaitez, la convention est que vos URLs soient en minuscules avec
des tirets en utilisant la classe ``DashedRoute``, donc
``/article-categories/view-all`` est la bonne forme pour accéder à l'action
``ArticleCategoriesController::viewAll()``.

Quand vous créez des liens en utilisant ``this->Html->link()``, vous pouvez
utiliser les conventions suivantes pour le tableau d'url::
Expand All @@ -64,19 +57,19 @@ En général, les noms de fichiers correspondent aux noms des classes et suivent
les standards PSR-0 et PSR-4 pour l'autoloading (chargement automatique). Voici
quelques exemples de noms de classes et de fichiers:

- La classe controller **KissesAndHugsController** devra se trouver dans un
fichier nommé **KissesAndHugsController.php**.
- La classe Component (Composant) **MyHandyComponent** devra se trouver dans
- La classe controller ``LatestArticlesController`` devra se trouver dans un
fichier nommé **LatestArticlesController.php**.
- La classe Component (Composant) ``MyHandyComponent`` devra se trouver dans
un fichier nommé **MyHandyComponent.php**.
- La classe Table **OptionValuesTable** devra se trouver dans un fichier
- La classe Table ``OptionValuesTable`` devra se trouver dans un fichier
nommé **OptionValuesTable.php**.
- La classe Entity **OptionValue** devra se trouver dans un fichier
- La classe Entity ``OptionValue`` devra se trouver dans un fichier
nommé **OptionValue.php**.
- La classe Behavior (Comportement) **EspeciallyFunkableBehavior** devra
- La classe Behavior (Comportement) ``EspeciallyFunkableBehavior`` devra
se trouver dans un fichier nommé **EspeciallyFunkableBehavior.php**.
- La classe View (Vue) **SuperSimpleView** devra se trouver dans un fichier
- La classe View (Vue) ``SuperSimpleView`` devra se trouver dans un fichier
nommé **SuperSimpleView.ctp**.
- La classe Helper (Assistant) **BestEverHelper** devra se trouver
- La classe Helper (Assistant) ``BestEverHelper`` devra se trouver
dans un fichier nommé **BestEverHelper.php**.

Chaque fichier sera situé dans le répertoire/namespace approprié dans le dossier
Expand All @@ -87,13 +80,13 @@ de votre application.
Conventions pour les Models et les Bases de Données
===================================================

Les noms de classe de model sont au pluriel et en CamelCase. People, BigPeople,
et ReallyBigPeople en sont des exemples.
Les noms de classe de model sont au pluriel et en CamelCase. ``Users``,
``ArticleCategories`` et ``UserFavoritePages`` en sont des exemples.

Les noms de tables correspondant aux models CakePHP sont au pluriel et utilisent
le caractère souligné (underscore). Les tables correspondantes aux models
mentionnés ci-dessus seront donc respectivement : ``people``, ``big_people`` et
``really_big_people``.
mentionnés ci-dessus seront donc respectivement : ``users``,
``article_categories`` et ``user_favorite_pages``.

La convention est d'utiliser des mots anglais pour les noms de colonne et de
table. Si vous utilisez des mots dans une autre langue, CakePHP ne va pas
Expand All @@ -108,30 +101,32 @@ singuliers. Vous pouvez consulter la documentation sur
:doc:`/core-libraries/inflector` pour plus d'informations.

Les noms des champs avec deux mots ou plus doivent être avec des underscores
comme ici : first\_name.
comme ici : ``first_name``.

Les clés étrangères des relations hasMany, belongsTo ou hasOne sont reconnues
par défaut grâce au nom (singulier) de la table associée, suivi de \_id. Donc,
si Bakers hasMany Cakes, la table "cakes" se référera à la table bakers via
une clé étrangère baker\_id. Pour une table avec un nom de plusieurs mots comme
category\_types, la clé étrangère sera category\_type\_id.
par défaut grâce au nom (singulier) de la table associée, suivi de ``_id``.
Donc, si Users hasMany Articles, la table ``articles`` se référera à la table
``users`` via une clé étrangère ``user_id``. Pour une table avec un nom de
plusieurs mots comme ``article_categories``, la clé étrangère sera
``article_category_id``.

Les tables de jointure utilisées dans les relations BelongsToMany entre models
doivent être nommées d'après le nom des tables qu'elles unissent, dans l'ordre
alphabétique (apples\_zebras plutôt que zebras\_apples).
alphabétique (``articles_tags`` plutôt que ``tags_articles``).

A lieu d'utiliser des clés auto-incrémentées en tant que clés primaires, vous
voudrez peut-être utiliser char(36). CakePHP utilisera un UUID unique de 36
caractères (Text::uuid) à chaque fois que vous sauvegarderez un nouvel
enregistrement en utlisant la méthode ``Table::save()``.
En plus de l'utilisation des clés auto-incrémentées en tant que clés primaires,
vous voudrez peut-être aussi utiliser des colonnes UUID. CakePHP va créer un
UUID unique de 36 caractères (:php:meth:`Cake\Utility\Text::uuid()`) à chaque
fois que vous sauvegarderez un nouvel enregistrement en utlisant la méthode
``Table::save()``.

Conventions des Views
=====================

Les fichiers de template de view sont nommés d'après les fonctions du controller
qu'elles affichent, sous une forme avec underscores. La fonction getReady() de
la classe PeopleController cherchera un gabarit de view dans
**src/Template/People/get_ready.ctp**.
qu'elles affichent, sous une forme avec underscores. La fonction ``viewAll()``
de la classe ``ArticlesController`` cherchera un gabarit de view dans
**src/Template/Articles/view_all.ctp**.

Le schéma classique est
**src/Template/Controller/nom_de_fonction_avec_underscore.ctp**.
Expand All @@ -141,18 +136,18 @@ de votre application, vous gagnerez des fonctionnalités sans les tracas et les
affres de la configuration. Voici un exemple récapitulant les conventions
abordées :

- Nom de la table de la base de données: "people"
- Classe Table: "PeopleTable" se trouvant dans
**src/Model/Table/PeopleTable.php**
- Classe Entity: "Person" se trouvant dans **src/Model/Entity/Person.php**
- Classe Controller: "PeopleController" se trouvant dans
**src/Controller/PeopleController.php**
- Template de View se trouvant dans **src/Template/People/index.ctp**
- Nom de la table de la base de données: "articles"
- Classe Table: ``ArticlesTable`` se trouvant dans
**src/Model/Table/ArticlesTable.php**
- Classe Entity: ``Article`` se trouvant dans **src/Model/Entity/Article.php**
- Classe Controller: ``ArticlesController`` se trouvant dans
**src/Controller/ArticlesController.php**
- Template de View se trouvant dans **src/Template/Articles/index.ctp**

En utilisant ces conventions, CakePHP sait qu'une requête de type
http://exemple.com/personnes/ sera liée à un appel à la fonction ``index()`` du
Controller PersonnesController, dans lequel le model Personne est
automatiquement disponible (et automatiquement lié à la table 'personnes'
http://exemple.com/articles/ sera liée à un appel à la fonction ``index()`` du
Controller ArticlesController, dans lequel le model Articles est
automatiquement disponible (et automatiquement lié à la table 'articles'
dans la base) et rendue dans un fichier. Aucune de ces relations n'a été
configurée par rien d'autre que la création des classes et des fichiers dont
vous aviez besoin de toute façon.
Expand All @@ -165,4 +160,4 @@ pour voir comment les choses s'articulent.

.. meta::
:title lang=fr: Conventions de CakePHP
:keywords lang=fr: expérience de développement web,maintenance cauchemard,méthode index,systèmes légaux,noms de méthode,classe php,système uniforme,fichiers de config,tenets,pommes,conventions,controller conventionel,bonnes pratiques,maps,visibilité,nouveaux articles,fonctionnalité,logique,cakephp,développeurs
:keywords lang=fr: expérience de développement web,maintenance cauchemard,méthode index,systèmes légaux,noms de méthode,classe php,système uniforme,fichiers de config,tenets,articles,conventions,controller conventionel,bonnes pratiques,maps,visibilité,nouveaux articles,fonctionnalité,logique,cakephp,développeurs
4 changes: 2 additions & 2 deletions fr/orm/database-basics.rst
Original file line number Diff line number Diff line change
Expand Up @@ -551,7 +551,7 @@ value object and into SQL expressions::
return Point::parse($value);
}

public function marshall($value)
public function marshal($value)
{
if (is_string($value)) {
$value = explode(',', $value);
Expand Down Expand Up @@ -582,7 +582,7 @@ The above class does a few interesting things:

* The ``toPHP`` method handles parsing the SQL query results into a value
object.
* The ``marshall`` method handles converting, data such as given request data, into our value object.
* The ``marshal`` method handles converting, data such as given request data, into our value object.
We're going to accept string values like ``'10.24,12.34`` and arrays for now.
* The ``toExpression`` method handles converting our value object into the
equivalent SQL expressions. In our example the resulting SQL would be
Expand Down

0 comments on commit be0b3d2

Please sign in to comment.