Le Forum PHP Benelux 2010 a eu lieu ce WE
Voici quelques photos.
Suite à l'annonce de HipHop, le nouveau projet de Facebook en PHP De nombreuses réactions ne se sont pas fait attendre venant de la scène PHP. Le site PHP Developer.org a référencé une liste des réactions. Nous retrouvons
* The Echolibre blog * Christian Stocker * Brandon Savage * Philip Olson * Ilia Alshanetsky * Marco Tabini * Chris Jones (Oracle) * Terry Chay * Sebastian Bergmann * Stuart Herbert * Vid Luther * Stefan Koopmanschap * SitePoint PHP blog * Stanislav Malyshev * Lukas Smith * Stefan Priebsch * the ServerGrove blog * Shawn Stratton * Jake Smith
Voici quelques astuces que j’utilise à longueurs de journée dans la dernière version de Netbeans, la 6.8, celle qui intègre plutôt pas mal symfony.
Pour créer un code template, Tools -> Options -> Editor -> Code templates.
Sélectionnez le langage dans lequel vous voulez créer un code template, ici PHP.
Abréviation « err » suivie de TAB, code :
error_log('debug: ' . print_r(${VARIABLE variableFromPreviousAssignment default="$variable"}, TRUE));
Le bout de code ${VARIABLE variableFromPreviousAssignment default= »$variable »} récupère la dernière variable définie dans mon code et l’ajoute automatiquement dans la fonction error_log().
Rapide pour débugguer et afficher le contenu de ma variable dans mes logs.
Abréviation « pub » suivie de TAB, code :
public function execute${cursor}(sfWebRequest $request) { }
${cursor} permet de mettre le curseur directement à cet endroit.
Ce sont les deux seuls que j’ai créés et que j’utilise d’ailleurs. Je ne me sers pas de ceux par défaut. Surement un tort, faudrait que je m’y mette …
Si vous aussi vous avez des code templates sympas, pratiques et utiles, n’hésitez pas, ça peut servir.
J’en ai fait un pour du javascript, dans le même genre que pour error_log().
Abréviation « al », suivie de TAB, code :
alert('debug: ' + ${cursor});
Tiens, ça me fait penser au projet Zen Coding pour ceux qui ne connaissent pas encore.
Bonne journée !
Ces articles peuvent également vous intéresser :
Petite optimisation d'un vieux bout de code qui trainait
[php]
if (isset($arrItem)) {
$items_selected_nbr = sizeof($arrItem);
if ($items_selected_nbr>2) {
srand((double)microtime() * 1000000);
$itemList[0] = rand(0,($items_selected_nbr) - 1);
do {
srand((double)microtime() * 1000000);
$rand = rand(0,($items_selected_nbr) - 1);
} while (in_array($rand, $itemList));
$itemList[1] = $rand;
do {
srand((double)microtime() * 1000000);
$rand = rand(0,($items_selected_nbr) - 1);
} while (in_array($rand, $itemList));
$itemList[2] = $rand;
$itemList[0] = $arrItem[$itemList[0]];
$itemList[1] = $arrItem[$itemList[1]];
$itemList[2] = $arrItem[$itemList[2]];
?>
[php] <?php $itemList = array_intersect_key($arrItem, array_flip(array_rand($arrItem, min(3,count($arrItem))))); ?>
En fait l'ancien code retourne toujours 3 éléments qui se suivent. et rien du tout si le tableau initial est plus petit que 3
Petit coup de pub pour le tout premier plugin symfony de funkyproject. Ce plugin intègre le plugin jquery jquery-option-tree.
Le plugin se trouve ici mais je n’effectue pas le support de celui-ci.
Ces articles peuvent également vous intéresser :
Le sondage de Zend révèle que le principal focus porte sur le développement d’applications Web critiques avec le Zend Framework, l’utilisation grandissante de Mac OS X pour le développement et une demande accrue pour la formation et la certification.
Le sondage de Zend révèle que le principal focus porte sur le développement d’applications Web critiques avec le Zend Framework, l’utilisation grandissante de Mac OS X pour le développement et une demande accrue pour la formation et la certification.
CUPERTINO, Californie, 16 février 2010 – Zend Technologies, Inc., a annoncé aujourd’hui les résultats de l’étude sur la "Situation du développement PHP et Zend Framework", un sondage mondial réalisé en ligne en décembre 2009 auprès de la communauté des développeurs PHP Zend Framework. Les réponses au sondage reflètent un haut niveau de satisfaction apporté par l’utilisation du Zend Framework au sein d’un groupe très diversifié allant du consultant indépendant à des organisations de plus de 5000 salariés.
« Le projet Open Source Zend Framework n’a débuté qu’il y a quatre ans et on peut noter que déjà plus de 70% des développeurs l’utilisent pour des applications critiques, » a déclaré Zeev Suraski, CTO chez Zend Technologies. Les résultats de l’étude démontrent que le Zend Framework est utilisé par 58% des sondés pour des applications professionnels critiques pour toute l’entreprise et par 16% pour des applications critiques au niveau d’un service.
En termes d’environnement de production, 85% des développeurs PHP interrogés ont cité en premier lieu Linux comme système d’exploitation utilisé, alors que 11% ont cité Windows et 2% Mac OS X. Lorsqu’on leur demande quel est leur système d’exploitation en développement, 42% citent Windows contre 38.5% qui choisissent Linux et 19.1% qui utilisent Mac OS X. Pour ces mêmes environnements de développement, approximativement 27% des sondés déclarent utiliser Zend Server et Zend Server Community Edition.
« Nous notons une adoption rapide et massive des technologies Zend Server que nous avons sorties l’année dernière, » ajoute Zeev. « Nous concentrons nos efforts sur l’intégration du framework, sur les outils de développement et sur un environnement d’exécution afin de fournir une solution complète à la communauté des développeurs. Nous pensons que cela amènera PHP, naturellement déjà très productif, vers un niveau encore supérieur. »
D’autres résultats de cette étude montrent que près de 70% des sondés déclarent utiliser Zend Studio ou Eclipse PDT (PHP Development Tools) en développement et 18% utilisent Vim. Près de 50% des personnes interrogées utilisent PHPUnit pour leurs tests unitaires.
Zend a noté que 46% des sondés ont déclaré vouloir obtenir la Certification Zend Framework, rejoignant ainsi les 5% de développeurs déjà certifiés. La certification pour les développeurs est considérée comme un avantage certain sur le marché de l’emploi, intérêt qui est également visible via la demande croissante pour les matériels de formation Zend incluant les webinars et les formations en ligne. Zend a répondu à cette demande en proposant un nouveau pack Zend Framework contenant la formation de base et la préparation à la certification qui permet aux novices et aux développeurs PHP expérimentés de devenir plus efficaces sur le Zend Framework et d’obtenir la certification.
Contact :
Christophe Chervy
Zend Technologies EMEA
christophe@zend.com
+33 1 48 55 02 02
Zend Technologies Inc., la PHP Company, est la société de référence pour les produits et services de développement, déploiement et gestion d’applications Web PHP critiques. PHP fait fonctionner 35% des sites Web mondiaux et est rapidement devenu le langage le plus répandu pour développer des applications Web dynamiques. Mondialement déployée dans plus de 27 000 entreprises, la gamme de produits Zend apporte une solution complète durant tout le cycle de vie d’une application PHP. Le siège de Zend est situé à Cupertino en Californie.
Pour plus d’informations, visitez www.zend.fr ou appelez le 01 48 55 02 00.
# # #
Zend, Zend Technologies, Zend Framework, Zend.com, Zend Server, and Zend Studio, and associated logos and icons, are trademarks of Zend Technologies, Inc. and may be registered in certain jurisdictions. All other trademarks are the property of their respective owners.
Proposé par Christophe Chervy
While sadly not being at Symfony Live 2010 with pals, I’m drowning my sorrow into tech tutorials writing.
Sometimes you want to design forms and contextualize them regarding the current user session. For example:
tag;So how can we achieve this without using an evilish sfContext::getInstance()->getUser() call in the configure() method of the form?
Symfony 1.2 1.3 and 1.4 introduced the generation of a project-wide BaseForm class we can use here to setup some convenient methods to allow user setters and getters:
<?php class BaseForm extends sfFormSymfony { static protected $user = null; static public function getUser() { return self::$user; } static public function getValidUser() { if (!self::$user instanceof sfBasicSecurityUser) { throw new RuntimeException('No valid user instance available'); } return self::$user; } static public function setUser(sfBasicSecurityUser $user) { self::$user = $user; } }
Okay, we now can set a user instance as a static property of all available forms within the project, nice. Wait, how the hell will we set the instance, and when?
Symfony dispatch a very useful context.load_factories event when all the factories - including the user one - are instanciated and available in the context. So we can listen to this event and set the user instance to the forms when it’s ready. We’ll do this in the ProjectConfiguration.class.php:
<?php class ProjectConfiguration extends sfProjectConfiguration { public function setup() { // ... $this->dispatcher->connect('context.load_factories', array($this, 'listenToLoadFactoriesEvent')); } public function listenToLoadFactoriesEvent(sfEvent $event) { BaseForm::setUser($event->getSubject()->getUser()); } }
So now we’ve set a static user instance in every form at project configuration time, we can use it in any form.
For example, imagine a form where only authenticated users having an admin credential can see, fill and submit an hypothetic is_published field:
class myForm extends BaseForm { public function configure() { // will throw an exception if no user is available $user = self::getValidUser(); $this->setWidgets(array( 'title' => new sfWidgetFormInputText(), 'body' => new sfWidgetFormTextarea(), )); $this->setValidators(array( 'title' => new sfValidatorString(array('min_length' => 5)), 'body' => new sfValidatorString(array('min_length' => 20)), )); if ($user->isAuthenticated() && $user->hasCredential('admin')) { $this->widgetSchema['is_published'] = new sfWidgetFormInputCheckbox(); $this->validatorSchema['is_published'] = new sfValidatorBoolean(array( 'required' => false, )); } // ... } }
Here a basic user won’t see and won’t be able to submit any value for the is_published field. Note that all those changes won’t ever affect the controllers or the model, and the forms will still be easily testable because the forms and the user instance are not tightly coupled.
As a side note, you can also use the form options to eventually pass a user instance and fallback on the static instance in case it’s not available:
class myForm extends BaseForm { public function configure() { // will throw an exception if no user is available $user = $this->getOption('user', self::getValidUser()); // ... } }
In a controller, you would use it this way:
<?php class fooActions extends sfActions { public function executeBar(sfWebRequest $request) { $this->form = new myForm(array('user' => $this->getUser())); // ... } }
A typical unit test suite of the form would be:
$t = new lime_test(2, new lime_output_color()); $user = new sfBasicSecurityUser(new sfEventDispatcher(), new sfSessionTestStorage(array( 'session_path' => sys_get_temp_dir(), ))); $form = new myForm(array('user' => $user)); $t->is(count($form->getWidgetSchema(), 2, '->configure() displays 2 fields when user is not authenticated')); $user->setAuthenticated(true); $user->addCredential('admin'); $t->is(count($form->getWidgetSchema(), 3, '->configure() displays 3 fields when user is authenticated and is an admin')); // ... I'll let you complete the suite by yourself
Now imagine we want to filter the choices offered by a one to many relationship field of a Doctrine form regarding user credentials:
class ArticleForm extends BaseArticleForm { public function configure() { // will throw an exception if no user is available $user = $this->getOption('user', self::getValidUser()); // ... // Category choices $categoryQuery = $this->getUserCategoryQuery($user); $this->widgetSchema['category_id'] = new sfWidgetFormDoctrineChoice(array( 'model' => 'Category', 'query' => $categoryQuery, )); $this->validatorSchema['community_id'] = new sfValidatorDoctrineChoice(array( 'model' => 'Category', 'query' => $categoryQuery, )); } /** * Please note that this method would naturally better fit in the model, in the * ArticleTable class; We put this here for conciseness */ protected function getUserCategoryQuery(sfBasicSecurityUser $user) { $query = Doctrine:getTable('Category')->createQuery('c'); // If user is not an admin, only allow choice of published categories if (!$user->hasCredential('admin')) { $query->where('c.is_published = 1'); } return $query; } }
There are many more cool things you can achieve by offering user session access to a form, while keeping all the stuff easy to test.
As usual, if you have a better way, feel free to tell us about it in the comments.
Ce billet intitulé User Dependent Forms with Symfony a été rédigé par Nicolas Perriault et publié sur le blog Prendre un Café sous licence Creative Commons BY-NC-SA.
Sortie dans sa deuxième version 1.0.1, PHP Firewall est un pare feu universel de sites internet écrit en PHP 5, n'ayant recours ni à une base de données ni à un fichier de type .htaccess afin de ne pas avoir d'impact sur la fluidité de votre site web.
Cette nouvelle version comprend de nouveaux contrôles de sécurité ( essentiellement liés à l'utilisation de proxys, et quelques optimisations ).
Les voici en détail:
* Protection contre les attaques de type XSS
* Protection contre les injections SQL de type UNION
* Protection contre une série large de robots connus et réputés comme potentiellement dangereux
* Protection contre les attaques de type requêtes à distance
* Petite protection contre les attaques DOS ( sachez qu'une réelle attaque dos de grande ampleur ne peut être stoppée via PHP )
* Protection contre les inclusions de fichiers
* Protection contre Santy et autres vers
* Protection du serveur d'hébergement
* Protection des requêtes via l'url du site
* Nettoyage des cookies ( élimination de codes malicieux )
* Nettoyage des variables Post ( élimination de codes malicieux )
* Nettoyage des variables Get ( élimination de codes malicieux )
* IPs range reserved denied
* IPs range spam denied
* Protection contre les accès via un serveur proxy Dédibox, Kimsufi, Digicube ou OVH
Site officiel www.fr.php-firewall.info
Support et compléments d'informations livrés sur mon blog [url]www.cyril-levert.info[/url]
Proposé par Cyril Levert
eh voila !!! Après de nombreuses attentes et de relances, j'ai recréé mon compte Twitter.... Donc vous pouvez maintenant me suivre sur #hellosct1. Avec bien sur plusieurs listes différentes
A bientot
L'évènement Symfony Live organisé par Sensio Labs en partenariat avec l'AFUP (Association Française des Utilisateurs de PHP) le 16 et 17 février 2010 à Paris.
De nombreuses photos (venant de Flick'r) sont disponibles
Et les conférences se trouvent ici ... cliquer ici
Au Café Sport, juste en face de la gare (comme pour les mysql ug meeting et aperophp qui se sont fait à Leuven)
Macq Électronique paye une tournée.
Zend Server 5.0 réduit les temps de résolution de problèmes jusqu’à 50%, ajoute les Job Queues pour une expérience utilisateur améliorée et inclut le support pour PHP 5.3
Cupertino, Californie (PRWEB) le 24 février 2010 -- Zend Technologies, the PHP Company, a annoncé aujourd’hui la sortie de la version finale de Zend Server 5.0, une version majeure du serveur d’applications Web en PHP de la société. La toute nouvelle technologie Code Tracing de Zend Server 5.0 permet aux développeurs PHP et aux administrateurs de réduire drastiquement les temps de résolution des problèmes applicatifs de 50%. Pour la première fois, les utilisateurs ont la visibilité sur le comportement de leur code en environnement de production, avec la possibilité de déterminer les causes des problèmes rapidement et d’éliminer ainsi la tâche quasi-impossible et très consommatrice en temps qui consiste à recréer les problèmes dans le but de les résoudre.
« Zend Server 5.0 est un grand pas en avant pour les entreprises qui utilisent PHP pour des applications business critiques, » a déclaré Andi Gutmans, CEO et co-fondateur de Zend. « Grâce à cette nouvelle version, nous fournissons dorénavant la supervision applicative et la possibilité d’établir des diagnostics comme une partie intégrante du serveur d’applications de base sans coût additionnel. La nouvelle technologie de Code Tracing révolutionne la façon dont les entreprises peuvent réduire le temps passé à résoudre les problèmes. Ceci et d’autres améliorations vont aider les entreprises à fournir des applications très performantes et fiables et maximiser ainsi la satisfaction des utilisateurs finaux tout en réduisant les temps et les coûts liés au développement et à la gestion. »
ZEND SERVER 5.0 – UN SERVEUR WEB D’APPLICATION PHP PROFESSIONNEL
Zend Server 5.0 optimise les performances applicatives grâce à de multiples technologies de cache et d’accélération PHP, vous aidant ainsi à détecter et diagnostiquer les problèmes via le monitoring applicatif et en vous fournissant un environnement PHP complet et testé pour Windows et Linux. Le produit est complété par un support technique expert, des mises à jour en ligne et des correctifs de sécurité. Zend Server est totalement intégré avec l’IDE PHP Zend Studio et le Zend Framework, le plus populaire des frameworks PHP Open Source, créant ainsi la solution la plus rapide et simple pour développer et déployer des applications Web fiables et sécurisées. Cette solution est également disponible en édition gratuite et communautaire distribuée sous le nom de Zend Server Community Edition.
TECHNOLOGIE INNOVANTE CODE TRACING
La technologie Code Tracing présente dans Zend Server 5.0 élimine le besoin de recréer les problèmes en capturant automatiquement en temps réel l’historique complet d’exécution d’une application en environnement de production. Dorénavant les développeurs peuvent rapidement établir la cause d’un problème plutôt que de suivre un process faillible et long pour le reproduire. Le Code Tracing peut être activé manuellement ou automatiquement lorsque les performances se dégradent ou lorsque des erreurs sont détectées via le monitoring applicatif de Zend Server.
Une nouvelle vue Zend Server, basée sur Adobe Flex, vous permet de consulter les données enregistrées, une arborescence des appels de fonctions, les arguments, les erreurs et les temps d’exécution, ainsi que des informations statistiques qui simplifient l’identification des goulets d’étranglement en production.
Avec Zend Server 5.0, les développeurs PHP peuvent réduire le temps de résolution des problèmes jusqu’à 50% et assurer de cette façon une plus grande fiabilité des applications en leur permettant ainsi d’utiliser ce temps à développer.
« J’ai gagné jusqu’à 4 heures par jour de temps de débogage en utilisant le Code Tracing de Zend Server 5.0, » a constaté Drew Ewing, un développeur PHP chez CyberMark International. « Pour 99.9% des processus de débogage dont je m’occupe, Zend Server rassemble automatiquement toutes les informations nécessaires que je rassemblais manuellement auparavant. Les heures interminables que j’ai passées à déboguer des actions transparentes comme les mises à jour jQuery, sont maintenant libérées et je peux m’atteler à des problèmes de développement plus cruciaux. CyberMark est une entreprise de marketing Internet spécialisée dans les programmes SEO et PPC, le marketing social media et le développement de sites Web. »
JOB QUEUE INTEGRE
La fonction Job Queue de Zend Server 5.0 améliore les performances applicatives et la réactivité en permettant aux jobs (les scripts PHP) d’être exécutés de façon asynchrone ou à intervalles récurrents, déchargeant les tâches initiées par une requête du client Web vers un process secondaire. Les utilisateurs finaux obtiennent leurs réponses rapidement dans leur navigateurs Web tandis que les processus longs tels que les validations cartes bleue, les expéditions et les autres activités consommatrices sont gérées en arrière plan. De plus, les tâches de maintenance telles que les nettoyages de bases de données et les flux RSS peuvent être exécutés à des moments précis ou à intervalles réguliers. La fonctionnalité Job Queue est totalement intégrée au système de monitoring de Zend Server et à la console Web, permettant ainsi aux développeurs et autres membres de l’équipe IT de superviser l’exécution générale de leurs applications en un seul endroit, y compris la gestion des jobs.
"Zend Server 5.0 joue un rôle stratégique dans notre travail car il nous aide à assurer la qualité des achats en ligne que font nos clients, même lors des pics de trafic,” a déclaré Josh Butts, directeur du développement Web chez Offers.com. “Zend Server supervise notre application et active le code tracing afin de nous prévenir lorsque quelque chose se passe mal et nous en indique la raison. Nous pouvons alors répondre aux problèmes dès qu’ils apparaissent."
SUPPORT DE PHP 5.3
Zend Server inclut le support pour PHP 5.2 et PHP 5.3, permettant ainsi aux développeurs de bénéficier des nouvelles fonctionnalités du langage telles que les namespaces et les closures.
SYSTEMES D’EXPLOITATION
Zend Server 5.0 supporte Linux et Windows ; une version IBM i est actuellement en bêta.
WEBINAR ZEND, INFORMATION PRODUIT
Webinar Zend Server 5.0 – le 25 février 2010 – 17:00 (heure française)
Ce webinar technique gratuit vous montrera comment utiliser Zend Server 5.0 pour résoudre les problèmes de production grâce à la nouvelle fonctionnalités de code tracing , améliorer les performances grâces aux job queues et vous détaillera également les autres fonctionnalités ; Inscrivez-vous pour y assister.
Pour une liste complète des nouvelles fonctionnalités de Zend Server 5.0, visitez notre site http://www.zend.com/fr/products/server.
Zend Technologies Inc., la PHP Company, est la société de référence pour les produits et services de développement, déploiement et gestion d’applications Web PHP critiques. PHP fait fonctionner 35% des sites Web mondiaux et est rapidement devenu le langage le plus répandu pour développer des applications Web dynamiques. Mondialement déployée dans plus de 27 000 entreprises, la gamme de produits Zend apporte une solution complète durant tout le cycle de vie d’une application PHP. Le siège de Zend est situé à Cupertino en Californie.
Pour plus d’informations, visitez www.zend.fr ou appelez le 01 48 55 02 00.
Zend, Zend Technologies, Zend Framework, Zend.com, Zend Server, and associated logos and icons, are trademarks of Zend Technologies, Inc. and may be registered in certain jurisdictions. All other trademarks are the property of their respective owners.
Proposé par Christophe Chervy
Article original publié sur Glagla Dot Org. Tous droits réservés.
Une rencontre à ne pas manquer pour tous les passionnés de Zend Framework
Au programme la rubrique annuelle "Quoi de neuf dans le dépôt" : - ZendFramework (ZF2) - L'harmonisation des frameworks ... par Julien Pauli
L'industrialisation de PHP (la place d'un framework comme ZF) par David Hingue de (Zend PHP Company) et JeanMarc Fontaine ALterWay Group
et une après midi consacrée au WebService
- SOAP
- Sécurité
- RestFul
Toutes les informations sont sur http://www.be-zend.org
Proposé par Harold Trannois