Composer

Présentation

composer permet de télécharger des paquets et gère les dépendances => on définit les librairies dont on a besoin.
composer se charge de télécharger les paquets et de les mettre à jour.

Installation

(voir annexe pour plus d’information)

autres commandes :

exercice 1 : traduire du markdown en html

éditeur markdown : http://www.markdownpad.com

<?php 
$mon_texte=  "essai  du **markdown**"; 
$mon_texte_html = tranforme_mon_texte_en_html($mon_texte); 
echo $mon_texte."<br><hr>"; 
echo $mon_texte_html; 
?> 
php -S 127.0.0.1:8000 -ddisplay_errors=1 -dzend_extension=xdebug.so -dxdebug.remote_enable=1 -dxdebug.remote_autostart=1 -dxdebug.remote_port=3004

Méthode plus complète

Dans le terminal php composer.phar init

Package name (<vendor>/<name>) [amillet/td9_composer]: s3b/essaicomposer   => on peut changer l'espace de nom
Description []: 
Author []: alain Millet <amillet.iut90@gmail.com>  => obligatoire 
Package Type []: 
Minimum Stability []: 
License []: 
Define your dependencies. 
Would you like to define your dependencies (require) interactively [yes]? yes 
Search for a package []: michelf/php-markdown 
Enter the version constraint to require (or leave blank to use the latest version): 
Using version ^1.5 for michelf/php-markdown 
Search for a package: 
Would you like to define your dev dependencies (require-dev) interactively [yes]?no    *

Un fichier composer.json est généré :

{ 
    "name": "amillet/td5_composer", 
    "require": { 
        "michelf/php-markdown": "^1.5"     
    }, 
    "authors": [ 
        { 
            "name": "alain Millet", 
            "email": "amillet.iut90@gmail.com" 
        } 
    ] 
} 

Retour au code

<?php
use \Michelf\Markdown;
$texte="essai  du **markdown**";
$my_html = Markdown::defaultTransform($texte);
echo $my_html;
?>

Attention ceci ne fonctionne pas car il manque l’instruction qui inclue le fichier autoload.php (charge dynamiquement les librairies)

<?php
require "vendor/autoload.php";
…

exercice 2 : utiliser un système de « captcha » pour éviter les « robots »

Sur le Navigateur , rechercher « captcha »
https://packagist.org/search/?q=captcha

Celui de gregvar est le plus téléchargé (au moment où je rédige), on peut lire : php composer.phar require gregwar/captcha, attention « Requires » php: >=5.3.0 et ext-gd: *

Éditer le fichier json de composer et y rajouter "gregwar/captcha": "dev-master"

<?php
session_start();

//include ???
//use ???

if(isset($_POST['maPhrase']))
{
    if($_POST['maPhrase']==$_SESSION['phrase']) {
        echo "*** texte compatible avec image captcha <br>";
    }
    else {
        echo "***  texte non compatible avec image captcha <br>";
    }
}

// ??? construire un captcha

$_SESSION['phrase'] =  "???";

echo "phrase => ".$_SESSION['phrase'];
?>

<img src="<?php echo "???" ?>" />
<form action="leNomDeVotreFichier.php" method="post">
    saisir captcha : <input type="text" name="maPhrase">
</form>

exercice 3 : intégrer ses propres applications dans composer

<?php 
namespace MonAppli\helper; 
class Form {     
    static function input($name='',$value=''){ 
    return '<input class="maclasseBootstrap" type="text" name="'.$name.' value="'.$value.'"/>'; 
    } 
}
<?php 
require "app/helper/Form.php"; 

use MonAppli\helper\Form; 

echo Form::input('age','10');

Exemple : Rajouter dans le fichier composer.json

...
    "autoload": { 
    "psr-4" : {"MonAppli\\" : "app"} 
    },
...
<?php 
require "vendor/autoload.php"; 

use MonAppli\helper\Form;   // Cherche le fichier app/helper/Form.php

echo Form::input('age','10');






autre exemple



différence entre psr-0 et psr-4

"autoload": { 
    "psr-X" : {"Acme\\Foo\\" : "src"} 
    },

exercice 4 : intégrer des modules javascript

<?php session_start(); ?> 
<!DOCTYPE html> 
<html> 
<head> 
<script src="tinymce/tinymce.min.js"></script> 
<script>tinymce.init({selector:'textarea.maClasseSelection'});</script> 
</head> 
<body> 
<a href="exo4_tinymce.php?edition=ok">edition</a> 
<form action="exo4_tinymce.php" method="post"> 
        <textarea  name="contenu" rows="10" cols="80"
<?php if(isset($_GET['edition']))echo 'class="maClasseSelection"'; ?> > 
        <?php if(isset($_SESSION['contenu'])) echo $_SESSION['contenu']; ?> 
        </textarea> 
<input type="submit" name="valider"> 
</form> 
<?php if(isset($_POST['contenu'])) { 
    echo htmlspecialchars($_POST['contenu']); 
    echo '<hr>'.$_POST['contenu']; 
    $_SESSION['contenu']=$_POST['contenu']; 
} 
?> 
</body> 
</html>

ANNEXES

problème d’installation

Sur Windows, télécharger le fichier exécutable d’installation, l’exécuter ( https://getcomposer.org/ ), remplacer par la suite php composer.phar par composer dans le terminal.


En cas de problème :
composer nécessite php fonctionnel sur le terminal, exemple de test : php --help
3eme méthode => on télécharge le fichier en bas de la page https://getcomposer.org/download/   Sur Mac ?? , ça devrait être comme sur linux

problème avec le paquet gregvar du système de captcha