Adrenalin\’s Blog

iulie 5, 2006

Scăpăm de urâţeniile cu stringurile din PHP

Filed under: Php — Adrenalin @ 14:04

Cit de des ca vine sa vedeţi astfel de cod ?:

echo „<option value=\”$type[id]\”>$type[name]</option>”;

Dar cînd trebuie de făcut escape la fiecare valoare ?

echo „<option value=\””.escape($type[‘id’]).”\”>”.escape($type[‘name’]).”</option>”;

Ft sax veţi zice voi ? :) Ok, iata cum se mai poate de obţinut acelaşi rezultat:

echo stringInto(‘<option value=”:id”>:name</option>’,
           array(‘id’ => escape($type[‘id’]), ‘name’ => escape($type[‘name’]) ) );

Imho e cu mult mai simpatic ca versiunile echivalente anterioare.
Caatare acelasi principiu se foloseste in preparated sql statements din PDO.

Iată şi funcţia:

function stringInto($str, $elm) {
    foreach($elm as $name=>$value) {
        $str = str_replace(‘:’.$name, $value, $str);
    }
    return $str;
}

Cred că s-ar putea de optimizat pînă la:

function stringInto($str, $elm) {
    return str_replace( array_keys($elm) , array_values($elm) , $str);
}

Dar la fiecare key tre de mai adăugat înainte semnul ‘:’..
Cine acolo se pregăteşte de certificarea la Zend, încordaţi-vă minţile =) (anyway, am impresia că nu e nici o funcţie care ar putea uşor să ne ajute, tre iară foreach sau o funcţie aparte pentru array_walk).

7 comentarii »

  1. Deobicei pentru html se foloseşte Smarty, sau alt tempalte engine. Lamerii scriu codu php/html/css/sql într-un fişier :) imho

    Comentariu de freejerk — iulie 5, 2006 @ 14:56

  2. Dar cine o zis ca la mine totul e intr-un fisier ? :) Pur si simplu in template-uri tot folosesc php, pentru ce sa mai sui in caruta si Smarty-li cela greoi, cind php-ul isi face perfect treaba.

    MVC-ul ruleste, cu Zend Framework e o dragoste sa scrii aplicatii :) Iata un mic tutorial care arata cit e de usor sa scrii aplicatii cu ZFM&MVC

    Comentariu de Adrenalin — iulie 5, 2006 @ 16:43

  3. Zend Framework sax :) el e greoi.
    Da Smarty daca folosesti ce trebu, adica daca il mai scurtezi e destul de simplu.
    Eu defapt tot nu-s pentru utilizarea lui, sunt alte alternative mai rapide.
    Dap cum, la tine si in template-uri ii PHP? :) ap dar care e logica? :-D

    Comentariu de freejerk — iulie 5, 2006 @ 17:03

  4. Ehehehe :) Greoi ? Se vede ca nici macar nu l-ai incercat :)
    ZFM are o clasa View, faci ceva de genul:
    $view = new Zend_View;
    $view->setScriptPath(‘./views’);
    $view->variabila1 = ‘blabla’;
    $view->render(‘carevaView.php’);

    In carevaView.php prin $this->variabila1 poti avea acces la variabila setata :)
    E ft si ft simplu ;)

    Comentariu de Adrenalin — iulie 5, 2006 @ 18:45

  5. Sau poate asa ceva:

    echo htmlTag(‘option’, array(‘id’=>$type[’id’], ‘text’=> escape($type[’name’]) ) );

    Cred ca e mai scurt si mai naiz ca stringInto

    function htmlTag($tag, $attributesAr) {
    $attributes = ”;
    $middle = ”;
    foreach($attributesAr as $name=>$value) {
    if ($name == ‘text’) {
    $middle = $value;
    continue;
    }
    $attributes .= $name.’=”‘.$value.'” ‘;
    }
    $attributes = trim($attributes);
    return „$middle”;
    }

    Comentariu de Adrenalin — iulie 5, 2006 @ 20:58

  6. iaca o combina rules
    http://kpumuk.info/php/zend-framework-using-smarty-as-template-engine/

    Comentariu de LazEr — iulie 7, 2006 @ 16:11

  7. btw, daca zend merge cu asa tempuri, poate dezvolta un framework mult mai serios si un cul IDE, se mai apropie de ideologia ASP.NET si baga ceva de genul ZEND Web Controls, ASP.NET-u va avea o concurenta exterm de mare. Atunci va fi real fucking RAD.

    Comentariu de LazEr — iulie 7, 2006 @ 16:16


RSS feed for comments on this post. TrackBack URI

Lasă un răspuns către LazEr Anulează răspunsul

Creează gratuit un site web sau un blog la WordPress.com.