Skip to content

Commit

Permalink
fix: links no follow (#1075)
Browse files Browse the repository at this point in the history
  • Loading branch information
fpasquet authored Mar 7, 2024
1 parent d0f8cb7 commit 88a4b92
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 10 deletions.
10 changes: 5 additions & 5 deletions _articles/fr/2024-01-10-typage-generique-en-php.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ Alors, que fait-on maintenant ? On se roule en boule dans un coin et on regrette
... Ou alors, on se tourne vers un des super pouvoirs de PHP : son écosystème d'analyseurs statiques.
En effet, nous avons la chance en PHP d'avoir pléthore d'*analyseurs statiques*, tous extrêmement bien développés.

Grâce à eux, [notre IDE favori, PhpStorm bien entendu](https://blog.eleven-labs.com/fr/phpstorm-tips-config-extensions/) est en mesure de nous crier dessus à la moindre erreur décelable avant l'exécution.
Grâce à eux, [notre IDE favori, PhpStorm bien entendu]({BASE_URL}/fr/phpstorm-tips-config-extensions/) est en mesure de nous crier dessus à la moindre erreur décelable avant l'exécution.
Problème de typage ? Argument oublié dans une fonction ? Variable inutilisée ? Condition toujours vraie ? Accolade ou point virgule oublié ? Et j'en passe ...

Créez même vos propres règles de lint, de bonnes pratiques à suivre dans votre équipe. Ces outils, comme PHPCs ou PHPStan, permettent tout cela.
Expand Down Expand Up @@ -198,15 +198,15 @@ public function foo(Collection $astronauts): void
}
```

Peut-être avez-vous déjà vu cette notation avec les chevrons : `Collection<Astronaut>`, notamment si vous avez déjà fait du TypeScript.
Peut-être avez-vous déjà vu cette notation avec les chevrons : `Collection<Astronaut>`, notamment si vous avez déjà fait du TypeScript.

Ici, on indique simplement qu'il faut remplacer le type générique `T` par celui précisé entre les chevrons. Ainsi pour toutes les fois où le type `T` est utilisé dans la classe `Collection` (ici, une fois sur la fonction `add`), c'est en réalité un autre type (ici, `Astronaut`), qui sera utilisé.

Il faut vraiment voir `T` comme un type de substitution qui sera écrasé par un nouveau type, dès que cela est indiqué dans le code.

Voyons à présent un autre tag très important, le `@extends`. Il permet de tirer profit des types génériques avec **l'héritage**.

L'exemple du `@extends` ci-dessous est tiré de mon [Tutoriel](https://blog.eleven-labs.com/fr/composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine) à propos du concept de ***composition over inheritance***.
L'exemple du `@extends` ci-dessous est tiré de mon [Tutoriel]({BASE_URL}/fr/composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine) à propos du concept de ***composition over inheritance***.
Je vous le conseille si vous souhaitez en savoir plus sur ce principe, et dans tous les cas, je vous le recommande pour sa dernière partie qui met en application les types génériques que nous sommes en train d'apprendre ici.

Prenons une classe `BaseRepository`, qui se veut être une classe abstraite contenant toutes les fonctions de base utilisées dans nos repositories (`find`, `store`, `remove`, etc...).
Expand Down Expand Up @@ -271,7 +271,7 @@ Ainsi, vous rajoutez de la sécurité en vous empêchant de faire une action qui

Cet article est volontairement théorique, et sans exemple exhaustif. Prenez-le plutôt comme un pense-bête sur l'utilisation des génériques en PHP.

Pour une mise en application plus poussée et un accompagnement pas-à-pas de la vérification de ces types avec PHPStan, référez-vous au [Tutoriel](https://blog.eleven-labs.com/fr/composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine) cité plus haut dans cet article.
Pour une mise en application plus poussée et un accompagnement pas-à-pas de la vérification de ces types avec PHPStan, référez-vous au [Tutoriel]({BASE_URL}/fr/composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine) cité plus haut dans cet article.

## Conclusion

Expand All @@ -281,4 +281,4 @@ Sachez que d'autres outils que PHPStan permettent d'interpréter ces annotations

Il y aurait bien d'autres choses à voir sur les types génériques, en particulier le tag `@template-covariant`, mais ce sera pour une partie 2, pourquoi pas ! En attendant, vous avez tout le nécessaire pour vous en sortir dans la grande majorité des situations.

N'oubliez pas d'aller jeter un oeil à notre [Tutoriel](https://blog.eleven-labs.com/fr/composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine), amusez-vous bien avec ces outils, développez-bien, et à la prochaine !
N'oubliez pas d'aller jeter un oeil à notre [Tutoriel]({BASE_URL}/fr/composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine), amusez-vous bien avec ces outils, développez-bien, et à la prochaine !
Original file line number Diff line number Diff line change
Expand Up @@ -146,4 +146,4 @@ Il est possible de rajouter autant de paramètres que l’on veut pour le besoin

## Conclusion : vous voilà prêts à utiliser le composant Symfony ExpressionLanguage !
J’espère que vous appréhendez un peu mieux ce composant et que vous allez pouvoir imaginer les cas d’utilisation qui seront utiles pour vos projets !
Mais n’oubliez pas qu’il faut utiliser un composant pour de bonnes raisons, sinon vous risquez de générer de la [dette technique inutilement](https://blog.eleven-labs.com/fr/comment-creer-de-la-dette-technique-des-le-debut-d-un-nouveau-projet/).
Mais n’oubliez pas qu’il faut utiliser un composant pour de bonnes raisons, sinon vous risquez de générer de la [dette technique inutilement]({BASE_URL}/fr/comment-creer-de-la-dette-technique-des-le-debut-d-un-nouveau-projet/).
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ ssh -i path-to-ssh-public-key-server-3 user-server-3@host-server-3:port-server-3
Si vous êtes un peu paresseux, vous avez peut-être configuré des **`aliases`**. C'est bien, mais non optimal !
Nous allons voir comment configurer notre client **`SSH`** de manière à simplifier tout cela. Allez, c'est parti !

Tout d'abord, vous allez créer le fichier `.ssh/config` avec les permissions suivantes : `0600` ou, si vous préférez, `- rw- --- ---`. Ensuite, vous allez l'éditer avec votre éditeur préféré : [vim](https://blog.eleven-labs.com/fr/prise-en-main-vim-php/). 😉
Tout d'abord, vous allez créer le fichier `.ssh/config` avec les permissions suivantes : `0600` ou, si vous préférez, `- rw- --- ---`. Ensuite, vous allez l'éditer avec votre éditeur préféré : [vim]({BASE_URL}/fr/prise-en-main-vim-php/). 😉

Dans ce fichier, nous allons ajouter des blocs de configuration **`ssh`** comme suit :

Expand Down
9 changes: 6 additions & 3 deletions src/helpers/markdownToHtmlHelper.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -151,10 +151,13 @@ export const markdownToHtml = (content: string): string => {
</Text>
),
a: ({ node, ...props }): React.JSX.Element => {
const isExternalLink = (props.href as string)?.match(/^http(s)?:\/\//);
return (
<Link {...props} rel={isExternalLink ? 'nofollow noreferrer' : ''} style={{ overflowWrap: 'anywhere' }} />
const isExternalLink = (props.href as string)?.match(
/^(?!(http(s)?:\/\/)?([^.]+)\.?eleven-labs\.com\/|^\/).*$/
);
if (isExternalLink) {
props['rel'] = 'nofollow noreferrer';
}
return <Link {...props} style={{ overflowWrap: 'anywhere' }} />;
},
blockquote: ({ node, ...props }): React.JSX.Element => <Blockquote {...props} />,
pre: ({ node, ...props }): React.JSX.Element => <Box as="pre" textSize="xs" {...(props as AsProps)} />,
Expand Down

0 comments on commit 88a4b92

Please sign in to comment.