1. ⭐⭐⭐ Grosse PROMO en cours sur ma plateforme SEO My Ranking Metrics
    Rejeter la notice

Reduire des lignes de code php

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par sff, 5 Novembre 2016.

  1. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    526
    J'aime reçus:
    0
    Bonjour,

    je souhaite réduire un petit code php afin de le rendre plus lisible. Je m'expliquer, souhaite fusionner dans la mesure du possible les 2 bout de code. Je précise qu'il y a une bonne quarantaine de ligne pour chaque bout de code. Donc si la fusion des 2 était possible sans avoir besoin de recopier un par un chaque variable, cela m'aiderais beaucoup.

    Le but étant que $content>set("",""); fasse la même chose que $primary>set("","");.
    Merci d'avance pour votre aide

    Code:
    $primary->set("title", $title);
    $primary->set("language", $language);
    $primary->set("font", $font);
    $primary->set("text", $text);
    $primary->set("color", $color);
    
    etc ...
    
    
    $content->set("title", $title);
    $content->set("language", $language);
    $content->set("font", $font);
    $content->set("text", $text);
    $content->set("color", $color);
    
    etc...
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 880
    J'aime reçus:
    263
    C'est l'instance de quelle classe $primary et $content ?

    Parce que souvent on px faire du genre:
    PHP:
    <span class="syntaxdefault">$content</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set</span><span class="syntaxkeyword">([</span><span class="syntaxstring">'foo'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> $foo</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'bar'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> $bar</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'baz'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> $baz</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'qux'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> $qux</span><span class="syntaxkeyword">]);&nbsp;</span><span class="syntaxdefault"></span>
    ou même:
    PHP:
    <span class="syntaxdefault">$content</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">compact</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'foo'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'bar'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'baz'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'qux'</span><span class="syntaxkeyword">));&nbsp;</span><span class="syntaxdefault"></span>
    Si c'est un système de template, souvent le template outer (layout) à accès au même variables que l'inner.

    Sinon à la rache:
    PHP:
    <span class="syntaxdefault">$vars </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[</span><span class="syntaxstring">'title'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'language'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'font'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'text'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'color'</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">foreach </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$vars as $var</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    $primary</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$var</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">$</span><span class="syntaxdefault">$var</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">    $content</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$var</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">$</span><span class="syntaxdefault">$var</span><span class="syntaxkeyword">);<br />}&nbsp;</span><span class="syntaxdefault"></span>
     
  3. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    526
    J'aime reçus:
    0
    Merci Spout. En effet j'avais pensé au foreach.
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 880
    J'aime reçus:
    263
    T'es sur que les autres méthodes ne sont pas possible ?
    Parce que le foreach et variable variable c'est la pire.
     
  5. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    526
    J'aime reçus:
    0
    Je sais pas si j'ai vraiment le choix car mon foreach se trouve derrière une requête sql :

    Code:
    $textquery = $mysqli->query('SELECT ...'); 
    $rw = $textquery->fetch_assoc();
    
    foreach($rw as $key => $value) {
    	$primary->set($key, $value);
    $content->set($key, $value);
    }
    
    Comme tu t'en doute c'est pour la mise en forme de mes template. J'ai besoin d'avoir les resultats de la requetes pour mes templates
     
  6. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 880
    J'aime reçus:
    263
    Mais c'est quoi cette classe template ? On px voir son code quelque part ?
     
  7. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    526
    J'aime reçus:
    0
  8. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 880
    J'aime reçus:
    263
    HS: franchement c'est pas top cette classe template.
    C'est des fichiers ".tpl", du coup tu ne profites pas du cache d'opcode.

    L'autre que je t'avais montré est nettement mieux: http://platesphp.com/ ça s'installe avec composer, ça utilise l'autoloading, etc etc...
    Avec de l'héritage de template c'est le pied: http://platesphp.com/templates/inheritance/

    99% du temps j'utilise des frameworks (Laravel, CakePHP et Django) et ils ont tous ce système de base.
     
  9. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    526
    J'aime reçus:
    0
    Malgré le foreach je n'arrive pas à faire ce que je souhaite. J'ai un message d'erreur :

    Uncaught Error: Call to a member function set() on null in /home/u543399083/public_html/index.php:31 Stack trace: #0 {main} thrown in /home/u543399083/public_html/index.php on line 31

    Voici mon code

    Code:
    include("template.class.php");
    
    $primary = new Template("templates/primary.tpl");
    
    $mysqli = new mysqli("mysql.hostinger.fr", "...", "...", "...");
    
    //Requete principale
    
    $textquery = $mysqli->query('SELECT title ... ); 
    $rw = $textquery->fetch_assoc();
    
    foreach($rw as $key => $value) {
    	$primary->set($key, $value);
    	//$content->set($key, $value);  me crée le message d'erreur !
    	
    }
    
    $content = new Template("templates/cgu.tpl");
    $content->set("content", 'texte content');
    
    // ?? Comment faire pour que $content puisse afficher les meme informations que $primary ??
    
    $primary->set("content", $content->output());
    
    echo $primary->output();
     
  10. FortTrafic
    FortTrafic WRInaute passionné
    Inscrit:
    11 Décembre 2012
    Messages:
    1 210
    J'aime reçus:
    18
    Salut, il faudrait déclarer $content avant de le mettre dans la boucle foreach !

    Code:
    ....
    
    $primary = new Template("templates/primary.tpl");
    $content = new Template("templates/cgu.tpl");
    
    ....
    
    foreach($rw as $key => $value) {
       $primary->set($key, $value);
       $content->set($key, $value); 
    }
    
    $content->set("content", 'texte content');
    
    ....
    
    
     
Chargement...
Similar Threads - Reduire lignes code Forum Date
Réduire sa dépendance à Google Le café de WebRankInfo 22 Mai 2019
WORDPRESS Woocommerce, vos astuces pour réduire CPU usage et serveur stress ? e-commerce 22 Juin 2018
Est ce que je peux réduire ce code ? Développement d'un site Web ou d'une appli mobile 4 Avril 2017
Réduire un bout de code Développement d'un site Web ou d'une appli mobile 5 Février 2017
Reduire et optimiser une requete sql Développement d'un site Web ou d'une appli mobile 8 Décembre 2016
Réduire le taux de rebond d'un site d'une école Débuter en référencement 29 Mai 2015
Réduire le temps de chargement d'une page Développement d'un site Web ou d'une appli mobile 20 Mars 2015
réduire le poid d'une photo ( logiciel gratuit ) Développement d'un site Web ou d'une appli mobile 30 Janvier 2015
Réduire le temps de chargement - Besoin d'aide Développement d'un site Web ou d'une appli mobile 11 Août 2014
Réduire le temps de chargement d'un site. Développement d'un site Web ou d'une appli mobile 4 Septembre 2011
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice