Logo: Marc Harnist

Index des pages de la catégorie "PHP"

PDO exemples
Le 17/07/2018
Auteur: Marc L. Harnist

Extrait:

Page __PDO-exemples-co" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Page __PDO-exemples-cours

Création d'un utilisateur de niveau 2: propriétaire
Le 05/07/2018
Auteur: Marc L. Harnist

Extrait:

Cet utilisateur a des droits limités: il peut créer des pages mais pas des membres." (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Création d'un objet en créant un autre objet: création de deux objets dans un même protocole
Le 23/04/2018
Auteur: Marc L. Harnist

Extrait:

Exemple:
// Création d'un nouvel objet dans la classe RectangleB" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Exemple:
// Création d'un nouvel objet dans la classe RectangleB et, en même temps, création d'un objet Point2D qui est le centre du rectangle.
$rectangle1 = new RectangleB(new Point2D(1,1), 2, 3);

Prototype POO déterminant le style d'un objet
Le 23/04/2018
Auteur: Marc L. Harnist

Extrait:

Exemple:
// Point2D signifie: $centre doit être de type Point2D" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Exemple:
// Point2D signifie: $centre doit être de type Point2D: $centre ( Point2D est le nom d'une classe)
public function __construct(Point2D $centre, $largeur, $longueur){

symboles XML des classes: - + et #
Le 23/04/2018
Auteur: Marc L. Harnist

Extrait:

Il existe des symboles pour les graphiques XML pour shématiser les classes:

+ public" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Il existe des symboles pour les graphiques XML pour shématiser les classes:

+ public (par exemple +ReseauLan dans l'image ci-dessous)
- private (par exemple - nom dans l'image ci-dessous)
# protected (#nomNoeud dans l'image en exemple ci-dessous)

diagramme de classe

Corriger les conflits entre namespace et autoloader de classes POO
Le 23/04/2018
Auteur: Marc L. Harnist

Extrait:

// Chargement des classes
function chargerMesClasses($nom_des_classes){
$nom_du_fi" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

// Chargement des classes
function chargerMesClasses($nom_des_classes){
$nom_du_fichier = explode("\\",$nom_des_classes); // crée un tableau au niveau du backslash qui est supprimé
require "classes/" . end($nom_du_fichier) . ".php";
}
spl_autoload_register("chargerMesClasses");

use Geometrie\Rectangle; // Nom de la classe

Opérateur de conditionnel "ternaire" en PHP
Le 23/04/2018
Auteur: Marc L. Harnist

Extrait:

Source sur Manuel PHP
" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Source sur Manuel PHP

public function estCarre(){
return ($this->base == $this->hauteur);
}
public function afficherRectangle(){
return "Longueur: " . $this->base . "
- Largeur: " . $this->hauteur . "
- Perimètre: " . $this->perimetre() . "
- Aire: " . $this->aire() .
($this->estCarre()? ' Il s\'agit d\'carré. ' : ' Il s\'agit d\'un rectangle.'); Ici on voit le ? et : qui servent de comparateur.
}

Clonage php avec &
Le 20/04/2018
Auteur: Marc L. Harnist

Extrait:

Rarement utilisée: "&" permet un clonage


" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Créer un namespace: exercice 8, usage de use pour la connexion au namespace
Le 20/04/2018
Auteur: Marc L. Harnist

Extrait:

Fun Html et PHP5


<" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Fun Html et PHP5


Exercice 8 Créez deux namespaces nommés Firme::Client et Firme::Commercial possédant chacun des classes Personne.< br> Chacune d'elles doit avoir des propriétés pour enregistrer les coordonnées de la personne et son code, un constructeur, des méthodes set() et get() pour pouvoir modifier et afficher les propriétés. Créez ensuite des objets représentant deux clients et un commercial.< br>
Création du namespace Firme\Client fichier chap9exo8.php
NB1: la notation est celle de 5.3 antislash \ entre Firme et Client.< /p>

La classe Firme/Commercial/Personne (root/classes/Personne.php)


< ?php
namespace Firme\Commercial;

// Auteur: Marc L. Harnist le 20/04/2018

// Création d'une classe abstraite "Personne" avec deux attributs
class Personne{

// Private ici, rendus publiques dans classes/Electeur.php
protected $prenom;
protected $nom;
protected $adresse;
protected $separateur;


// Création du constructeur
public function __construct($prenom, $nom, $adresse, $separateur=", "){
$this->prenom = $prenom;
$this->nom = $nom;
$this->adresse = $adresse;
$this->separateur = $separateur;
}

public function getPrenom(){
return $this->prenom;
}

public function getNom(){
return $this->nom;
}

public function getCoordonnees(){
return $this->prenom .
$this->separateur .
$this->nom .
$this->separateur .
$this->adresse . " Namespace réussi. ";


}

} // Close class

La classe Firme/Client/Personne (root/classes/Personne.php)


< ?php

namespace Firme\Client;


// Auteur: Marc L. Harnist le 20/04/2018
// Faire ensuite un clonage d'un objet (ex 6)

// Création d'une classe abstraite "Personne" avec deux attributs
class Personne{

// Private ici, rendus publiques dans classes/Electeur.php
protected $prenom;
protected $nom;
protected $adresse;
protected $separateur;


// Création du constructeur
public function __construct($prenom, $nom, $adresse, $separateur=", "){
$this->prenom = $prenom;
$this->nom = $nom;
$this->adresse = $adresse;
$this->separateur = $separateur;
}

public function getPrenom(){
return $this->prenom;
}

public function getNom(){
return $this->nom;
}

public function getCoordonnees(){
return $this->prenom .
$this->separateur .
$this->nom .
$this->separateur .
$this->adresse;

}

} // Close class client

Code de la page web bureau-de-vote.php qui importe les classes


< ?php

// Création d'une classe enfant de Personne
class Client extends Personne{

public $adresse;
public $separateur;

public function __construct($prenom, $nom, $adresse, $separateur = ", "){
parent::__construct($prenom, $nom);
$this->adresse = $adresse;
$this->separateur = $separateur;
}

public function getCoordonnees(){
return $this->prenom .
$this->separateur .
$this->nom .
$this->separateur .
$this->adresse;

}

public function setPrenom($prenom){
$this->prenom = $prenom;
}

public function setNom($nom){
$this->nom = $nom;
}
} // Close des classe Client

< ?php

require "Firme/Client/personne.php";
require "Firme/Commercial/personne.php";
use Firme\Client\Personne as Client;


$clientC = new Client("Karine", "Talbotier", "New-York");
?>
< h4>< ?=$clientC->getCoordonnees();?>< /h4>
< ?php
use Firme\Commercial\Personne as Commercial;
$commercialA = new Commercial("Aurelian", "Belou", "Shangaï");
?>
< h4>< ?=$commercialA->getCoordonnees();?>< /h4>

Exercice de clonage d'objet (POO)
Le 20/04/2018
Auteur: Marc L. Harnist

Extrait:


// CLONAGE
$clientB = clone($clientA);
$clientB->setPrenom("RaphaEl");" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier


// CLONAGE
$clientB = clone($clientA);
$clientB->setPrenom("RaphaEl");
echo "

{$clientB->getCoordonnees()}

";

Classes mère et filles: gestion des attributs et fonctions
Le 20/04/2018
Auteur: Marc L. Harnist

Extrait:

Exemple classe mère Personne
< ? php

// Auteur: M" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Exemple classe mère Personne
< ? php

// Auteur: Marc L. Harnist le 20/04/2018
// Faire ensuite un clonage d'un objet (ex 6)

// Création d'une classe abstraite "Personne" avec deux attributs
abstract class Personne{

// Private ici, rendus publiques dans classes/Electeur.php
protected $prenom;
protected $nom;

// Création du constructeur
protected function __construct($prenom, $nom){
$this->prenom = $prenom;
$this->nom = $nom;
}

IMPORTANT: LES GETTERS SONT DANS LA CLASSE MERE POUR SES ATTRIBUTS
public function getPrenom(){
return $this->prenom;
}

public function getNom(){
return $this->nom;
}

Les classes filles


< ?php

// Création d'une classe enfant de Personne
class Client extends Personne{

public $adresse;
public $separateur;

public function __construct($prenom, $nom, $adresse, $separateur = ", "){
parent::__construct($prenom, $nom);
$this->adresse = $adresse;
$this->separateur = $separateur;
}


public function getCoordonnees(){
return $this->prenom .
$this->separateur .
$this->nom .
$this->separateur .
$this->adresse;

}
} // Close des classe Client

< ?php
class Electeur extends Personne {

public $bureau_de_vote;
public $vote = False;
public $separateur;


public function __construct($prenom, $nom, $bureau_de_vote, $separateur = ", "){
parent::__construct($prenom, $nom);
$this->bureau_de_vote = $bureau_de_vote;
$this->separateur = $separateur;
}

// Public function "avoté" enregistre si une personne
// a voté dans la propriété vote.
public function avote(){
$this->vote = True;
}

public function getBureau_de_vote(){
return $this->bureau_de_vote;
}
} // Close class Electeur

La page qui utilise ces classes


< ?php

// AUTOLOADER DE CLASSES
function chargerLesClasses($nom_des_classes){
require "classes/" . $nom_des_classes. ".php";
}
spl_autoload_register("chargerLesClasses");

// CREATION D'OBJETS
$clientA = new Client("Marc", "Harnist", "San Francisco");
?>

getCoordonnees();?>



< ?php

// Création d'objets
$electeurA = new Electeur("Terence", "Hervin", "Berg");

// L'électeur vote
$electeurA->avote();

// Contrôle du vote
if($electeurA->vote == True) echo "{$electeurA->getNom()} du bureau de vote " . $electeurA->getBureau_de_vote() . " a voté.";
else echo "{$electeurA->getNom()} du bureau de vote {$electeurA->getBureau_de_vote()} n'a pas encore voté.";

POO attributs private
Le 20/04/2018
Auteur: Marc L. Harnist

Extrait:

Un attribut privé (private) ne peux être utilisé que dans la classe que le contient. Ainsi, les c" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Un attribut privé (private) ne peux être utilisé que dans la classe que le contient. Ainsi, les classes enfants ni ont pas accès.

Les valeurs de retour en PHP7. Ex: public function getExtension(): ?string // de base doit être un string mais peut être null
Le 17/04/2018
Auteur: Marc L. Harnist

Extrait:

Les valeurs de retour ¶
Les valeurs sont renvoyées en utilisant une instruction de retour o" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Les valeurs de retour ¶
Les valeurs sont renvoyées en utilisant une instruction de retour optionnelle. Tous les types de variables peuvent être renvoyés, tableaux et objets compris. Cela fait que la fonction finit son exécution immédiatement et passe le contrôle à la ligne appelante. Voir return pour plus d'informations.

Source: en savoir plus

La fonction php throw
Le 30/03/2018

Extrait:

// Par défaut PDO renvoie un tableau
// FETCH_ASSOC renvoie un tableau associatif
for" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

// Par défaut PDO renvoie un tableau
// FETCH_ASSOC renvoie un tableau associatif
foreach($db->query("SELECT * FROM utilisateur", PDO::FETCH_ASSOC) as $row){
var_dump($row);
}

// I create my own exception child class
class NullDiviserException extends Exception{} // Exception{} is a PHP object

class Fraction {
protected $numerateur;
protected $denominateur;

public function __construct($numerateur = 0, $denominateur = 0){
$this->numerateur = $numerateur;
$this->denominateur = $denominateur;

// using THROW
if($this->denominateur == 0){
throw new NullDiviserException("Division par zéro impossible mon petit ami!");
// Notez que Exception est un objet

}
}
public function __toString(){
return $this->numerateur."/".$this->denominateur;
}
}

Bien afficher le contenu des arrays
Le 26/03/2018
Auteur: Marc L. Harnist

Extrait:

Pour un plus bel affichage de print_r($array);
installez la fonction print_r entre des balise" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Pour un plus bel affichage de print_r($array);
installez la fonction print_r entre des balises "pre"
Testez,
vous aurez une surprise

PDO read
Le 26/03/2018
Auteur: Marc

Extrait:

// Par défaut PDO renvoie un tableau
$reqSelect = "SELECT * FROM utilisateur";
" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

// Par défaut PDO renvoie un tableau
$reqSelect = "SELECT * FROM utilisateur";

$stmt = $db->prepare($reqSelect);
$stmt->execute();
$resultat = $stmt->fetchAll();

print_r($resultat);

PDO update
Le 26/03/2018
Auteur: Marc

Extrait:

// Par défaut PDO renvoie un tableau
$reqUpdate = "UPDATE utilisateur SET age = :age WH" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

// Par défaut PDO renvoie un tableau
$reqUpdate = "UPDATE utilisateur SET age = :age WHERE Id = :id";

$stmt = $db->prepare($reqUpdate);
$stmt->execute(array(":age" => 20, ":id" => 1));

Travailler sur plusieurs tables mysql
Le 26/03/2018
Auteur: Marc

Extrait:

Ici on affiche le contenu de deux tables: "utilisateur" et "annonce"



// Par" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Ici on affiche le contenu de deux tables: "utilisateur" et "annonce"



// Par défaut PDO renvoie un tableau
$reqSelect = "SELECT * FROM utilisateur, annonce WHERE utilisateur.id = id_utilisateur";

$stmt = $db->prepare($reqSelect);
$stmt->execute();
$resultat = $stmt->fetchAll();

var_dump($resultat);

Exceptions
Le 26/03/2018
Auteur: Marc

Extrait:

Les exceptions sont les gestions des erreurs.

MA CLASSE FRACTION (exemple)
" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Les exceptions sont les gestions des erreurs.

MA CLASSE FRACTION (exemple)

// I create my own exception child class
class NullDiviserException extends Exception{} // Exception{} is a PHP object

class Fraction {
protected $numerateur;
protected $denominateur;

public function __construct($numerateur = 0, $denominateur = 0){
$this->numerateur = $numerateur;
$this->denominateur = $denominateur;

// using THROW
if($this->denominateur == 0){
throw new NullDiviserException("Division par zéro impossible mon petit ami!");
// Notez que Exception est un objet

}
}
public function __toString(){
return $this->numerateur."/".$this->denominateur;
}
}

MON CONTROLLER

try{
$fraction = new Fraction();
echo $fraction;
}
catch(NullDiviserException $exception) // NullDiviserException is my own child class of Exception{} of php
{
echo "La fraction n'a pas été initialisée.";
}
catch(Exception $exception) // You can create several exception
{
echo $exception->getMessage();
}

Namespace
Le 26/03/2018
Auteur: Marc

Extrait:

Un namespace c'est donner le chemin de la classe à votre code php pour éviter les interférences e" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Un namespace c'est donner le chemin de la classe à votre code php pour éviter les interférences entre deux classes qui ont le même nom.

new \ Basic(); // va à la racine du site pour les classes.
\ cherche l'ESPACE DE NOM GLOBAL;

Les namespaces sont utiles pour votre bibliothèque de classes que vous voulez utiliser dans un autre site.

MVC
Le 26/03/2018
Auteur: Marc

Extrait:

Source: Terence Hervin de Sylvan
Model: structures de données
Vue: affichage
C" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Source: Terence Hervin de Sylvan
Model: structures de données
Vue: affichage
Controller: lien entre models avant la vue.

Transformer un objet POO en chaîne de caractère
Le 25/03/2018
Auteur: Marc L. Harnist

Extrait:

Avertissement

La première fois que j'ai utilisé cette fonction, je n'avais pas co" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Avertissement

La première fois que j'ai utilisé cette fonction, je n'avais pas compris qu'il fallait l'inscrire dans la classe et l'appeller dans la vue ou le controller. Ou alors l'appeler dans une autre fonction de la classe. Peut-être...

Le code: avec __toString



class MaClasse{

private $texte;

public function __construct ($texte){
$this->texte = $texte;
}

public function __toString() // fonction qui explique à PHP comment doit se comporter
// l'objet si on l'affiche comme une variable
{
return $this->texte;
}
}
$obj = new MaClasse ('bonjour');
var_dump($obj);
echo "< br>";
echo $obj; // affiche l'objet $obj comme une string grâce à la fonction __toString() qui a
// défini au-desssus comme doit se comporter l'affichage.




Résultat


< ?php


class MaClasse{

private $texte;

public function __construct ($texte){
$this->texte = $texte;
}

public function __toString() // fonction qui explique à PHP comment doit se comporter l'objet si on l'affiche comme une variable
{
return $this->texte;
}
}
$obj = new MaClasse ('bonjour');
var_dump($obj);
echo "
";
echo $obj; // affiche l'objet $obj comme une string grâce à la fonction __toString() qui a défini au-desssus comme doit se comporter l'affichage.

Transformer un object POO en array()
Le 25/03/2018
Auteur: Marc L. Harnist

Extrait:

si $object est un objet qui contient un array(),
alors $array = (array)$object; renvoie l'arr" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

si $object est un objet qui contient un array(),
alors $array = (array)$object; renvoie l'array contenu dans l'objet vers un nouvel array appellé $array. $array n'est pas un objet mais un array simple.