Outils pour utilisateurs

Outils du site


informatique:php

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
informatique:php [26/12/2022 07:54] – [Goutte] cyrilleinformatique:php [14/07/2026 08:05] (Version actuelle) – [intelephense] cyrille
Ligne 6: Ligne 6:
   * [[http://julien-pauli.developpez.com/|Les cours de Julien Pauli]] sur developpez.com sont très pertinents (sécurité, ZendFramework, ...).   * [[http://julien-pauli.developpez.com/|Les cours de Julien Pauli]] sur developpez.com sont très pertinents (sécurité, ZendFramework, ...).
   * [[http://g-rossolini.developpez.com/tutoriels/php/5.3/|Les nouveautés de PHP 5.3]]   * [[http://g-rossolini.developpez.com/tutoriels/php/5.3/|Les nouveautés de PHP 5.3]]
 +
 +
 +PHP8 Attributes
 +  * https://stitcher.io/blog/attributes-in-php-8
 +  * https://github.com/TWithers/laravel-php-attributes
 +
 +
  
 [[/informatique/php/Build Win32|Compiler PHP et PECL pour Windows]] [[/informatique/php/Build Win32|Compiler PHP et PECL pour Windows]]
  
-Installer Php/Apache/Mod_SSL : voir [[:informatique:apache]]+ 
 +Installer différentes versions de Php grâce au [[https://launchpad.net/~ondrej/+archive/ubuntu/php|dépôt de Ondřej Surý]] (un développeur Debian) : 
 +<code> 
 +sudo apt install software-properties-common 
 +sudo add-apt-repository ppa:ondrej/php 
 +sudo apt update 
 +</code> 
  
 ===== Application Frameworks ===== ===== Application Frameworks =====
Ligne 23: Ligne 37:
 ==== Dans les plus connus ==== ==== Dans les plus connus ====
  
 +  * [[informatique:php:laravel_1|Laravel]]
 +  * [[/informatique/php/symfony|Symfony]]
   * [[http://framework.zend.com|Zend Framework]] : [[/informatique/php/Zend Framework]], [[wpfr>Zend Framework]], [[http://zend-framework.developpez.com/|ZF sur Developpez.com]]   * [[http://framework.zend.com|Zend Framework]] : [[/informatique/php/Zend Framework]], [[wpfr>Zend Framework]], [[http://zend-framework.developpez.com/|ZF sur Developpez.com]]
-  * [[http://www.symfony-project.org/|Symfony]] : [[/informatique/php/Symfony|Symfony]], [[wpfr>Symfony]] 
   * Prado   * Prado
-  * [[/informatique/php/laravel|Laravel]] The PHP Framework For Web Artisans.+  * [[informatique:php:laravel_1|Laravel]] The PHP Framework For Web Artisans.
   * [[http://mouf-php.com|Mouf]]   * [[http://mouf-php.com|Mouf]]
   * [[http://codeigniter.com/user_guide/toc.html|CodeIgniter]]   * [[http://codeigniter.com/user_guide/toc.html|CodeIgniter]]
Ligne 76: Ligne 91:
 Les generators "[[https://www.php.net/manual/en/language.generators.syntax.php|generator function]]" permettent d'**économiser de la mémoire** lors d'une itération. Au lieu d'accumuler dans un ''tableau'' le résultat d'une fonction, avec ''yield'' les valeurs sont retrournées au fil de l'itération. Les generators "[[https://www.php.net/manual/en/language.generators.syntax.php|generator function]]" permettent d'**économiser de la mémoire** lors d'une itération. Au lieu d'accumuler dans un ''tableau'' le résultat d'une fonction, avec ''yield'' les valeurs sont retrournées au fil de l'itération.
   * [[https://scotch.io/tutorials/understanding-php-generators|Understanding PHP Generators]]   * [[https://scotch.io/tutorials/understanding-php-generators|Understanding PHP Generators]]
 +  * [[https://doeken.org/blog/coroutines-in-php|Exploring Coroutines in PHP]]
 +===== Syntaxe =====
 +
 +Les closures et les classes anonymes
 +  * [[https://www.php.net/manual/en/language.oop5.anonymous.php|Php OOP Anonymous classes]]
 +  * [[https://www.pierre-giraud.com/php-mysql-apprendre-coder-cours/oriente-objet-closure-classe-anonyme/|Les closures et les classes anonymes en PHP objet]] par Pierre Giraud
 +
 +==== Les Enums (avec valeurs) ====
 +
 +<code php>
 +enum DocumentFragmentType: string
 +{
 +  case Sujet = 'sujet';
 +  case Situation = 'situation';
 +  public function priority()
 +  {
 +    /* pas besoin 😉
 +    return match ($this) {
 +      DocumentFragmentType::Sujet => DocumentFragmentTypePriority::Sujet,
 +      DocumentFragmentType::Situation => DocumentFragmentTypePriority::Situation,
 +    };
 +    */
 +    return DocumentFragmentTypePriority::from($this->value);
 +  }
 +};
 +enum DocumentFragmentTypePriority: int
 +{
 +  case Sujet = 1;
 +  case Situation = 3;
 +};
 +
 +</code>
 +
 ===== Outillage ===== ===== Outillage =====
  
Ligne 83: Ligne 131:
  
 Eclipse plugin: [[http://phpsrc.org/|PHP Tool Integration (PTI)]] Eclipse plugin: [[http://phpsrc.org/|PHP Tool Integration (PTI)]]
 +
 +[[/informatique/php|AOP]] Aspect Oriented Programming avec Php
 +
 +==== Phpstan ====
 +
 +https://phpstan.org/user-guide/
 +
 +<code>
 +/* @phpstan-ignore-next-line */
 +</code>
 +
 +==== intelephense ====
 +
 +https://intelephense.com/docs
 +
 +<code php>
 +/** @disregard [OPTIONAL CODE] [OPTIONAL DESCRIPTION] */
 +/** @disregard P1013 method exists on runtime type */
 +</code>
 +
 ==== phpUnderControl ==== ==== phpUnderControl ====
 +<WRAP center round important 60%>
 +phpUnderControl c'est terminé.
 +</WRAP>
 +
 +
 +  * [[http://phpundercontrol.org/|phpUnderControl]] - Continuous Integration for PHP.
 +  * https://github.com/phpundercontrol/phpUnderControl-UNMAINTAINED
  
-[[http://phpundercontrol.org/|phpUnderControl]] - Continuous Integration for PHP. 
   * Testing and software metrics, PHPUnit output: Code Coverage, Project Mess Detection and Software Metrics.   * Testing and software metrics, PHPUnit output: Code Coverage, Project Mess Detection and Software Metrics.
   * Documentation: PhpDocumentor, to generate an up to date documentation of the software on every build cycle. Therefore the developers will always get the latest API documentation of their project. Additionally phpUnderControl extracts the documentation violations found by the PhpDocumentor and visualizes these as an additional quality report in the user interface and the project time line of documentation violations.   * Documentation: PhpDocumentor, to generate an up to date documentation of the software on every build cycle. Therefore the developers will always get the latest API documentation of their project. Additionally phpUnderControl extracts the documentation violations found by the PhpDocumentor and visualizes these as an additional quality report in the user interface and the project time line of documentation violations.
Ligne 114: Ligne 188:
  
 ==== FirePHP ==== ==== FirePHP ====
 +<WRAP center round important 60%>
 +Firebug c'est fini 😩
 +</WRAP>
  
 http://www.firephp.org http://www.firephp.org
Ligne 121: Ligne 198:
  
 ==== SimpleTest ==== ==== SimpleTest ====
 +<WRAP center round important 60%>
 +SimpleTest c'est fini.
 +</WRAP>
  
-http://www.simpletest.org+<del>http://www.simpletest.org</del>
  
 It is a PHP unit test and web test framework. Users of JUnit will be familiar with most of the interface. The JWebUnit style functionality is more complete now. It has support for SSL, forms, frames, proxies and basic authentication. The idea is that common but fiddly PHP tasks, such as logging into a site, can be tested easily.  It is a PHP unit test and web test framework. Users of JUnit will be familiar with most of the interface. The JWebUnit style functionality is more complete now. It has support for SSL, forms, frames, proxies and basic authentication. The idea is that common but fiddly PHP tasks, such as logging into a site, can be tested easily. 
Ligne 165: Ligne 245:
 ==== PHP_CodeSniffer ==== ==== PHP_CodeSniffer ====
  
-http://pear.php.net/package/PHP_CodeSniffer+  * https://github.com/PHPCSStandards/PHP_CodeSniffer/ 
 +  * <del>http://pear.php.net/package/PHP_CodeSniffer</del>
  
-PHP_CodeSniffer is a PHP5 script that tokenises and "sniffs" PHP, JavaScript and CSS files to detect violations of a defined coding standard. It is an essential development tool that ensures your code remains clean and consistent. It can also help prevent some common semantic errors made by developers.+PHP_CodeSniffer tokenizes PHP files and detects violations of a defined set of coding standards.  
 + 
 +PHP_CodeSniffer is a set of two PHP scripts: 
 + 
 +  * the main ''phpcs'' script that tokenizes PHP files to detect violations of a defined coding standard 
 +  * and ''phpcbf'' script to automatically correct detected coding standard violations.
  
 ===== Librairies ===== ===== Librairies =====
Ligne 193: Ligne 279:
  
 [[http://carbon.nesbot.com/|Carbon]] a simple PHP API extension for DateTime. [[http://carbon.nesbot.com/|Carbon]] a simple PHP API extension for DateTime.
 +
 +==== Console ====
 +
 +  * https://github.com/yannoff/console
 +    * A lightweight, simple alternative to symfony/console, designed for easy PHP applications development.
 +    * Aucune dépendence
  
 ==== Cron ==== ==== Cron ====
Ligne 288: Ligne 380:
  
 ==== Html & DOM scraper ==== ==== Html & DOM scraper ====
 +
 +=== Simple HTML DOM ===
 +
 +https://packagist.org/packages/voku/simple_html_dom
 +
 +=== php-html-parser ===
 +
 +https://packagist.org/packages/paquettg/php-html-parser
 +
 +=== Goutte ===
 +
 +Goutte is web crawling library for PHP. Goutte fourni un client programmable pour lire et interagir sur des pages html/xml.
 +
 +http://github.com/fabpot/Goutte
 +
 +<code php>
 +// Require the Goutte phar file to use Goutte in a script:
 +require_once '/path/to/goutte.phar';
 +// Create a Goutte Client instance:
 +$client = new Client();
 +// Make requests
 +$crawler = $client->request('GET', 'http://www.symfony-project.org/');
 +// Click on links:
 +$link = $crawler->selectLink('Plugins')->link();
 +$crawler = $client->click($link);
 +// Submit forms:
 +$form = $crawler->selectButton('sign in')->form();
 +$crawler = $client->submit($form, array('signin[username]' => 'fabien', 'signin[password]' => 'xxxxxx'));
 +//Extract data:
 +$nodes = $crawler->filter('.error_list');
 +if ($nodes->count())
 +{
 +  die(sprintf("Authentification error: %s\n", $nodes->text()));
 +}
 +printf("Nb tasks: %d\n", $crawler->filter('#nb_tasks')->text());
 +</code>
 +
 +
  
  
informatique/php.1672037689.txt.gz · Dernière modification : de cyrille

Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki