Comprendre le model objet en PHP
Cette présentation explique plutôt bien le modèle objet en PHP de manière assez simple et concrète.
Ca fait jamais de mal de revoir nos bases :)
Cette présentation explique plutôt bien le modèle objet en PHP de manière assez simple et concrète.
Ca fait jamais de mal de revoir nos bases :)
Bien, nous allons tout d'abord préparer l'environnement, histoire d'avoir quelque chose d'accueillant ! :)
Première chose, nous allons modifier le fichier /etc/apt/sources.list, afin qu'il prenne les fichiers de la version stable, et non le nom de la version que vous avez téléchargez (lenny). Ceci afin de toujours disposer des dernières versions stables.
Pour ce faire, éditez le fichier /etc/apt/sources.list et remplacez toutes les occurences de lenny en stable ! :) C'est tout !
Ensuite, mettez à jour la liste des paquets :
apt-get update
Puis installez les éventuelles mises à jours :
apt-get upgrade && apt-get dist-upgrade
Ensuite, nous allons créer un petit fichier qui va s'avérer utile, .email. Ce fichier ne contiendra qu'un email, ne sera visible que par vous, et permettra à des services tels que cron de vous envoyer un email en cas de problème. (Bon, ca ne fonctionnera pas tout de suite puisque nous avons encore aucun serveur mail, mais pour la suite, ce sera vraiment utile !).
Voici la commande :
echo "votre_email@example.org" > .email
Ensuite, nous allons nommer correctement le serveur. Pour cela, plusieurs éléments à modifier :
/etc/hosts, rajoutez le nom de domaine sur l'ip publique :
127.0.0.1 localhost webserv 192.168.0.8 example.org
/etc/hostname, donnez lui le nom voulu :
WebServ
Ensuite, exécutez le script /etc/init.d/hostname.sh, afin de mettre à jour votre nom de serveur. Le changement sera effectué lors de la prochaine connection.
/etc/init.d/hostname.sh
Pour ceux qui auraient des problèmes d'accents dans leur console, il faut modifier le fichier .bashrc, et y ajouter cette ligne :
echo "export LANG=fr_FR.UTF-8" >> ~/.bashrc
La configuration basique est terminée !
Maintenant, prêt pour attaquer le gros du travail ? :)
Normallement, vous disposez d'une version de Debian toute fraîche, prête à l'emploi.
Vous connaissez son IP, pour mon tutoriel, ce sera la 192.168.0.8, et vous avez définit votre dns afin que le nom de domaine que vous disposez pointe bien sur votre ip.
Dans mon cas, j'ai modifié mon fichier hosts :
192.168.0.8 www.example.org
Mais si vous êtes chez un hébergeur, vous pouvez très bien faire pointer les dns sur votre IP ! :)
Il faut aussi que nous donnions un nom à la machine, ce sera WebServ.
Et bien voilà ! Tout est prêt pour attaquer les configurations ! :)
Tout d'abord, installez un logiciel d'émulation type VMWare ou VirtualBox.
Je recommande personnellement VirtualBox, qui est libre.
Téléchargez la version vous concernant, installez là et, probablement, redémarrez.
Ensuite, rendez-vous sur le site de Debian, afin de récuperer la toute dernière version, notre petite Lenny : http://www.debian.org/distrib/.
Comme à l'accoutumé, téléchargez la version vous concernant.
Pour ma part, j'ai opté pour la version NetInst, petit iso de 180Mo qui contient l'essentiel, le reste étant mis à jour une fois l'installation terminée. C'est la version la plus propre d'après moi.
Ensuite, il va falloir définir le réseau de votre environnement émulé.
Deux options s'offrent à vous :
Comme cela dépends de votre choix, de votre émulateur et de votre OS, je ne vais pas faire un détail ici ! Vous êtes suffisamment grand pour trouver la porte d'entrée de Google :)
Afin que notre machine soit reconnue comme un serveur ayant une url (en supposant que l'on dispose d'un nom de domaine), on va modifier le fichier hosts, afin de pointer l'ip du serveur sur un faux nom. Nous utiliserons le nom de domaine http://www.example.org.
Vous trouverez le fichier hosts :
Ceci est pour la plupart des distribs, si vous ne le trouvez pas à l'adresse indiquée, googlez :p
Ensuite, créez votre environnement virtualisé, en choisissant le mode (Bridge/Host-Only) et démarrez l'installation.
L'installation en elle-même n'est pas très compliquée, c'est pour cela qu'elle ne sera pas détaillée ici :) Je vous conseil juste de n'installer que le système standard (une invite vous proposera d'installer, avec, divers serveurs, environnement de bureau, etc. Ne prennez que "Système Standard").
L'installation est terminée ! :) Maintenant, nous allons définir l'ip en statique, histoire de ne pas avoir de mauvaise surprise :p
Editez le fichier /etc/network/interfaces avec votre éditeur préféré (vi, vim, nano, ...), et mettez ceci :
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
#eth0 is enabled during initrd
auto eth0:0
iface eth0:0 inet static
address xxx.xxx.xxx.xxx
netmask 255.255.255.0Ou xxx.xxx.xxx.xxx sera l'ip que vous aurez définit (à vous d'adapter le netmask ensuite). Nous récapitulerons toutes ces informations dans le prochain article.
Et bien voilà ! Votre nouvelle Debian est prête à subir des attaques d'apt !
Le prochain article récapitulera les différentes informations nécéssaires, qui seront récapitulées au début de chaque tutoriels.
Si vous avez des questions/conseils, n'hésitez pas !
L'article rédigé par Martin Roest nous montre à quel point il peut-être facile de jouer avec plusieurs processus en même temps, même en PHP.
J'ai personnellement été très séduit par la simplicité, mais je trouve que l'on pouvais encore faire plus simple : une petite classe :)
L'utilité d'un tel code se trouve sur des scripts de traitement, tel qu'un remaniement de base de donnée, une modifications sur plusieurs fichiers, etc. Par contre, il est important de savoir que la gestion des processus tel qu'il est utilisé ici ne fonctionne pas sous Windows, et qu'il n'est pas conseillé d'appeler ce script depuis un environnement type Apache.
En gros et pour faire simple, ce type de script s'utilise en ligne de commande (php-cli) et dans un environnement Unix, type cron.
Pour vous prouver l'efficacité de mes dires, voici un code bateau qui utilise 5 processus simultanés pour exécuter un script :
<?php
require_once ('ProcessManager.php');
function doBigWork ($iWork) {
echo 'Sleeping for Work N° '.$iWork."\n";
sleep (20);
}
try {
// We instanciate the ProcessManager with 5 childs
$oPM = new ProcessManager (5);
}
catch (Exception $oE) {
die ('Your configuration does not support "pcntl" methods.');
}
for ($i = 0; $i &:t; 12; $i++) {
// It could happen that the script couldn't fork a process. In that case, an Exception would be raised
try {
$oPM->fork ('doBigWork', array ($i));
}
catch (Exception $oE) {
echo 'Using non forked way :'."\n";
doBigWork ($i);
}
}
?>Au final, sans utiliser plusieurs processus, ce code aurait pris 12*20 = 240 secondes. Avec 5 enfants, le temps de travail est divisé par ... 5, soit 48 secondes ! Quand même !
Bien entendu, vous pouvez augmenter le nombre d'enfant, tout dépendra des ressources que consomment votre fonction de travail (histoire de ne pas tuer votre machine (je l'ai fait pendant les tests :p)).
Une dernière modification qui serait sympathique, c'est d'inclure les fonctions lambdas dans la méthode fork, au lieu de l'appel à une méthode en utilisant le call_user_func_array. Mais ma configuration actuelle de Php n'est pas encore en 5.3, donc je ne peux ni jouer avec les closures, ni avec les fonctions lambdas :p Peut-être plus tard ? :)
Voici la classe à proprement parler :
On voit encore beaucoup de fonctions mysql_* traîner sur les applications web car les développeurs ont toujours connu cette pratique, surtout ceux qui ont démarré PHP à l'ère de PHP 3 et PHP 4. Néanmoins, ces fonctions sont aujourd'hui beaucoup trop limitantes car elles ne permettent pas de profiter des spécificités d'un environnement MySQL 5 à savoir :
- Les transactions,
- Les triggers,
- Les requêtes préparées,
- Les procédures stockées...
C'est pour ces raisons que l'extension MySQLi est apparue en PHP 5 pour venir petit à petit essayer de supplanter l'extension MySQL classique. Ainsi en utilisant l'extension MySQLi, le développeur peut jouir des mêmes fonctionnalités qu'avec MySQL ainsi que des nouveautés propres à MySQL 5 avec des performances légèrement meilleures.
Quant à PDO, il est vrai que cette extension est légèrement moins performante en terme de vélocité du fait notamment de la POO mais a le mérite d'être beaucoup plus performante en terme de fonctionnalités offertes (support des transactions, procédures stockées, triggers, requêtes préparées...) et d'indépendance. Avec PDO, on dépend beaucoup moins de son SGBDR contrairement aux fonctions propres à MySQL. Dans le cadre d'une application de forum open-source, c'est un réel avantage de pouvoir offrir aux utilisateurs un support de l'application sur plusieurs SGBDR. Grâce à PDO, la difficulté de cette tâche est largement réduite puisqu'il n'est pas nécessaire d'avoir à écrire soi même les connecteurs pour chaque base. Il suffit juste d'adapter les requêtes SQL. Il est bon de noter qu'en PHP, seul PDO est capable de se connecter à une base de type SQLite 3 par exemple.
Je tiens à préciser également qu'une version 2 de PDO est en cours de réécriture et devrait paraître avec PHP 6 si je ne me trompe pas (à vérifier). Toujours est-il que c'est un chantier en cours du côté de l'équipe de développement de PHP. Le succès de PDO grandit de jour en jour, notamment grâce aux frameworks. Il suffit par exemple de constater combien d'applications d'ORM intégrées aux frameworks PHP 5 actuels s'appuient sur PDO. C'est le cas par exemple de Propel 1.3 et Doctrine 0.9 intégrés à Symfony ou bien encore le composant Zend_Db du framework Zend. C'est notamment grâce aux différents feedbacks des développeurs concernant les performances et la potentielle lourdeur de PDO que l'équipe de développement a ouvert un chantier pour améliorer tout ça dans les mois à venir.
Enfin, je rappelle que la nouvelle extension native MySQLnd, dédiée à MySQL, sera packagée avec PHP 5.3 au moment de sa sortie en version bêta dans le courant du mois d'août et en version stable à l'automne. Donc entre MySQL, MySQLi, PDO, MySQLnd et PDO 2, le choix des connecteurs pour MySQL est large et on peut affirmer aujourd'hui que le driver simple MySQL est obsolète. D'autant plus que PHP 4 ne sera plus supporté à partir du 08 août prochain et MySQL est à l'origine une extension PHP 4 destinée à interagir avec des bases de données MySQL 4. Elle a rendu de très bons services aux développeurs jusqu'à maintenant et je pense que ça continuera encore malgré tout, mais il est temps de montrer aux développeurs d'aujourd'hui qu'il existe des solutions plus fiables, plus "performantes", plus pratiques, plus fonctionnelles et plus pérennes. :)
Commentaire de Hugo HAMON (Webdeb) sur le site de phpcs.com
Encore une nouvelle astuce pour installer un plugin essentiel dans la programmation, j'ai nommé Subversion.
Subversion (svn) est considéré comme étant meilleur que CVS, c'est pourquoi je parlerai de l'installation de Svn et non Cvs.
Comme d'hab, c'est tout simple, dans Eclipse, Help, Software Update, Find And Install.
Cliquez sur New Remote Site et mettez :
http://subclipse.tigris.org/update_1.2.x
Pour mettre à jour le projet depuis le serveur :
team > update
Et pour faire une mise à jour de vos modification vers le serveur :
team > commit
Wala ! :)
Après les infos pour installer le plugin Pdt pour PHP sous Eclipse, voici l'info pour installer JSEclipse, Javascript pour Eclipse.
Comme d'hab, c'est tout simple, il suffit d'ajouter un new Remote Site, avec comme url :
http://download.macromedia.com/pub/labs/jseclipse/autoinstall/
et voila, vous avez maintenant toutes les clés en main pour bien programmer du Web sous Eclipse ! :)
Tout d'abord, la différence entre VMWare Server et VMWare Player est, d'apres Wikipedia :
VMware Player est une workstation allégée, qui permet d'utiliser une machine virtuelle, mais non de la créer. Cette version est utilisable gratuitement.
VMware Server est une application serveur très proche de GSX. Elle remplacera GSX à terme. Elle permet de créer et d'utiliser plusieurs machines virtuelles. Cette version est utilisable gratuitement. L'avantage de cette version, c'est la console distante. On peut ainsi prendre le contrôle de l'ensemble des machines virtuelles depuis une machine distante, ce qui n'est pas possible avec la version VMware Player.
Comment Installer VMWare Server.
Premièrement, aller sur le site de VMWare : http://register.vmware.com/content/download.html puis télécharger le .rpm
Ensuite, faites vous une clée d'enregistrement à http://register.vmware.com/content/registration.html
Une fois ceci fait, faite un simple rpm-ivh VMware.....rpm pour installer la VMWare. Ensuite, installez les composants nécéssaire pour faire tourner vmware, c'est à dire : gcc gcc-c++ kernel-devel kernel-headers xinetd
La configuration directe, en passant par vmware-config.pl risque de ne pas marcher, il faudra télécharger ce patch :
http://knihovny.cvut.cz/ftp/pub/vmware/vmware-any-any-update114.tar.gz
Et exécuter le runme.pl contenu dans ce fichier.
Voila ! VMWare est installé !
Hello tout le monde !
Aujourd'hui, en astuce, comment installer eclipse avec le plugin PhP facilement
Mettre cette url dans les remotes sites pour les mises à jours :
PHP IDE : http://download.eclipse.org/tools/pdt/updates/
Ensuite, cocher toutes les cases, chercher les mises à jours, prendre
* Discovery Site > Web and J2ee Development, Web Standard Tool
Faire Select Required pour les dépendances
Et Php Ide, PDT, PDT Feature.
Next, attendre la mise à jour, Redémarrer Eclipse
Voila !! (Url en cas de besoin : http://www.thierryb.net/site/Installer-Eclipse-PHP-IDE-avec.html)
Maintenant, pour le mettre en francais :
La version actuelle d'eclipse n'à pas encore été traduite, c'est pour cela que l'on ne trouve pas de traductions.