About the Author

OpenTuto

Ajax – Charger un fichier distant

Dans ce tutoriel, nous allons changer le contenu dans une div par le contenu d’un fichier texte distant. Pourvoir le résultat final :

La structure du projet

Le projet se compose de deux fichier :

  • index.html contient le code HTML et JavaScript permettant de charger le texte à partir du fichier texte.txt et le mettre au lieux du teste dans la balise Div.
  • texte.txt contient le texte à charger.

index.html

texte.txt

 

L’héritage en programmation orientée objet avec PHP

L’héritage simple

Il est possible que des classes partagent des attributs et des méthodes. Ce principe est défini par la notion d’héritage qui fait que les classes peuvent être vues comme un ensemble de catégories et de sous catégories.

Pour définir un héritage entre deux classes il faut utiliser le mot-clé extends après le nom de la classe dans sa déclaration.

Exemple:

Le code ci-dessus définit une classe MountainBike qui hérite de la classe BiCycle. La classe MountainBike peut ainsi utiliser tous les attributs et toutes les méthodes de la classe BiCycle.

Il est aussi possible pour la classe MountainBike de redéfinir des attributs ou des méthodes portant les mêmes noms que la classe BiCycles.

Les traits

Les traits sont un mécanisme permettant de réutiliser du code.

Un trait peut être vu comme un ensemble de méthodes qui peuvent être incluses dans d’autres classes. Le contenu du trait est copié dans la classe qui veut l’utiliser. Il n’y a pas besoin d’instancier un trait.

L’avantage des traits est de réduire la duplication de code et de permettre l’utilisation de méthodes de classe sans avoir à passer par la notion d’héritage.

Un trait se définit en utilisant le mot-clé trait.

Pour inclure un trait dans une classe, il faut utiliser le mot-clé use.

La méthode maFonction() est maintenant disponible dans chaque instance de la classe maClasse.

Ce code va afficher :

I Love Opentuto.com!

Les classes abstraites

Une classe abstraite est une classe utilisée pour définir un type d’objet très générique, inutilisable directement, qui force les sous-types à avoir certaines particularités.

Une classe abstraite définit des méthodes et des attributs qui seront disponibles dans les classes qui l’étendent.

Pour indiquer qu’une classe est abstraite, il faut la préfixer du mot abstract.

Pour définir une classe abstraite voiture il faut écrire :

Il est aussi possible de définir des méthodes abstraites dans une classe. Cela permet d’obliger les classes dérivées à implémenter ces méthodes. Pour déclarer une méthode comme abstraite, il faut la préfixer du mot abstract.

Une classe contenant au moins une méthode abstraite doit obligatoirement être définie comme abstraite.

Par exemple, en définissant une classe abstraite comme suit :

Il est possible de définir une classe fille comme suit :

Ce qui permet d’écrire :

Les interfaces

Les interfaces sont utilisées pour vérifier que les objets correspondent à certaines spécifications, c’est-à-dire que chaque objet est conforme à certains comportements, qu’il peut gérer certains types d’évènements ou qu’il possède certaines fonctionnalités.

Pour déclarer une interface, il faut utiliser le mot-clé interface. Les méthodes définies dans une interface sont forcément publiques.

Pour indiquer qu’une classe implémente une interface précise, il faut utiliser le mot-clé implements. Une classe peut implémenter plusieurs interfaces. Dans ce cas, les noms des différentes interfaces sont séparés par des virgules.

  • Les interfaces peuvent hériter d’autres interfaces.
  • Les classes abstraites peuvent implémenter des interfaces.

 

Déclarer une classe et instancier un objet

Déclarer une classe et instancier un objet en PHP

Il est recommandé de lire cet article avant d’entamer ce post : Qu’est-ce que une classe, un objet et une instance

Déclarer une classe

Pour définir une nouvelle classe, il faut utiliser le mot-clé class. Ce mot est suivi du nom de la classe puis d’un bloc d’accolades contenant les propriétés et les méthodes définies.

La déclaration d’un attribut se fait en utilisant la syntaxe de déclaration des variables précédée d’un des mots-clés suivants :

  • private : l’attribut n’est accessible qu’à l’intérieur de la classe.
  • protected : l’attribut est accessible à l’intérieur de la classe et des classes dérivées.
  • public : l’attribut est accessible depuis toutes les classes de l’application.

La déclaration d’une méthode se fait en utilisant la syntaxe de déclaration des fonctions précédée d’un mot-clé identique à ceux utilisés pour déclarer un attribut.

Exemple :

Ce code définit une classe Bicycle contenant un attribut $cadence accessible uniquement dans cette classe, un attribut $speed accessible par des classes dérivées de cette classe ainsi qu’un attribut $gear et une méthode changeCadence accessibles par toute l’application.

Instancier un objet

Pour pouvoir utiliser un objet, il faut le créer à partir d’une classe.

L’instanciation d’un objet se fait en utilisant la syntaxe d’affectation précédée du mot-clé new.

Exemple :

Ce code va instancier un objet de la classe Bicycle.

Maintenant qu’une instance est disponible, il est possible d’avoir accès à ses attributs et ses méthodes.

Exemple :

Qu'est-ce que une classe, un objet et une instance

Qu’est-ce que une classe, un objet et une instance

Pour comprendre la programmation orientée objet, il est primordial de bien connaitre son vocabulaire.

Qu’est-ce qu’un objet ?

Pour faire simple, un objet est une chose.

Il est possible de définir par exemple un objet télévision, voiture, bureau, musique… Un objet peut donc être vu comme une donnée à manipuler.

Chaque objet est défini par des attributs et des méthodes qui lui sont propres.

Un attribut est une caractéristique de l’objet. Par exemple, un objet voiture peut avoir un attribut couleur.

Une méthode est une action qui peut être appliquée à un objet. Par exemple, un objet voiture peut avoir une méthode accélérer.

Qu’est-ce qu’une classe ?

Une classe correspond à un modèle de données. En effet, tous les objets d’une classe partagent les mêmes attributs et méthodes.

Une classe peut être vue comme une famille d’objets.

Par exemple, tous les objets de la classe voiture ont un attribut couleur et une méthode accélérer.

Qu’est-ce qu’une instance ?

Une instance représente une entité particulière d’une classe.

Par exemple, une voiture rouge peut être une instance de la classe voiture.

En résumé, un objet est une instance de classe.

Pourquoi utiliser la programmation orientée objet

Pourquoi utiliser la programmation orientée objet

Pourquoi utiliser la programmation orientée objet ?

La programmation orientée objet amène certains avantages par rapport à la programmation procédurale.

Tout d’abord elle permet d’obtenir un code plus réutilisable. En effet, les types d’objets créés peuvent servir de base pour d’autres objets en ne développant que les évolutions nécessaires.

Ensuite cette programmation offre un code plus compréhensible. En effet, chaque objet va contenir ses propriétés et ses méthodes. Il est donc aisé de voir ce qu’une fonction manipule et à quoi correspondent les variables disponibles.

Enfin la programmation orientée objet amène un code modulaire. En effet, chaque type d’objet ne communique avec les autres types que par des interfaces connues et définies. Cet isolement permet donc de développer facilement d’autres modules pour interagir avec les interfaces déjà utilisées.

Les principaux apports de la norme ECMAScript 6

La norme ECMAScript

ECMAScript est un ensemble de normes de programmation recommandées pour les langages de script et standardisées par Ecma International dans le cadre de la spécification ECMA-262. Ces normes sont principalement appliquées par les interpréteurs JavaScript.

Ces recommandations étant très nombreuses, nous ne détaillerons que quelques-unes de celles définies en 2015 (norme ECMAScript 6) :

  • le mot réservé let ;
  • les paramètres par défaut ;
  • les classes.
  • l’interpolation des variables dans les chaînes de caractères ;
  • la structure itérative for (… of …)… ;
  • la manipulation plus confortable des listes avec :
  • l’utilisation des fat arrows pour simplifier l’écriture des fonctions de callback ;
  • la méthode includes() pour tester la présence d’un élément ;

Le mot réservé let

Le mot réservé let limite la portée de la variable qu’il introduit au bloc d’instructions courant.

Il est, par exemple, systématiquement utilisé pour les variables locales aux structures itératives :

Les paramètres par défaut

Lors de la définition d’une fonction, des valeurs par défaut de paramètres optionnels peuvent être définies :

L’interpolation de variables dans les chaînes

Pour manipuler des chaînes de caractères s’étendant sur plusieurs lignes et/ou interpolant des variables, il est désormais possible d’utiliser les backquotes et ainsi de créer des templates strings.

En voici un exemple :

Une manipulation plus confortable des listes

La structure for (… of …) …

La structure itérative for (let <variable> of <liste>) { ... } permet d’accéder directement aux éléments d’une liste alors que la structure for (let <variable> in <liste>) { ... } n’instancie la variable locale à la boucle qu’avec les indices des éléments de la liste.

La méthode includes()

La méthode includes() permet de tester si une liste contient un élément particulier (la méthode indexOf() ne permettant que de connaître l’indice de l’élément) :

L’opérateur « fat arrow » (=>)

Non seulement la fat arrow (=>) est un raccourci syntaxique pour les fonctions de callback, mais elle permet aussi de conserver le contexte de l’objet courant (this) dans la fonction de callback.

Par exemple, l’écriture syntaxique de la fonction de callback passée en paramètre de la méthode forEach() peut être simplifiée.

Devient :

voire dans ce cas-ci (un seul paramètre) :

Attention, l’implémentation de cette fonctionnalité dépend de la version de votre interpréteur JavaScript

Les classes

ECMAScript 6 définit les classes (via le mot-clé class) et un héritage simple.

La classe possède un constructeur défini par la fonction constructor() et invoqué par l’instruction new.

 

Qu’est-ce que Javascript?

Qu’est-ce que Javascript?

JavaScript est un langage de programmation créé en 1995 par Brendan Eich qui travaillait pour la société Netscape. Le but originel du langage est de créer des scripts, c’est-à-dire des programmes interprétés, qui sont exécutés par un navigateur, principalement pour manipuler les données du DOM (Document Object Model), c’est-à-dire les objets représentant les éléments du document balisé (par exemple, une page HTML) et alloués en mémoire du navigateur.

JavaScript a ensuite beaucoup évolué fonctionnellement (par exemple, en permettant l’accès asynchrone à des données fournies par le serveur) et a même récemment investi le « côté serveur » avec l’environnement Node.js.

JavaScript n’a rien à voir avec Java (seulement quelques structures syntaxiques qui proviennent en fait du langage C).

Le DOM représente la hiérarchie des objets créés par les balises (HTML…) en mémoire du navigateur.

Panorama de l’utilisation de JavaScript

Utilisation de JavaScript coté client:

  • Gérer l’événementiel lié à une page HTML
  • Accéder aux éléments du DOM et, le cas échéant, les modifier avec l’API DOM de JavaScript ou avec des bibliothèques de plus haut niveau comme JQuery.
  • Gérer des flux de données asynchrones avec le serveur via l’architecture AJAX
  • Mettre en œuvre un stockage de données sur le système de fichiers local via les objets JavaScript sessionStorage et localStorage.

Utilisation de JavaScript coté serveur

Les codes JavaScript mis en œuvre du côté serveur sont non seulement utilisés pour gérer des web sockets, mais surtout pour créer des serveurs HTTP très réactifs, car fondés sur l’architecture événementielle de JavaScript. Le principal environnement JavaScript permettant de créer de tels serveurs est Node.js

Où coder du code JavaScript ?

Pour une utilisation côté client hors « bundlelisation », les codes JavaScript doivent être externalisés dans des fichiers d’extension .js et liés aux codes HTML via la balise <script>, comme dans l’exemple ci-après.

Soit le script JavaScript nommé main.js :

Et la page HTML index.html mettant en œuvre ce script :

Cet exemple de code est exécuté en étant chargé dans votre navigateur.

Les messages générés par la méthode log() de l’objet console.

Spring – Injection de dépendance (@Autowired, @Qualifier & @Ressource)

Spring – Injection de dépendance (@Autowired, @Qualifier & @Ressource)

Hello les amis, dans ce tuto nous allons voir comment faire l’injection de dépendance en utilisant l’annotation @Autowired, pour plus de detail sur le DI(Injection de dépendance) je vous invite mes amis d’aller voir ce lien.

1 –  @Autowired :

C’est une annotation qui nous permet de faire l’injection de dépendances entre les beans de l’application (Spring va tout faire), il suffit juste d’annoter un constructeur ou une méthode avec cette dernière. et le conteneur Spring va faire la suite(La creation du bean, le chercher et l’injecter automatiquement…).

  •  Pour bien comprendre le principe je vous propose de faire un petit exemple :

On va utiliser le principe du couplage faible “ne pas avoir beacoup de dépendance entre les classes de votre applicaion ce qui rend la maintenance de ce tte dernière facile”, donc on va créer une classe dao et une interface idao puis une classe metier qui va accéder à la partie dao en utilisant que l’interface :

Donc maintenant, on va créer la classe Metier et utiliser le principe de DI :

Donc, mtn une fois le conteneur Spring se lance, il va crée l’instance de la classe Dao et la classe Metier(Principe Ioc), et il va faire l’injection de dépendance (injecter l’objet créeé de la classe Dao dans la propriété de l’interface IDao qui existe dans la classe Metier)

  • Quelques remarques à retenir :

la valeur par défaut de l’annotation @Autowired est true, ca veut dire qu’il faut obligatoirement initialiser le bean à injecter, si le Conteneur Spring ne trouve pas le bean une exception de type BeanCreationException est levée, on peut bien sur modifier cette annotation en mettant la valeur à false comme suit :

@Autowired(required=false).

Le  conteneur spring va lever des exceptions de type BeanCreationException dans le deux cas suivant :

– Si @Autowired ne trouve aucun bean correspondant au type de l’entité annoté sauf si l’attribut requierd est false.

– Si @Autowired trouve plusieurs beans correspondants au type annoté et que l’élément n’est pas un tableau ou collection.

2 – @Qualifier :

A côté de l’annotation @Autowired, on peut utiliser d’autres annotations pour nous faciliter la vie :D, nous allons voir les annotations @Qualifier & @Ressource

@Qualifier : c’est une annotation utilisée lorsqu’on a plusieurs classes qui implémentent une interface, et on veux faire l’injection des dépendances en utilisant cet interface.

  • Un petit exemple pour bien comprendre :

Dans une seule application , on a une interface IDao qui sera implémentée par 3 classes : DaoJdbc, DaoHibernate, DaoSpringData.

La déclaration des 3 classes :

Dans la partie Métier on a une classe qui va utiliser la partie Dao(pour respecter la principe du couplage faible on va utiliser l’interface IDao) :

Donc puisqu’on 3 classes qui implémentent cette interface, on doit utiliser un truc pour spécifier à la partie métier quelle classe doit utiliser (utilisation de l’annotation Qualifier).

@Qualifier est utilisée donc pour montrer au Conteneur Spring la classe à injecter (dans le cas de plusieurs classes).

2 – @Resource:

L’annotation @Resource : on peut dire qu’elle s’agit d’une fusion entre l’annotation @Autowired et @Qualifier, ci-dessous un petit exemple :

On va utiliser l’exemple précèdent, ci-dessous la déclaration des 3 classes :

Vous avez remarqué qu’il n’ y a aucun changement au niveau de la première partie, par contre dans la partie Métier on a une classe qui va utiliser la partie Dao(pour respecter la principe du couplage faible on va utiliser l’interface IDao) :

Donc comme vous voyez au lieu d’utiliser deux annotation @Autowired et @Qualifier on utilise @Resource