Semaine 19 : PHP POO - SimplonSt-Gaudens/programme-web-dev-promo-2 GitHub Wiki
Semaine 19
Objectif
- Retrouver la programmation objet
- Appliquer avec PHP
Lundi
Présentations de la semaine : Chaque notion abordée cette semaine devra être présentée
Sujets :
- Mardi : Design patterns : Clément
- Mercredi : ORM : Philippe
- Jeudi : SOLID : Guillaume
- Vendredi : procédures stockées : Vanessa
Programmation orientation objet
Piqûre de rappel : Révisions sur le vocabulaire propre à la programmation orientée objet.
La POO :
La POO est un paradigme de programmation informatique. Définition
Classes, instances et objets :
Créer et manipuler des objets
Les relations des objets
Étant donné qu’en POO les objets logiciels interagissent entre eux, il y a donc des relations entre les classes. On distingue quatre types de relations durables
Instance et intanciation
Une instance, c'est tout simplement le résultat d'une instanciation. Une instanciation, c'est le fait d'instancier une classe. Instancier une classe, c'est se servir d'une classe afin qu'elle nous crée un objet. En gros, une instance est un objet. Une instance est une représentation particulière d'une classe. Lorsque l'on crée un objet, on réalise ce que l'on appelle une « instance de la classe ». C'est à dire que du moule, on en extrait un nouvel objet qui dispose de ses attributs et de ses méthodes. L'objet ainsi créé aura pour type le nom de la classe.
Le principe d'encapsulation
L'un des gros avantages de la POO est que l'on peut masquer le code à l'utilisateur (l'utilisateur est ici celui qui se servira de la classe, pas celui qui chargera la page depuis son navigateur). pourquoi c'est important
Le constructeur
En programmation orientée objet, vous entendrez souvent parler de « constructeur ». Un constructeur est en fait une méthode qui va nous permettre de rendre notre classe immédiatement opérationnelle et utilisable en définissant des propriétés dès qu’un utilisateur va vouloir créer une nouvelle instance de cette classe. Pour mieux comprendre
<?php
class NomDeMaClasse
{
// Attributs>
// Constantes
// Méthodes
}
Exemple
class Vehicule {
private $poids;
private $vitesse;
public function avancer(){
return "vroum vroum";
}
public function __construct($pds,$v){
$this->poids = $pds;
$this->vitesse = $v;
}
public static function klaxonner(){
echo "pouet";
}
public function getPoids(){
return $this->poids;
}
public function setPoids($p){
$this->poids = $p;
}
public function getVitesse(){
return $this->vitesse;
}
public function setVitesse($v){
$this->vitesse = $v;
}
}
$titine = new Vehicule(1000, 50);
echo $titine->avancer();
echo $titine->getPoids();
Vehicule::klaxonner();
class Voiture extends Vehicule {
private $nbre_passagers;
public function allumer_autoradio(){
return "lalala";
}
public static function klaxonner(){
echo "tut";
}
public function __construct($pds,$v,$n){
parent::__construct($pds,$v);
$this->nbre_passagers = $n;
}
public function getNbre_passagers(){
return $this->nbre_passagers;
}
public function setNbre_passagerse($n){
$this->nbre_passagers = $n;
}
}
$ferrari = new Voiture(800, 100, 2);
echo $ferrari->avancer();
echo $ferrari->allumer_autoradio();
echo $ferrari->klaxonner();
Les principes d'une bonne conception
TDD Test Driven Development
-
Aide à respecter les principes de conception On a parfois tendance à écrire plus de code que nécessaire. Il est assez facile d'oublier la fonctionnalité que nous souhaitons ajouter car nous sommes perdu·e·s dans la recherche d'un bogue ou dans un enchevêtrement de fonctions. Ecrire les tests en premier vous permet de vous souvenir de ce que vous êtes en train de construire. Vous pouvez le visualiser comme un fil rouge qui vous guide dans la jungle de votre programme !
-
The vidéo qui rappelle les avantages principaux à suivre une démarche TDD :
Des solutions éprouvées à des problèmes récurrents
- Les design Patterns
Depuis les débuts de la programmation, tout un tas de développeurs ont rencontré différents problèmes de conception. La plupart de ces problèmes étaient récurrents. Pour éviter aux autres développeurs de buter sur le même souci, certains groupes de développeurs ont développé ce qu'on appelle des design patterns (ou masques de conceptions en français). Chaque design pattern répond à un problème.
Ressources
- La doc PHP
- This time with PHP
- Classes abstraites et autres joyeusetés
- Modèle MVC
- PHP et MVC
- Un exemple
Liens
- Intro à la POO en PHP
- Générer du HTML avec PHP
- Autoload ou comment charger ses classes PHP
- POO PHP chez OC
- Wikipedia : POO
Exercice
- La version facile : Devra être impérativement traité en TDD
Mardi
Kata (PHP)
Interlude : les procédures stockées
- OC
- Créer une procédure stockée
DELIMITER |
CREATE PROCEDURE afficher_race_selon_espece (IN p_espece_id INT)
BEGIN
SELECT id, nom, espece_id, prix
FROM Race
WHERE espece_id = p_espece_id;
END |
DELIMITER ;
- Utiliser une procédure stockée
CALL afficher_race_selon_espece(1);
OU
SET @espece_id := 2;
CALL afficher_race_selon_espece(@espece_id);
ORM
Exercice
Mercredi
Révisions
Exercice
- Reprendre l'exercice des randonnées à la Réunion et le refaire en utilisant l'ORM.
Jeudi
Randori (PHP)
Write a program that will convert a trinary number, represented as a string (e.g. '102012'), to its decimal equivalent using first principles.
More info
MasterClass Symfony : Allan
Vendredi
Présentations libres : Quelques idées :
- Hacker.io
- Users story mapping (Marion)
- Selenium
- Mavo.io
- Regex
- Netlify
- ORM
On n'oublie pas pour autant le reste :
CV
- Enjeux de l'insertion professionelle digitale
- Les slides qui vont avec
- Choisir sa future boîte en fonction des technos qu'elle utilise
- Portfolios
PHP
SQL
- Tout ce qu'il faut savoir, en PDF, en français, avec des exemples
- Introduction aux BDD et SGBD
- Bonus : cas des accès concurrents
Javascript
- ES6 : arrow functions
- Comprendre React et Angular
- es7 async functions
- async iterators and generators
- Random
- Closure for beginners
- Your site without javascript
- Why React?
HTML/CSS
Git
Game
Design
- Designing Dropbox
- Free photos for creative use
- Outil gratos pour les protos
- Cas pratiques
- French trademarks
- Stock d'images, icônes et vidéos gratuites
- Skeleton screens
- Responsive navigation patterns
- Le web des 90s
Agile
- Agile smells
- Scrum Day 2013
- Agile Tour Toulouse 2013
- Relecture de code
- TDD par la pratique
- Personal Kanban depuis les tranchées
- Eric Siber
MISC DEV
- CodePen Projects
- Silent teacher
- DevArt
- Bonnes pratiques
- App iOS pour apprendre à mieux coder
- Une autre
- Awesome plugins for Atom
- 35 bad programming habits
MISC
- Alternatives à Adobe Illustrator
- Devenir davantage créatif
- Machine-learning
- Sortir de sa zone de confort
- Bis
- Devenir autodidacte
Bonus
-
La Keynote d'ouverture de Devoxx France : https://www.youtube.com/watch?v=172dKBvh9O8
-
De la responsabilité des ingénieurs : https://www.youtube.com/watch?v=jpvMOIVU-Z4
-
Video games: The quest for smart dumbness. : https://www.youtube.com/watch?v=Kc8VO97ukB8
-
La disruption des langues a commencé. https://www.youtube.com/watch?v=1re8onvMHnE
-
TypeScript : dès lundi sur votre App Legacy : https://www.youtube.com/watch?v=r0zxw423gm4
-
Pourquoi votre entreprise, à l'instar de Google et Facebook, devrait stocker l'ensemble de son code dans un seul repo ? : https://www.youtube.com/watch?v=7Dfes-qJQ54
-
Le Streaming d'API : pourquoi et comment transformer vos APIs statiques en données temps réel ? : https://www.youtube.com/watch?v=MmVRkkZ7qHk
-
:heart: Optimiser les performances d'une webapp : https://www.youtube.com/watch?v=9PRPPJFaF_o
-
Node.js comme les grands : https://www.youtube.com/watch?v=RIRB2AFrPV8
-
Mixité dans le monde des webcomponents : https://www.youtube.com/watch?v=izBshf4DawQ
-
Mode offline : Notre application mobile fonctionne au niveau -5 d’un parking : https://www.youtube.com/watch?v=LBYVd-mVMq0
-
Vue.js, à l'ombre des géants : https://www.youtube.com/watch?v=OLR3BypLNGI
-
Kate CDN: Comment reprendre les derniers km qui nous séparent des internautes ? : https://www.youtube.com/watch?v=avi-lFAwwyA
-
À la découverte des Observables : https://www.youtube.com/watch?v=ocgVSQhashY
-
L’enfer de l’objet Date JS : https://www.youtube.com/watch?v=CciS6pNw1TA
-
Développez des applications web desktop avec Electron de Github : https://www.youtube.com/watch?v=kJIy3vvnmHw
-
Statistiques ou vie privée ? Les deux ! : https://www.youtube.com/watch?v=UJbTdWKJwYY
-
Introduction à la Philosophie de l'intelligence artificielle : https://www.youtube.com/watch?v=pDPFnywbWDo
-
Les interfaces utilisateurs comme fonctions pures du temps : https://www.youtube.com/watch?v=5aCmqwCZtxA
-
De bronze à légendaire, comment réussir vos IA de bot : https://www.youtube.com/watch?v=8kBQMQyLHME
-
Il y en avait beeeeeaaaaucoup d'autres, je vous laisse cliquer sur le détail de jeudi ou vendredi ici : http://cfp.devoxx.fr/2017/index.html
-
Et la chaine youtube est juste là : https://www.youtube.com/channel/UCsVPQfo5RZErDL41LoWvk0A