PHP

De ClissXXI.

(Différences entre les versions)
(Simplification de l'accès à la base)
m (Dernière version libre de la documentation PHP)
 
(21 versions intermédiaires masquées)
Ligne 1 : Ligne 1 :
-
Dernières versions de la documentation officielle de PHP, avant qu'elle ne devienne non-libre:
+
== Débogage PHP ==
-
* [http://packages.debian.org/stable/doc/php3-doc Documentation for PHP3]
+
-
* [http://packages.debian.org/oldstable/doc/phpdoc Documentation for PHP4 and PHP3] (snapshot 2002)
+
-
== Dernière version libre de la documentation PHP ==
+
Voir la section dédiée: [[Débogage PHP]]
-
Précisons que l'Open Publication License (OPL) est une licence libre uniquement si aucune option n'est utilisée (notamment, l'interdiction des travaux dérivés sans consentement des détenteurs des droits).
+
== Accélérateurs PHP ==
-
La dernière version date de 2003.
+
* [http://trac.lighttpd.net/xcache/ XCache]: cache, couverture (optionnel), orienté stabilité, interface web de stats ([http://packages.debian.org/sid/php5-xcache paquet Debian])
 +
* [http://pecl.php.net/package/APC APC]: cache uniquement (optimiseur obsolète?), plus proche de PHP (participation de Rasmus) ([http://packages.debian.org/sid/php-apc paquet Debian])
 +
* [http://eaccelerator.net/ eAccelerator]: successeur de Turck mmCache, fournit aussi encodeur, optimiseur, système de cache pour développeur?...
-
Avec <code>cvs2cl --utc</code>, j'obtiens le ChangeLog suivant:
+
Comparatifs:
 +
* http://www.ipersec.com/index.php?q=fr/node/2/print (eAccelerator)
 +
* http://www.j2eegeek.com/blog/2007/02/27/php-acceleration-pick-your-poison/ (APC)
 +
 
 +
== Documentation PHP - évolution de la licence ==
 +
 
 +
Il y a eu différents changements de licence:
 +
* date < 2003-05-02: GNU GPL v2+
 +
* 2003-05-02 < date < 2008-07-20: OPL avec options non-libres de non-modification et de non-distribution sous forme papier
 +
* 2008-07-20 < date: Creative Commons Attribution 3.0 (cc-by)
 +
 
 +
La dernière version de la documentation est donc de nouveau sous licence libre.
 +
 
 +
Pour référence, avec <code>cvs2cl --utc</code>, j'obtiens le ChangeLog suivant:
  2003-05-02 14:12  goba
  2003-05-02 14:12  goba
   
   
         * en/bookinfo.xml: And now: upgrading to the new license
         * en/bookinfo.xml: And now: upgrading to the new license
-
La dernière version libre est donc:
+
La dernière version sous GNU GPL est donc:
  cvs -d :pserver:cvsread@cvs.php.net:/repository login # pass: phpfi
  cvs -d :pserver:cvsread@cvs.php.net:/repository login # pass: phpfi
-
  cvs -d :pserver:cvsread@cvs.php.net:/repository checkout -D "2003-05-02 14:12:58Z" phpdocs
+
  cvs -d :pserver:cvsread@cvs.php.net:/repository checkout -D "2003-05-02 14:12:58Z" phpdoc
-
----
+
== PEAR ==
-
[[Débogage PHP]]
+
Problèmes de license:
 +
* [http://thread.gmane.org/gmane.comp.php.pear.devel/40682/focus=40682 Début]
 +
* [http://news.gmane.org/find-root.php?group=gmane.comp.php.pear.devel&article=40787 Conclusion?]
 +
* [http://pear.php.net/bugs/bug.php?id=9630 Bug] à inverser au niveau de la documentation
 +
* [http://pear.php.net/manual/en/faq.devs.php Page de doc] à corriger
 +
* Sylvain [http://greg.chiaraquartet.net/archives/2006/12/30.html cité] comme ayant démarré un des threads les plus pénibles de l'année!
 +
* [http://savannah.gnu.org/maintenance/PhpIssues Synthèse] sur Savannah
 +
* [http://savannah.gnu.org/task/?8427#comment6 Des progrès]
-
----
+
=== Installation de la version officielle avec les chemins d'accès Debian ===
 +
 
 +
Installation de Pear:
 +
aptitude install php5-cli
 +
wget -O- http://pear.php.net/go-pear | php -q
 +
 
 +
PEAR, configuration implicite:
 +
  1. Installation prefix ($prefix) : /root
 +
  2. Temporary files directory    : $prefix/temp
 +
  4. PHP code directory ($php_dir) : $prefix/PEAR
 +
 
 +
Pour Debian, modifier:
 +
  1. Installation prefix ($prefix) : /usr
 +
  2. Temporary files directory    : /tmp/pear/temp
 +
  4. PHP code directory ($php_dir) : $prefix/share/php
 +
 
 +
Résultat final:
 +
PEAR executables directory    bin_dir          /usr/bin
 +
PEAR documentation directory  doc_dir          /usr/share/php/docs
 +
PHP extension directory        ext_dir          /usr/lib/php5/20060613+lfs
 +
PEAR directory                php_dir          /usr/share/php
 +
PEAR Installer cache directory cache_dir        /tmp/pear/cache
 +
PEAR data directory            data_dir        /usr/share/php/data
 +
PEAR Installer download        download_dir    /tmp/pear/cache
 +
PEAR Installer temp directory  temp_dir        /tmp/pear/temp
 +
PEAR test directory            test_dir        /usr/share/php/tests
== Tests unitaires avec PHP ==
== Tests unitaires avec PHP ==
Ligne 28 : Ligne 73 :
* [http://www.simpletest.org/ SimpleTest]
* [http://www.simpletest.org/ SimpleTest]
* [http://phpunit.de/ PHPUnit]
* [http://phpunit.de/ PHPUnit]
-
* [http://weierophinney.net/matthew/archives/65-phpt-Tutorial.html phpt] (tutorial, apparement l'outil est intégré à pear?) - apparemment plus simple/rapide
+
* phpt ([http://weierophinney.net/matthew/archives/65-phpt-Tutorial.html tutorial], [http://qa.php.net/write-test.php guide qa.php.net]), apparemment plus simple/rapide. Lancer avec <code>pear run-tests *.phpt</code>.
Voir également WWW::Mechanize (''Mech'') pour tester le programme de manière externe par son interface web (en Perl). Pour une solution en PHP, voir éventuellement la bibliothèque curl, qui ne sait cependant pas analyser le HTML reçu.
Voir également WWW::Mechanize (''Mech'') pour tester le programme de manière externe par son interface web (en Perl). Pour une solution en PHP, voir éventuellement la bibliothèque curl, qui ne sait cependant pas analyser le HTML reçu.
 +
 +
== Génération de formulaires ==
 +
 +
* [http://pear.php.net/package/HTML_QuickForm HTML_QuickForm]: one class that contains all form elements and associated info (validation), which can analyse input and render the form in HTML [http://paul-m-jones.com/blog/?p=117 Critic] [http://pear.php.net/package/HTML_QuickForm2 HTML_QuickForm2] [http://quickform.mamasam.com/wiki/ QuickForm2 development Wiki]
 +
* [http://trac.php-tools.net/patForms patForms]
 +
* [http://solarphp.com/ Solar_Form] (à coupler avec un moteur de template pour l'affichage?)
== Abstraction de la base de données ==
== Abstraction de la base de données ==
Ligne 40 : Ligne 91 :
== Simplification de l'accès à la base ==
== Simplification de l'accès à la base ==
-
Dépend d'une des abstraction ci-dessus:
+
Dépend d'une des abstraction ci-dessus. Mots-clefs à chercher: ORM ([http://en.wikipedia.org/wiki/Object-relational_mapping Object Relational Mapping])
* [http://pear.php.net/package/DB_Table DB_Table]: non-object, intégration avec QuickForm et validation des update/insert, description via une classe et des tableaux ($cols, $idx, $sql...); utilise PEAR::DB (licence PHP); LGPL
* [http://pear.php.net/package/DB_Table DB_Table]: non-object, intégration avec QuickForm et validation des update/insert, description via une classe et des tableaux ($cols, $idx, $sql...); utilise PEAR::DB (licence PHP); LGPL
-
* [http://propel.phpdb.org/ Propel]: description en XML, relations inter-classes, relations N-M possibles mais pas encore propres; possibilité d'utiliser directement SQL si besoin; utilise Creole
+
* [http://propel.phpdb.org/ Propel]: description en XML (lourd?), relations inter-classes, relations N-M possibles mais pas encore propres; possibilité d'utiliser directement SQL si besoin; validation décrite en XML (lourd); utilise Creole
* [http://www.appelsiini.net/~tuupola/php/DB_DataContainer/ DB_DataContainer]: mapping objet simpliste, pas de relation inter-tables; description via la classe PHP; nécessite un champ 'id'.
* [http://www.appelsiini.net/~tuupola/php/DB_DataContainer/ DB_DataContainer]: mapping objet simpliste, pas de relation inter-tables; description via la classe PHP; nécessite un champ 'id'.
* [http://pear.php.net/package/DB_DataObject DB_DataObject]: fichier de description .ini; liens entre classes; à essayer; licence PHP
* [http://pear.php.net/package/DB_DataObject DB_DataObject]: fichier de description .ini; liens entre classes; à essayer; licence PHP
 +
* [http://www.ezpdo.net EZPDO]: description inclue dans des tags @orm style javadoc; validation via des 'Events'/hooks, aucune validation par défaut ''a priori''; mBSD
 +
* [http://cakephp.org/ CakePHP]: framework style Ruby on Rails, inclut un ORM; la [http://manual.cakephp.org/chapter/validation validation], à base de regexp, fait partie du framework et en est vraisemblablement indissociable.
 +
* [http://www.phpdoctrine.com/ Doctrine]: ça a l'air très propre (bonne gestion du model relationel?); description par une classe; discussions en cours pour intégration dans PEAR
 +
* [http://www.meta-language.net/metastorage.html MetaL Metastrorage]: beaucoup de XML
 +
* [http://phplens.com/lens/adodb/docs-active-record.htm ADOdb Active Record]: un ORM qui fait partie d'ADOdb, à voir; réimplémentation de Zend Active Records; c'est apparement le seul outil à utiliser la base de données comme description du modèle - ce qui me semble en fait très pertinent.
 +
* d'autres listés sur [http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software#PHP Wikipedia].

Version actuelle en date du 30 janvier 2009 à 13:52

Sommaire

Débogage PHP

Voir la section dédiée: Débogage PHP

Accélérateurs PHP

  • XCache: cache, couverture (optionnel), orienté stabilité, interface web de stats (paquet Debian)
  • APC: cache uniquement (optimiseur obsolète?), plus proche de PHP (participation de Rasmus) (paquet Debian)
  • eAccelerator: successeur de Turck mmCache, fournit aussi encodeur, optimiseur, système de cache pour développeur?...

Comparatifs:

Documentation PHP - évolution de la licence

Il y a eu différents changements de licence:

  • date < 2003-05-02: GNU GPL v2+
  • 2003-05-02 < date < 2008-07-20: OPL avec options non-libres de non-modification et de non-distribution sous forme papier
  • 2008-07-20 < date: Creative Commons Attribution 3.0 (cc-by)

La dernière version de la documentation est donc de nouveau sous licence libre.

Pour référence, avec cvs2cl --utc, j'obtiens le ChangeLog suivant:

2003-05-02 14:12  goba

        * en/bookinfo.xml: And now: upgrading to the new license

La dernière version sous GNU GPL est donc:

cvs -d :pserver:cvsread@cvs.php.net:/repository login # pass: phpfi
cvs -d :pserver:cvsread@cvs.php.net:/repository checkout -D "2003-05-02 14:12:58Z" phpdoc

PEAR

Problèmes de license:

Installation de la version officielle avec les chemins d'accès Debian

Installation de Pear:

aptitude install php5-cli
wget -O- http://pear.php.net/go-pear | php -q

PEAR, configuration implicite:

 1. Installation prefix ($prefix) : /root
 2. Temporary files directory     : $prefix/temp
 4. PHP code directory ($php_dir) : $prefix/PEAR

Pour Debian, modifier:

 1. Installation prefix ($prefix) : /usr
 2. Temporary files directory     : /tmp/pear/temp
 4. PHP code directory ($php_dir) : $prefix/share/php

Résultat final:

PEAR executables directory     bin_dir          /usr/bin
PEAR documentation directory   doc_dir          /usr/share/php/docs
PHP extension directory        ext_dir          /usr/lib/php5/20060613+lfs
PEAR directory                 php_dir          /usr/share/php
PEAR Installer cache directory cache_dir        /tmp/pear/cache
PEAR data directory            data_dir         /usr/share/php/data
PEAR Installer download        download_dir     /tmp/pear/cache
PEAR Installer temp directory  temp_dir         /tmp/pear/temp
PEAR test directory            test_dir         /usr/share/php/tests

Tests unitaires avec PHP

Voir également WWW::Mechanize (Mech) pour tester le programme de manière externe par son interface web (en Perl). Pour une solution en PHP, voir éventuellement la bibliothèque curl, qui ne sait cependant pas analyser le HTML reçu.

Génération de formulaires

Abstraction de la base de données

  • MDB2: successeur de PEAR::DB, licence mBSD
  • Creole: PHP5 seulement; licence LGPL
  • AdoDB: utilisé par TikiWiki, Xaraya, eGroupWare; license mBSD

Simplification de l'accès à la base

Dépend d'une des abstraction ci-dessus. Mots-clefs à chercher: ORM (Object Relational Mapping)

  • DB_Table: non-object, intégration avec QuickForm et validation des update/insert, description via une classe et des tableaux ($cols, $idx, $sql...); utilise PEAR::DB (licence PHP); LGPL
  • Propel: description en XML (lourd?), relations inter-classes, relations N-M possibles mais pas encore propres; possibilité d'utiliser directement SQL si besoin; validation décrite en XML (lourd); utilise Creole
  • DB_DataContainer: mapping objet simpliste, pas de relation inter-tables; description via la classe PHP; nécessite un champ 'id'.
  • DB_DataObject: fichier de description .ini; liens entre classes; à essayer; licence PHP
  • EZPDO: description inclue dans des tags @orm style javadoc; validation via des 'Events'/hooks, aucune validation par défaut a priori; mBSD
  • CakePHP: framework style Ruby on Rails, inclut un ORM; la validation, à base de regexp, fait partie du framework et en est vraisemblablement indissociable.
  • Doctrine: ça a l'air très propre (bonne gestion du model relationel?); description par une classe; discussions en cours pour intégration dans PEAR
  • MetaL Metastrorage: beaucoup de XML
  • ADOdb Active Record: un ORM qui fait partie d'ADOdb, à voir; réimplémentation de Zend Active Records; c'est apparement le seul outil à utiliser la base de données comme description du modèle - ce qui me semble en fait très pertinent.
  • d'autres listés sur Wikipedia.
Outils personnels