Récapitulatif PHP Objet

Publié dans PHP objet | Laisser un commentaire

Logo PHP

Ce billet vient récapituler la série sur PHP Objet que j’ai effectuée entre mai à juillet 2009. Le but est de faire le point sur PHP Objet, sur mes connaissances et sur les publications réalisés à ce sujet sur 30minparjour. Désormais, j’essayerai de faire un tel résumé pour toutes les séries que j’aborderai. C’est long et fastidieux, mais je pense que cela m’est utile pour faire le point. J’espère que cela vous servira aussi.

Résumons quelques points importants

Petit résumé sur les classes

[abstract ]class MaClasse [extends AutreClasse implements Interface]
{
	public|protected|private [static] $maVariable [= valeur];
	public static $etat = 1;
	
	/**
	 * Constructeur
	*/
	public|protected|private function MaClass|__construct()
	{
		// Déclaration des variables et autres
	}
	
	/**
	 * Fonction classique
	*/
	public|protected|private [static final abstract] function maMethode()
	{
		// Action de la fonction maMethode
		$this--->maVariable = 'test';
		self::$etat = 0;
		$this->autreMethode();
		[parent::autreMethode();]
	}
	public function $autreMethode()
	{
		echo 'Hello world!';
	}
}

Au passage, je rappelle qu’une classe peut implémenter plusieurs interfaces, mais ne peut hériter que d’une seule classe.

Petit résumé sur les interfaces

interface Interface [extends AutreInterface]
{
	/**
	 * Fonction classique
	*/
	public function $maMethode();
	/**
	 * Autre fonction classique
	*/
	public function $autreMethode();
}

Petit résumé sur les singletons

class Singleton
{
	/**
	 * Variable static valant null si la classe n'est pas encore instanciée
	 * ou contenant l'instance si la classe est instanciée.
	 * On y accède avec self::$_instance
	*/
	private static $_instance = null;
	
	/**
	 * Constructeur private inaccessible en dehors de la classe
	*/
	private function __construct()
	{
		// On instancie ce qu'il faut
	}
	
	/**
	 * Accessor static, donc accessible sans être instancié, renvoyant 
	 * l'instance, en la créant si besoin
	*/
	public static function getInstance()
	{
		if (self::$_instance == null) {
			self::$_instance = new Singleton();
		}
		return self::$_instance;
	}
}

Quelques méthodes magiques utiles

  • __construct() : Appelée lorsqu’on tente de construire la class
  • __destruct() : Appelée lorsqu’on tente de détruire la class
  • __set() : Déclenchée lors de l’accès en écriture à une propriété de l’objet. Exemple d’utilisation
  • __get() : Déclenchée lors de l’accès en lecture à une propriété de l’objet. Exemple d’utilisation
  • __call() : Déclenchée lors de l’appel d’une méthode inexistante de la classe (appel non static). Exemple d’utilisation
  • __callstatic() : Déclenchée lors de l’appel d’une méthode inexistante de la classe (appel static) : disponible depuis PHP 5.3 et 6.0
  • __isset() : Déclenchée si on applique isset() à une propriété de l’objet
  • __unset() : Déclenchée si on applique unset() à une propriété de l’objet -> différence avec __destruct() ?
  • __sleep() : Exécutée si la fonction serialize() est appliquée à l’objet. Exemple d’utilisation
  • __wakeup() : Exécutée si la fonction unserialize() est appliquée à l’objet. Exemple d’utilisation
  • __toString() : Appelée lorsque l’on essaie d’afficher directement l’objet : echo $object;
  • __clone() : Appelé lorsque l’on essaie de cloner l’objet. Exemple d’utilisation

Conclusion

Je crois qu’on vient de faire un tour vraiment rapide mais plus ou moins complet du PHP Objet. A mon sens, il manque 3 notions à ce résumé (mais on ne peut pas tout résumer) :

  • Les exceptions. Il faudrait que je m’y mette un jour. Heureusement il existe un très bon tutoriel sur « Apprendre PHP » : Les exceptions.
  • Un autre chose plutôt cool qu’aborde « Apprendre PHP » est l’interface Iterator, quoi que je ne vois pas trop l’interêt en PHP, mais je sais combien c’est cool en Java !
  • La copie d’une classe. Je l’ai quand même vraiment pas mal résumé ici : Le clônage n’est pas une référence.

Billets traitant de PHP Objet

J’ai trié et classé toutes les publications que j’ai fait sur ce blog à propos du PHP Objet.

Apprentissage

Application

Trucs et astuces

Documentation et tutoriels

Je vous présente les quelques sites que j’ai fréquemment utilisé pour comprendre le fonctionnement et les finesses de PHP et du PHP orienté objet.

Expression n°2 : Les bras m’en tombent

Publié dans Geekeries | Laisser un commentaire

Expression n°2 : Les bras m’en tombent

Les bras m'en tombent

Parce que des matins je me réveille en me disant que quand même :

  • faudrait que j’utilise un peu cette tablette graphique
  • faudrait que je pratique un peu Photoshop Et que je n’ai pas beaucoup de temps pour ça… Misère !

Booster ses CSS

Publié dans HTML et CSS | 2 commentaires

Depuis que je suis sur Twitter (vous pouvez me suivre), j’ai l’occasion de lire plus d’articles sur le Web qu’auparavant et notamment quelques uns sur les CSS. Je vous livre donc mes découvertes et réflexions du moment.

CSS sur une ligne

Single line CSS en anglais. C’est le concept qu’il est mieux d’écrire ses CSS sur une seule ligne plutôt qu’en bloc. Par exemple en bloc :

ul li {
list-style:none;
border:1px solid black;
font-weight:bold;
}
dl dt {
width:800px;
}

donnerait sur une ligne

ul li{list-style:none;border:1px solid black;font-weight:bold;}
dl dt{width:800px;}

Le grand avantage c’est que ça réduit le poids du fichier CSS (assez significativement d’ailleurs, même si ça n’a pas grande influence sur le poids total d’une page Web), et ça évite de scroller des heures pour arriver à la fin du fichier. L’énorme inconvénient c’est que c’est moins lisible. C’est vrai, mais j’ai testé et en fait pas tant que ça. Pour ma part je pense que je vais adopter une sorte de mix : CSS sur une ligne, et CSS en bloc pour les lignes trop longue. Sans oublier de commenter les différentes parties du code, on n’est pas à 10 lignes près quand même !

Quelques exemples

Éviter les espaces superflues

Dans le même genre, histoire de grappiller quelques octets, c’est vrai que ça ne sert à rien de rajouter des espaces entre une propriété et sa valeur, une balise et l’accolade qui la suit. Bref, je suis pour d’enlever les espaces superflues ! Mais quand même, un espace entre chaque propriété quand on écrit en ligne : c’est cool pour les yeux !

Enlever les les sélecteurs

CSS superflues D’après PageSpeed (un outils de Google pas mal du tout pour tester la rapidité de ses pages Web), il serait avantageux de réduire au maximum la liste des sélecteurs CSS. Prenons l’exemple suivant :

#menu ul li{font-weight:bold;}

Préciser l’élément ul est en général superflue puisque pour un cas classique, il n’y aurait pas de li en dehors d’un ul dans #menu. Il vaudrait donc mieux écrire :

#menu li{font-weight:bold;}

Et je dis : ouais, ça se tient ! ça réduit la taille du fichier CSS, améliore la lecture du fichier, et il y a des chances que cela facilite le travail de l’interpréteur de CSS. Attention tout de même à ne pas tailler à l’arrache dans le CSS, certains sélecteurs sont utiles !
C’est tout pour aujourd’hui !

Mise à jour 2 ans plus tard : de nos jours, on cherche toujours plus à grappille des octets ! Par contre, on évite absolument de faire ce que je propose ! On écrit son code CSS aussi humainement que possible, puis on génère à partir de ce code, un feuille de style minifiée à laquelle tous les espaces inutiles, ainsi que les commentaires, auront été retirés. Certains vont même jusqu’à utiliser un langage plus haut niveau que CSS (acceptant des variables par exemple), puis le faire passer à la moulinette d’un pré-processeur (SASS, LESS, … chacun ayant son mini-langage) qui génère une feuille de style minifiée et optimisée pour le traitement par le navigateur.

ParisGospel2010 – Un festival gospel à ne pas manquer

Publié dans Informations | Laisser un commentaire

Un billet un petit peu particulier aujourd’hui pour promouvoir un événement à ne pas rater ! Cet été du 15 au 25 juillet 2010, ce sera le moment d’être sur Paris ! Durant 10 jours, aura lieu un festival de Gospel dans le 12ème arrondissement de notre belle capitale !
ParisGospel2010
Au programme des réjouissances :

  • des concerts tous les jours, notamment les groupes Eternity Gospel Choir, New Gospel Family, Nation Dance Crew et plusieurs autres
  • de l’art de rue, des chorégraphies, des mini-concert, du théâtre, du dessin (un truc assez cool sur les murs, j’ai pas tout capté), de l’animation dans les rues
  • des conférences autour du Gospel
  • une exposition sur Martin Luther King et la naissance du Gospel

Ce festival va réunir plusieurs artistes d’Ile-De-France ainsi que d’autres coins de France, mais encore de Belgique et même du Québec !

ParisGospel2010, ou plus littéralement Paris Go-Spell 2010, c’est donc un événement à ne pas me manquer pour profiter de la richesse du gospel et de son message d’espoir et de paix.
Personnellement, j’ai l’occasion de participer un petit peu à la préparation de ce festival, j’ai pu écouter plusieurs fois certains groupes, et je crois que ça vaut le coup. Alors j’espère vous voir en juillet pour prendre part aux festivités !

Plus d’informations sur ParisGospel2010

Pour obtenir un complément d’informations sur ce festival, il est possible de visiter le site Internet de ParisGospel2010 : http://parisgospel2010.com.
Ce site donne notamment quelques points d’explications sur les origines du Gospel, fournit des pistes pour découvrir ce style de musique si captivant, poignant et vif, et présente en avant-première le programme prévisionnel du festival. N’hésitez pas à faire tourner l’information ! (Twitter, Google, e-mail, tout ce que vous voulez !)
Artistes de ParisGospel2010

Quelques techniques de concaténation dans différents langages

Publié dans Geekeries | Laisser un commentaire

D’après Wikipédia : > Le terme concaténation […] désigne l’action de mettre bout à bout au moins deux chaînes (de caractères).
Simplement un petit mémo rapide sur la concaténation dans différents langages.

Javascript, jQuery, Java

variable1+variable2 "texte texte texte"+variable1

PHP

variable1.variable2 'texte texte texte'.variable1

C++

variable1<<variable2 "texte texte texte"<<variable1

SQL

CONCAT(variable1, variable2) CONCAT("texte texte texte", variable1)

CONCAT_WS pour ne pas être embêté avec les champs vides.

Lire un fichier XML avec jQuery

Publié dans Javascript | Laisser un commentaire

Ces derniers jours avec mon système de commentaires, je me suis pas mal amusé sur plusieurs points de jQuery, mais une notion me paraissait étrange : la lecture d’un fichier XML. JQuery permet une manipulation simple et poussée du DOM, mais lorsqu’on récupère un fichier XML d’une requête Ajax, on serait incapable de le traiter autrement qu’avec des « bidouilles » Javascript à l’ancienne ?

$.post('ajax.php', function(xml) {
 	var xmlData = xml.getElementsByTagName('com')[0];
 	var ret = xmlData.getElementsByTagName('ret')[0].firstChild.nodeValue;
 	var xmlPseudo = xmlData.getElementsByTagName('pseudo')[0].firstChild.nodeValue;
 	var xmlCommentaire = xmlData.getElementsByTagName('commentaire')[0].firstChild.nodeValue;
}, 'xml');

Franchement, j’y croyais pas. Aujourd’hui j’ai trouvé la solution !

Continuer la lecture

30minparjour sur Twitter

Publié dans Informations | 4 commentaires

Doucement, doucement je m’y met ! Je viens d’ouvrir un compte sur Twitter pour « 30 minutes par jour » sous le pseudo fylhan (original n’est-ce pas ?), on verra ce que ça donne…

http://twitter.com/fylhan

J’en ai profité pour tester les 2 plugins Dotclear pour Twitter, pour l’instant j’ai pris celui qui me convenait le mieux : Twitter. Quand j’aurais un peu plus de temps, je veillerai à customiser ça.

Edit : bon en fait je suis passé sous WordPress et il existe une foultitude d’extensions pour Twitter !

Un système de commentaire avec jQuery en Ajax (2)

Publié dans Javascript | 25 commentaires

Hier, j’expliquais comment faire un système de commentaire avec jQuery, c’est-à-dire un système de commentaires sans rechargement de la page. Mais il manquait encore l’appel Ajax, j’entends par là, l’appel asynchrone à un script PHP qui enregistre le commentaire ajouté dans une base de données. C’est aujourd’hui chose faites ! J’en profite pour expliquer les différents tests que j’ai effectué avec getJSON et post en mode JSON et XML.

Première étape : getJSON

Je rappelle l’idée de ce script : un utilisateur peut remplir un formulaire pseudo+commentaire et lorsqu’il l’envoie, hop son message apparait sans rechargement de la page en tête des autres commentaires. Son commentaire a été enregistré dans une base de données entre temps. Du coup :

  • on a besoin d’envoyer 2 données au script PHP : le pseudo et le contenu du commentaire
  • on a besoin que le script PHP nous renvoie 3 données : le pseudo et le contenu du commentaire (qu’on a sécurisé et affiné si besoin) et une valeur de retour (1 si ok, 0 si problème)

Et la, si vous êtes que moi et que vous ne connaissez pas JSON, vous avez le droit de vous demander quoi faire.
Continuer la lecture

Un système de commentaires avec jQuery (1)

Publié dans Javascript | 18 commentaires

Dans la série jQuery voici un petit système de commentaire ! L’idée est simple : un utilisateur peut remplir un formulaire pseudo+commentaire et lorsqu’il l’envoie, hop son message apparait sans rechargement de la page en tête des autres commentaires. Pour l’instant pas d’Ajax, donc pas d’enregistrement dans une base de données, mais c’est pour le prochain article : un système de commentaire avec jQuery en Ajax (2) ! D’abord le code HTML :

<form action="?id=commentaire" method="post" id="form">
 <fieldset>
 	<legend>Ajouter un commentaire</legend> 
	<label for="pseudo">Pseudo</label>
 	  <input type="text" name="pseudo" id="pseudo" />
 	<br />
 	<label for="contenu">Commentaire</label>
 	  <textarea name="contenu" id="contenu" rows="4" cols="4"></textarea> 
	<br />
 	<input type="submit" value="Ok" />
 </fieldset>
 </form>
 <div id="commentaire">
 	<p class="last pair first" id="com_1"><strong>BN</strong> a dit :<br />Coucou !  Je m'appelle BN et je suis un BN, et toi, tu fais quoi dans la vie ?</p>
 </div>

Continuer la lecture

Menu accordéon facile en jQuery

Publié dans Javascript | Laisser un commentaire

Et je continue avec ma série jQuery ! Aujourd’hui, l’idée est de réaliser un menu accordéon plutôt cool : Démo menu accordéon. En voici le code HTML :

<dl>
	<dt>Titre 1</dt>
		<dd>Exemple 1</dd>
		<dd>Exemple 2</dd>
		<dd>Exemple 3</dd>
		<dd>Exemple 4</dd>
	<dt>Titre 2</dt>
		<dd>Exemple 1</dd>
		<dd>Exemple 2</dd>
		<dd>Exemple 3</dd>
	<dt>Titre 3</dt>
		<dd>Exemple 1</dd>
		<dd>Exemple 2</dd>
		<dd>Exemple 3</dd>
		<dd>Exemple 4</dd>
		<dd>Exemple 5</dd>
	<dt>Titre 4</dt>
		<dd>Exemple 1</dd>
		<dd>Exemple 2</dd>
	<dt>Titre 5</dt>
		<dd>Exemple 1</dd>
		<dd>Exemple 2</dd>
		<dd>Exemple 3</dd>
		<dd>Exemple 4</dd>
		<dd>Exemple 5</dd> </dl>

Continuer la lecture