So you're making your own view helper and you need, for a reason, to access the running $view instance. Don't worry, all you have to do is implement a setView() method which will be called on your helper's instantiation, with the $view as argument:
class My_View_Helper_SpecialPurpose {
protected $_view = null;
public function setView($view) {
$this->_view = $view;
}
}
And voila !
Ca y est, je suis inscrit pour passer la certification PHP de Zend. Cet examen, si je le réussis, me permettra d'apparaitre dans l'annuaire des professionnels PHP certifiés par la société éditrice de PHP. A ce jour, ils ne sont que 64 en France. Je pourrai aussi collé le petit logo adéquat sur mon site professionnel et autres documents (CV, carte de visite, papier entête...).
Cela se passe la semaine prochaine dans un centre d'examen Pearson Vue situé à Valence. Bien que mon premier test blanc se soit bien déroulé, je vais continuer les révisions cette semaine. Comme on me l'avait annoncé lors du Road Show Zend, le niveau est assez élevé et les connaissances nécessaires plutôt vastes : réseau, base de données, programmation objet, expressions régulières, XML, Web services, sécurité...
Du coup, pour les révisions, j'ai investi dans dans un bouquin qui couvre spécifiquement tous les domaines de l'examen. Je vous le recommande si vous voulez, vous aussi, tenter l'aventure de la certification.

C'est curieux, quand je me suis décidé à me lancer dans cette certification, j'ai pensé à ce que tout le monde dit : c'est pas facile de reprendre des études. Mais en fait, tout ce passe bien. Je réalise que mon métier d'informaticien m'oblige à acquérir constamment de nouvelles connaissances et j'ai pris l'habitude d'apprendre assez facilement.
J'espère que tout se passera bien...
Une traduction des minutes de la réunion du 24 juin 2007 (désolé du retard !)
L'original est disponible ici: http://news.php.net/php.pear.dev/47232 Réunion du 24 juin 2007 du PEAR Group
Heure: 19h UTC to 20:15 UTC La réunion à eu lieu sur IRC.
Membres présents Christian Weiske (cweiske) Helgi Þormar (helgi) Joshua Eichorn (jeichorn) PEAR President - Greg Beaver (cellog)
Membres absents Martin Jansen (mj) Paul M Jones (pmjones) Arnaud Limbourg (arnaud) David Coallier (davidc)
La mission de PEAR est de fournir des composants réutilisables, mener l'innovation dans le monde PHP, montrer des bonnes pratiques sur le développement PHP et la formation des développeurs.
http://wiki.pear.php.net/index.php/TaskList
Wiki + authentification avec le site web de pear. Ca ne fonctionne pas encore, nous espérons une résolution rapide. Le subversion est en place, l'ajout d'une API est nécessaire pour une gestion depuis pearweb. Les services de PEAR seront déménagé vers un nouveau serveur plus rapide dans les prochaines semaines.
L'emplacement du subversion sera http://svn.pear.php.net/PEAR2/{nomdupaquetage} Cette décision est soumise au vote du groupe par email.
http://wiki.pear.php.net/index.php/RFC_Policy Cette décision est soumise au vote du groupe par email.
http://wiki.pear.php.net/index.php/PEAR2_Standards
Ce guide fait partie des objectifs de PEAR de montrer les bonnes pratiques, il commencera sur le wiki
Le processus pour PEAR2 serait:
Le mentor envoie l'email de bienvenue Mini-FAQ pour aider le nouveau-venu dans les premières étapes Documentation sur le package.xml, un guide d'utilisation rapide du gestionnaire de bugs et de roadmap pour générer la première version du package.xml, emplacement des divers outils (subversion, archives de la mailing list)
Prochaine réunion Prévue pour le 8 juillet
Je relaie ici cette chouette initiative d'un groupement de projets open source pour inciter à l'adoption et au déploiement de php5 en lieu et place de l'antique et moins performant php4 : Go PHP 5 !
Php4 nous a rendu de fiers services, mais il est plus que temps de reconnaître que cette version est maintenant largement dépassée et que le maintien de son utilisation ne sert pas l'essor du langage sur des projets de grande envergure... d'autant que la fin du support officiel de php4 est annoncée pour cette année.
Le pire c'est que php6 et ses alléchantes petites révolutions vont arriver l'année prochaine, je sens qu'on est pas sorti de l'auberge :/
Edit : La mort de php4 officiellement annoncée sur php.net. Le vendredi 13 lui a porté malchance ^^
Je relaie ici cette chouette initiative d'un groupement de projets open source pour inciter à l'adoption et au déploiement de php5 en lieu et place de l'antique et moins performant php4 : Go PHP 5 !
Php4 nous a rendu de fiers services, mais il est plus que temps de reconnaître que cette version est maintenant largement dépassée et que le maintien de son utilisation ne sert pas l'essor du langage sur des projets de grande envergure... d'autant que la fin du support officiel de php4 est annoncée pour cette année.
Le pire c'est que php6 et ses alléchantes petites révolutions vont arriver l'année prochaine, je sens qu'on est pas sorti de l'auberge :/
Edit : La mort de php4 officiellement annoncée sur php.net. Le vendredi 13 lui a porté malchance ^^

Pour commenter sur les futurs standards de PEAR2 utilisez la page discussion du wiki.
Vos commentaires sont très importants, ce document va définir PEAR2.
http://wiki.pear.php.net/index.php/PEAR2_Standards
A noter le document est en anglais.
Equipe Nexen
![]() | Le Webmaster de ce site (Christophe Villeneuve) vient de rejoindre l'équipe de Nexen.net comme rédacteur pour la période d'été 2007. Il sera chargé entre autre de mettre toutes les actualités et nouveautés concernant le PHP et mySQL. Bon courrage à lui
|
Ben voilà, c'est fait :-)

Me voici Expert PHP certifié par Zend.
L'examen correspondait bien à ce que j'avais décrit dans ce billet précédent. Je ne regrette vraiment pas d'avoir passé quelques tests blancs avant l'examen officiel et d'avoir potassé le PHP|Architect's Zend PHP 5 Certification Study Guide . J'ai trouvé que les questions étaient du même style que les tests et que les réponses pouvaient se trouver dans le livre.
Je ne sais pas précisément quelle va être la suite des évènements, je devrais normalement recevoir un diplôme et être inscrit sur l'annuaire Zend... mais l'essentiel reste la satisfaction d'avoir réussi.
MàJ : Pour ceux qui souhaitent avoir une idée de leur niveau en PHP, le site Certificationphp.com propose un petit test ;-)
Une traduction des minutes de la réunion du 8 juillet 2007
L'original est disponible ici: http://news.php.net/php.pear.dev/47328 Réunion du 8 juillet 2007 du PEAR Group
Heure: 19h UTC à 20:20 UTC La réunion à eu lieu sur IRC.
Membres présents:
Membres absents:
La prochaine réunion aura lieu le 22 juillet. Arnaud ne pourra pas y assister.
David s'occupe de l'authentification entre le wiki et peardev
Les valeurs mentionnées dans les minutes précédentes ont été acceptées.
Une API est en cours d'écriture pour permettre la mise à jour du karma depuis pearweb. Le subversion, wiki et blog ont été déplacés sur le nouveau serveur.
Une revue publique de deux semaines aura lieu à partir du 9 juillet
David va bientôt l'annoncer
Une page wiki va être écrite, elle sera intégrée au manuel une fois stabilisée
Christian construit un outil d'assurance qualité récoltant les résultats de différentes vérifications (documentation, package.xml,standards de codage, tests unitaires). La suite de tests unitaires concernant tout PEAR évolue et supporte déjà 15 paquetages. Le code permettant d'executer les tests .phpt existe, de nombreux paquetages vont pouvoir être intégrés grâce à cela. Le code permettant d'executer les tests .phpt sera intégré à PHPUnit4
Une traduction des minutes de la réunion du 8 juillet 2007
L'original est disponible ici: http://news.php.net/php.pear.dev/47328 Réunion du 8 juillet 2007 du PEAR Group
Heure: 19h UTC à 20:20 UTC La réunion à eu lieu sur IRC.
Membres présents:
Membres absents:
La prochaine réunion aura lieu le 22 juillet. Arnaud ne pourra pas y assister.
David s'occupe de l'authentification entre le wiki et peardev
Les valeurs mentionnées dans les minutes précédentes ont été acceptées.
Une API est en cours d'écriture pour permettre la mise à jour du karma depuis pearweb. Le subversion, wiki et blog ont été déplacés sur le nouveau serveur.
Une revue publique de deux semaines aura lieu à partir du 9 juillet
David va bientôt l'annoncer
Une page wiki va être écrite, elle sera intégrée au manuel une fois stabilisée
Christian construit un outil d'assurance qualité récoltant les résultats de différentes vérifications (documentation, package.xml,standards de codage, tests unitaires). La suite de tests unitaires concernant tout PEAR évolue et supporte déjà 15 paquetages. Le code permettant d'executer les tests .phpt existe, de nombreux paquetages vont pouvoir être intégrés grâce à cela. Le code permettant d'executer les tests .phpt sera intégré à PHPUnit4
[Via la liste technique de Clever Age]
Ceux qui suivent le développement de PHP6 en scrutant le dépôt CVS ont exulté : la future mouture du langage se voit dotée d'une fonctionnalité très attendue des développeurs : la gestion des espaces de noms (namespaces en anglais.) L'implémentation retenue est celle proposée par Dmitry Stogov.
Mais alors qu'il est encore difficile d'imposer PHP 5 à l'ensemble des hébergeurs et développeurs, combien de temps allons-nous devoir attendre pour déployer des outils utilisant ces alléchantes fonctionnalités de PHP 6 ?
[Via la liste technique de Clever Age]
Ceux qui suivent le développement de PHP6 en scrutant le dépôt CVS ont exulté : la future mouture du langage se voit dotée d'une fonctionnalité très attendue des développeurs : la gestion des espaces de noms (namespaces en anglais.) L'implémentation retenue est celle proposée par Dmitry Stogov.
Mais alors qu'il est encore difficile d'imposer PHP 5 à l'ensemble des hébergeurs et développeurs, combien de temps allons-nous devoir attendre pour déployer des outils utilisant ces alléchantes fonctionnalités de PHP 6 ?
J'annonçais la semaine dernière la parution du livre sur la Sécurité PHP 5 et MySQL.
Sachez que la table des matières et 4 chapitres sont disponibles en pdf chez l'éditeur (Eyrolles)

This is a simple controller plugin for the Zend Framework which enable RESTful behaviour. It basically adds the HTTP method name to the action name, so that the URL http://example.com/foo/bar will be dispatched to FooController::barGetAction on a GET, FooController::barPostAction on a POST, etc.
Here is the actual code:
<?php
class My_Controller_Plugin_Rest extends Zend_Controller_Plugin_Abstract {
/**
* Defines the format of the REST action name
* Quite useless atm as the dispatcher will strip
* any non alpha character
*/
protected $_nameFormat = ':action:method';
/**
* Rewrites the action according to the http method
*/
public function preDispatch() {
$request = $this->getRequest();
$restActionName = $this->_translateSpec($this->_nameFormat, array(
'action' => $request->getActionName(),
'method' => $request->getMethod(),
));
$request->setActionName($restActionName);
}
/**
* Inject values into a spec strings
*
* Allowed values are:
* :action => the action name
* :method => the http method
*
* @param string $spec
* @param array $vars
* @return string
*/
protected function _translateSpec($spec, $vars = array()) {
foreach($vars as $key => $value) {
switch($key) {
case 'action':
case 'method':
$$key = $value;
break;
default:
break;
}
}
$replacements = array(
':action' => $action,
':method' => $method,
);
$value = str_replace(array_keys($replacements), array_values($replacements),$spec);
return $value;
}
}
Still, i'm not completly satisfied with this plugin. Plugins certainly allows for powerful control over what's going up in the dispatch process, but the dispatcher itself enforces a set of rules on actions naming (eg, you can't have a _ in it, it is stripped at dispatch time). Thus, I'm wondering on the pertinence of writting a custom dispatcher (read My_Controller_Dispatcher_Rest) instead of just a plugin, which would enable far more possibilities.
Btw, in case you're wondering, the plugins is used like this;
$frontController = Zend_Controller_Front::getInstance(); $frontController->registerPlugin(new My_Controller_Plugin_Rest);
Easy heh ?
Also, I'm not convinced that this plugin is the way to go in matter of RESTful functionnality. I'm still wondering if it would not be better to have urls mapped to a single controller, replacing actions with http methods (that is, http://example.com/foo/bar would map to FooController::getAction, etc).
Any opinions around ?
eZ Class Lists adds a tab to the Administration Interface of eZ Publish that lists objects sorted by modification date. It is possible to restrict the list to a given content class.
It is a small and very simple extension. I wrote it because I receive a lots of spam trackbacks on my blog and this extension lets me quickly delete trackback objects.
Yesterday I came up with a small pagination component for the Zend Frameworks. It implements the Proxy pattern around a Zend_Db_Table object, and overloads the fetchAll method. The main problem I encountered here was to retrieve the total number of rows for the table. I'm using a Zend_Db_Select query for now, but I'll have to improve that. The component also features a view helper to draw the pagination links.
You'll find the code for the component and the view helper on my SVN.
And here is how it is used in the controller:
public function indexAction() {
$urls = new Riskle_Db_Table_Paginate(new Urls, $this->_getParam('page'));
$this->view->urlsList = $urls->fetchAll(null, 'datetime DESC');
$this->view->paginationInfos = $urls->getPaginationInfos();
}
The view helper takes paginationInfos as an argument:
echo $this->paginate($this->paginationInfos);
UPDATE
As pointed out by Guy, the _getPageCount method does not actually takes care of the $where condition, thus rendering the class inefficient as getting the real totel number of items. This issue will be adressed in an upcoming version of the class :-)
UPDATE
There's an updated version of this component available.
Sur le blog "Maugrim The Reaper's", annonce OpenID for PEAR: Services_Yadis proposed
Un package Services_Yadis a été proposé pour PEAR.
Celui-ci fournit une implémentation PHP5 des spécifications 1.0 de Yadis [1] une condition des spécifications de l'authentification 2.0 d'OpenID.
La proposition est une émane de la proposition de « Zend_Service_Yadis » de février du Zend Framework.
Les différences principales (près du PEARification) sont les gros bugs fixés.
Quoi qu'il en soit, à côté de Crypt_HMAC2 et de Crypt_DiffieHellman (qui ont passé l'étape du vote cette semaine - en attente d'un compte CVS) ca marquera une autre étape importante dans le support d'OpenID dans PEAR.
Merci à Christian Schmidt dont les commentaires venus très tôt sur la proposition de Yadis dans PEAR permis de régler des problèmes.
[1] Au fait la page n'existe pas dans wikipedia en français, ya pas quelqu'un de tenté par l'expérience :)
Ca faisait un petit moment que je ne rédigeais plus trop d’articles sur PHP, il est vrai que Python me prend pas mal de temps ces jours-ci, alors j’ai décidé de sortir mon Apache et ma DB préférée du sommeil pour voir un peu comment gérer dans une application ses utilisateurs. Bon comme d’habitude, je préviens, tout ça est le mix dans mon cerveau de nombreuses documentations ainsi que d’expériences personnelles, donc il se peut que la méthode que je vais présenter comprenne des erreurs et peut sans doute être améliorée.
Pour moi la grande force de PHP5 est sa partie objet, qui même si elle n’est pas encore parfaite, nous permet de travailler avec de nombreux design patterns (motif de conception) plutÎt intéressants. Dans un précédent article j’ai essayé de démontrer l’utilité des registres pour la conservation
et le transfert d’objet dans toutes les couches d’une application, ce soir je vais présenter le bien connu Singleton ainsi que l’excellente Factory.
Dans notre application, un utilisateur enregistré pourra soit être administrateur soit être invité. Un invité est un utilisateur de base, il a le droit en lecteur seul. Un administrateur lui, a le droit de lecture, écriture, modification. L’application va donc se découper en deux parties, la premiÚre sera la gestion des utilisateurs via le pattern Factory, la seconde sera la gestion de la base de donnée via le pattern Singleton.
Le Singleton, est un des motifs de conception les plus connus, et un des plus pratiques. Il a sa place dans toutes sortes de classes. Il permet d’instancier une seule fois la classe ainsi dans toutes les couches de notre application on retrouvera la même instance. Pour ça, il utilise un constructeur privé qui sera appelé par une méthode public souvent nommée par convention “getInstance” celle-ci va mettre en attribut l’instance retournée par le constructeur, ainsi au nouvel appel de “getInstance” si notre objet a déj été créée il le retourne, sinon il le créée. Le principe est assez simple ou plutÎt ingénieux ! seulement j’explique pas trÚs bien (; …un bout de code devrait nous éclairer.
Donc la Factory …ce pattern sert d’intermédiaire, son but est de retourner notre application un objet du type qu’on souhaite. Pour ça, on lui passe en paramÚtre un ou plusieurs arguments, et via la définition de classe “modÚle” elle retournera l’objet adéquat. Cette fois-ci je vais plutÎt vous rediriger ver wikipedia, car ce pattern demande un peu plus de code, et on va l’utiliser pour gérer les utilisateurs.
Voila la table chargée de stocker les utilisateurs en base de données
Pour la gestion des utilisateurs, nous allons donc utiliser une Factory, dans un premier temps on définit la classe abstraite qui servira de modÚle aux autres classes, qui dériverons d’elle.
Maintenant ses dérivés
Nous disposons maintenant de tous les éléments nécessaires pour créer notre Factory.
Donc, en fonction d’un identifiant, d’un mot de passe ainsi que d’un niveau d’autorisation, notre Factory nous retournera un objet GuestUser, ou un objet AdminUser.
Nous allons présent définir notre classe qui fera l’intéraction avec la base de données en utilisant le pattern Singleton. Celle-ci devra être capable d’enregistrer un utilisateur, ainsi que de retourner un utilisateur déj enregistré. Pour l’enregistrement nous utiliserons la méthode “addUser” qui demandera en paramÚtre un objet de type User, ensuite pour la restauration d’un utilisateur, nous utiliserons la méthode “getUser” qui demandera en paramÚtre un identifiant ainsi qu’un mot de passe, celle-ci retournera grâce notre Factory un objet de type User, soit Admin soit Invité.
Création d’un nouvel utilisateur
Récupération d’un utilisateur
Voila comment peuvent être géré des utilisateurs avec un concept objet bien sur il peut y avoir bien plus de niveaux d’autorisation pour nos utilisateurs, et ceux-ci peuvent disposer de bien plus de propriétés, ensuite cette implémentation peut etre sans doute améliorée, le plus important étant la séparation des données.
While the Zend Framework's manual is somewhat quite good, it lacks a feature that make it a really good manual: search. I find it very frustrating to not be able to make a simple search and therefor having to browse through the extensive TOC to find what I'm actually looking for. Here enters the very handy Google co-op service which allows creation of custom search engines based on Google's indexes. It do not takes more than five minutes to setup a simple search engine, thus providing search capability to the manual :-)
And as a good news never comes alone, I also made the OpenSearch plugin for it.
UPDATE
I made a simpler url to remind of: http://zend.riskle.com/search/ and updated the opensearch thing to use that url.
Le framework Symfony vient de sortir un nouveau plugin appelé sfSimpleCMSPlugin.
Ce module est un CMS pour créés plus facilement vos applications, modifié le contenu, la mise en forme des pages devient plus simple et rapide
[Nexen]
La plate-forme "developerWorks" d'IBM nous propose aujourd'hui d'apprendre à séparer le code de rendu (HTML/CSS) du code PHP, et cela à travers un tutoriel sur l'utilisation de Smarty.
Smarty est un moteur de template pour PHP qui permet de séparer la présentation d'une application d'un côté, et sa logique de l'autre. Cette pratique est jugée parfois utile, d'une part car elle permet de ne pas polluer le code PHP de balises HTML (et vice-versa), et d'autre part car elle offre la possibilité au webdesigner et au développeur de travailler en même temps sur un projet sans être gênés l'un par l'autre.
Cette introduction à Smarty apprend au néophyte à l'installer puis à l'utiliser pour réaliser un premier exemple simple, permettant ainsi d'appréhender le fonctionnement des moteurs de template en général.
L'article d'IBM
Site officiel de Smarty
Documentation PDF
J’ai récement fais quelques recherches sur les solutions e-commerce actuellement en cours de développement dans le domaine de l'open-source.
Il s'avère que osCommerce reste la référence dans le monde de open-source, même si de nombreux forks existe (versions dérivées, issus du même moteur, Google est ton amis).
A l’heure actuelle il existe un concurrent sérieux à osC, à savoir Joomla combiné au « gros plugin » VirtueMart. Cette solution est intéressante mais manque furieusement de fonctionnalités en comparaison d’osC. De plus, la version actuelle n’est pas encore super stable (à mon avis).
Une version alpha devrait sortir courant août et s’annonce vraiment puissante ! Plutôt que de paraphraser le site web officiel, je vous invite à consulter la liste des features et les screenshots : http://www.magentocommerce.com
2 nouvelles versions pour Joomla! D'une part la version 1.0.13 qui apporte quelques correctifs, d'autre part la version 1.5 qui passe en RC1.
Cette première version RC (Release Candidate) pour le nouveau Framework/CMS Joomla! 1.5 porte de nom de "Maypa" ("nouveau" en swahili).
Cette version ne s'appuie plus sur le code de Mambo, mais sur un code annoncé comme plus innovant et plus performant.
Une version RC2 devrait être disponible courant août, suivie d'une version stable...
La branche 1.0 n'est pas en reste puisqu'une version 1.0.13 est également disponible.
Cette version corrige quelques failles de sécurité, des problèmes de sessions d'administrateurs et, entres autres, renforce le système de stockage des mots de passe.
Avant l'installation de mises à jour, Vérifiez bien la compatibilité de vos extensions ;-)
Souvent, chez les herbergeurs, la fonction iconv() de php n'est pas définie alors que celle-ci est souvent indispensable quand on manipule des données provenant de différentes sources.
Fatal error: Call to undefined function iconv()
Alors comment faire pour convertir des chaînes de caractères d'un encodage vers un autre sans cette fonction ?
Voici une astuce bien utile :-)
Souvent les fonctions htmlentities() et html_entity_decode() sont présentes (à partir de la version 4.3.0 de PHP) et peuvent palier à l'absence de iconv()
[php]
<?php
/**
* Alternative iconv() function when original is missing.
* @param string $from original charset
* @param string $to destination charset
* @param string $string to convert
* @return string converted
* @author Jean-Pierre Morfin
* @license Creative Commons By
* @license http://creativecommons.org/licenses/by/2.0/fr/
*/
if(!function_exists("iconv"))
{
function iconv($from, $to, $string)
{
$converted = htmlentities($string, ENT_NOQUOTES, $from);
$converted = html_entity_decode($converted, ENT_NOQUOTES, $to);
return $converted;
}
}
?>
Après presqu'une heure de recherche de solution, j'ai pensé que ce billet en aiderait plus d'un ;-)
La première version stable de Xdebug 2 est disponible depuis le 18 juillet 2007 après plus de trois ans de développement et presque quatre années après le lancement du projet.
[Portail PHP]
Je rencontre très fréquemment des projets PHP open source ou propriétaires qui font une utilisation assez curieuse des classes PHP. Un exemple pourrait être celui ci :
<?php
class MaClasse
{
function mafonction($param)
{
// exemple
echo $param;
}
function monautrefonction($param)
{
// exemple
echo $param;
}
}
MaClasse::mafonction("toto");
MaClasse::monautrefonction("toto");
?>
La question que je me pose est la suivante : que veut faire le développeur en utilisant une classe juste pour appeler une méthode de celle-ci ?
c'est trop bien la POO, tu devrais t'y mettre !)
Dans le premier cas, son action est tout à fait louable mais pour faire juste appel à une méthode, je préférerais un nom de fonction plus long (domaine_fonction() par exemple). Heureusement, PHP 6 (et peut être même PHP 5.3) nous apportera un système d'espace de nom très pratique qui permettra de scinder le code en domaine autrement qu'en détournant l'utilisation des classes. Plus d'info sur les namespaces PHP à venir.
Dans le second cas, le pauvre développeur se fait des illusions :-( Son code n'a rien d'orienté objet. Une solution plus élégante utilisant de véritables objets pourrait-être celle-ci :
[php]
<?php
class MaClasse
{
private $_valeur;
function __construct($param)
{
$this->_valeur = $param;
}
public function mafonction()
{
// exemple
echo $this->_valeur;
}
public function monautrefonction()
{
// exemple
echo $this->_valeur;
}
}
$obj = new MaClasse("toto");
$obj->mafonction();
$obj->monautrefonction();
?>
Sur un petit exemple, cela paraît plus compliqué, mais tous les aspects objet comme l'héritage, les interfaces, la visibilité des méthodes et propriétés, la surcharge et tous les design patterns possibles, rendent la gestion de gros projets plus simple, plus sûr, plus rapide, plus évolutifs...
Depuis la version PHP 5, ce langage est devenu véritablement orienté objet. Alors, maintenant que la mort de PHP 4 a été annoncée, il est temps de regarder attentivement comment utiliser pleinement ces nouvelles fonctionnalités objet afin de développer de belles applications évolutives facilement maintenables.
Pour ma part, un gros projet qui utilise les avantages de PHP 5 est en cours d'écriture... mais je vous en dirai plus en temps voulu...
Pour les rares personnes au courant de mon projet, merci de rester discret ;-)
Une version de maintenance vient d'apparaître pour le moteur de recherche et d'indexation mnoGoSearch.
Parmi les améliorations apportées, on citera un meilleur fonctionnement avec les documents volumineux, la prise en compte du Content-Type "application/http", ou bien encore la possibilité de spécifier une option "StripAccents" pour pouvoir effectuer des recherches sans avoir à se soucier des caractères accentués.
Pour de plus amples informations, merci de consulter le changelog.
Sebastian Bergmann publie cette nouvelle version de son cadre de tests unitaires pour PHP. Cette version inclut le support natif de Selenium, pour réaliser des tests d'interface depuis le navigateur.
Il permet aussi l'export des données de résultat dans une base de données, pour en faciliter la réutilisation. Le support des objets Mock a été amélioré, ainsi que le système de gabarits.
Il se lance maintenant dans le développement de la prochaine version : PHP Unit 4.
Le bulletin d'informations en Podcast de ProPHP propose les actualités discutées :
[Nexen]
UPDATE
A new version of this component is available.
I have a new version of my pagination component which solve the issue previously pointed out by Guy. This update comes along with a subclassed version of Zend_Db_Table which allows counting and specific columns selection respectively via the fetchCount() and fetchCols() methods. Btw, the fetchCols() method is very hackish at the moment, and I'll certainly end up with rewriting it using a plain Zend_Db_Select statement.
As always, any comment is appreciated. I'm thinking of subclassing the Rowset class to fill it with pagination info getters like getPageCount(), getNextPage(), etc, like in Symfony for those knowing, instead of relying on a getPaginationInfo() method. Future improvements will also include more view helper magic.
Also, I came up with a small new Riskle_Pattern namespace which I use to implement commonly used patterns, such as the Proxy Pattern. I'm not yet sure of the pertinence of this thing, so any comments are yet again very much appreciated on this topic :-)
GoPHP5 est une initiative qui vise à pousser l'adoption des versions récentes de PHP. Cette action est soutenue par des projets très populaires comme Phpmyadmin, Drupal, Gallery, PHPUnit...
En effet aujourd'hui beaucoup de développeurs sont obligés d'écrire du code PHP4 à cause d'hébergeurs refusant de migrer vers PHP5. Cela est pénalisant car le support objet de PHP4 souffre de sérieuse lacunes et donc le code est de moins bonne qualité et plus dur à maintenir.
PHP5 apporte aussi un parsing du xml plus simple et une couche d'abstraction de base de données de très bonne qualité (PDO).
Pourtant le passage a PHP5 est trivial dans la plupart des cas (il s'agit souvent de juste quelque warning) et c'est une première étape avant PHP6.
C'est pour cela que dans le cadre du projet USVN nous avons décidé de soutenir cette initiative et de ne plus supporter les versions de PHP inférieur À la 5.2.
- La version 5.0 de PHP souffre de problème de performance et il y manque PDO. - La version 5.1 est de bonne qualité, mais il lui manque les extensions JSON et Filter
Mais ce n'est pas vraiment un problème puisque la plupart des distributions fournissent PHP 5.2 (debian compris).
No Parking est à la recherche d'un ingénieur logiciel PHP5. Le poste est basé à Lille, petite bourgade du nord de la Francie et il s'agit d'un CDI.