Voir le flux RSS

yvesmarie

simplification de la gestion des paramètres des fonctions en PHP

Noter ce billet
par , 15/09/2020 à 02h30 (87 Affichages)
Objectif :
Simplifier le travail de programmation.
- plus besoin de se rappeler l'ordre des paramètres de la fonction
- plus facile d'écrire "x=a,y=b" que $x='a'; $y='b';
//--
// fonction pour convertir du texte en array :
//--
function fx2a($params, $seps = ["s1" => ","]) {
3 séparateurs : s1 = ',' s2 = '=' et pref= ''
ex : fx2a("x=10,y=20",["pref"=>"p3"]);
retourne ["p3x"=>10,"p3y"=>20]
//--
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
trait Trait_c2a {

    private static $_ms1 = ","; // sep1
    private static $_ms2 = "="; // sep2
    private static $_mpref = ""; // prefix
    private static $_mxvars_seps = "s1,s2,pref";

    //--
    // s1 
    // s2
    // pref
    //--
    function fx2a($params, $seps = ["s1" => ","]) {
        if (\is_array($params) || \is_object($params)) {
            return $params;
        }
        if (empty($params)) {
            return [];
        }
        //--
        // vars initialisation   s1,s2,pref
        $s1 = self::$_ms1; //",";
        $s2 = self::$_ms2; //"=";
        $pref = self::$_mpref; //"";
        //--
        // to avoid intrusion
        \extract($seps, EXTR_IF_EXISTS);
        //--
        $zs = \explode($s1, $params);
        $r = [];
        foreach ($zs as $vs) {
            if (!$vs) {
                continue;
            }
            $kvs = \explode($s2, $vs, 2);
            if (!isset($kvs[1])) {
                continue;
            }
            //--
            // take the first $s2 only
            // ex : p=l=2,t=5
            // limit = 2
            //--
            list($k, $valeur) = $kvs;
            // no trim(
            switch ($valeur) {
                case "true":
                    $valeur = TRUE;
                    break;
                case "false":
                    $valeur = FALSE;
                    break;
            }
            $r["$pref$k"] = $valeur;
        }
        return $r;
    }
}
exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
   use Trait_c2a;
    //--
    // examples
    //--
    // easier to write programm
    // parameters not in order
    //--
    function echo_txt($txt, $params = "", $seps = []) {
        $paras = "x=10,y=20";
        extract(self::fx2a($paras, $seps));
        \extract(C2a::fx2a($params, $seps), EXTR_IF_EXISTS);
        //--
        self::Print($txt, $x, $y);
    }

    //--
    // easier with many parameters
    //--
    function Y3_Image_Exo($params = "") {
        $paras = "f=,x=0,y=0,w=0,h=0,type=,link=,align=";
        $paras .= ",resize=false,dpi=300,palign=,ismask=false,imgmask=false";
        $paras .= ",border=0,fitbnox=false,hidden=false,fitonpage=false,alt=false,altimgs=";
        extract(self::fx2a("$paras"));
        extract(self::fx2a("$params"), EXTR_IF_EXISTS);
        $altimgs = self::fx2a($altimgs);
        $c5f = new \Ymh\Cfi5($f);
        $this->Image($c5f->p, $x, $y, $w, $h, $c5f->t3, $link, $align
                , $resize, $dpi, $palign, $ismask, $imgmask
                , $border, $fitbnox, $hidden, $fitonpage, $alt, $altimgs);
    }

    function toto() {
        $this->echo_txt("hello");
        $this->echo_txt("good", "x=50,y=100");
        $this->echo_txt("bye", "y=100,x=30");
        $this->Y3_Image_Exo("f=n:/img/toto/png,dpi=70,x=15,align=C,y=50");
    }

Envoyer le billet « simplification de la gestion des paramètres des fonctions en PHP » dans le blog Viadeo Envoyer le billet « simplification de la gestion des paramètres des fonctions en PHP » dans le blog Twitter Envoyer le billet « simplification de la gestion des paramètres des fonctions en PHP » dans le blog Google Envoyer le billet « simplification de la gestion des paramètres des fonctions en PHP » dans le blog Facebook Envoyer le billet « simplification de la gestion des paramètres des fonctions en PHP » dans le blog Digg Envoyer le billet « simplification de la gestion des paramètres des fonctions en PHP » dans le blog Delicious Envoyer le billet « simplification de la gestion des paramètres des fonctions en PHP » dans le blog MySpace Envoyer le billet « simplification de la gestion des paramètres des fonctions en PHP » dans le blog Yahoo

Catégories
Programmation

Commentaires