PHP

De Bricosoft.

ah wa wa waa, grand succèèès, PHP langage numéro un dans tout Kazakhstan

PHP est l'acronyme de problème d'hygiène personnelle.

echo "Le logo de PHP.";
  • "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." 0x58

Sommaire

[modifier] $_SERVER['SERVER_NAME'] vs $_SERVER['HTTP_HOST']

  • $_SERVER['HTTP_HOST']
    • dépend de la requête HTTP par le client(navigateur). Prends le contenu de l'entête Host: s'il existe.

Conclusion : ne pas faire une confiance aveugle aux valeurs du tableau $_SERVER sauf si l'on maîtrise la configuration du serveur web (UseCanonicalName On + ServerName www.bricosoft.com pour Apache) et on prendra SERVER_NAME.

[modifier] foreach par reference

 foreach ($arr as &$value) {
    $value = $value * 2;
 }

[modifier] Afficher une image aléatoirement / randomized printed image

Ce petit programme renvoie une image parmi les images présentes dans le dossier.

http://tremulous.bricosoft.com/images/banniere/b.php

Les images dans le dossier (jpg ou png) : http://tremulous.bricosoft.com/images/banniere/

Le source : http://tremulous.bricosoft.com/images/banniere/b.phps


Utilité : avatar aléatoire, égayer une page...

[modifier] Eclipse

http://www.eclipse.org/php

Help>Software Updates>Find and Install
*Search for new features to install
**New Remote Site
***Name: PDT URL: http://download.eclipse.org/tools/pdt/updates/
Finish

Selectionnez Callisto et PDT, en cas de plugins manquant, mettez en surbrillance Callisto puis cliquez sur "Select Required", les paquets manquants seront sélectionnés automatiquement.

[modifier] Détecter IE <= 6

 if( preg_match('/(?i)msie [1-6]/',$_SERVER['HTTP_USER_AGENT']) ) 
   // IE <= 6
 else
   // autre

[modifier] Unicode vers Html

Par exemple ä est unicodé en "U+00E4" :

 $ php -r "echo base_convert('00E4',16,10);"
 228

L'entité html est donc :

ä

Preuve :

 html_entity_decode('&#'.base_convert('00E4',16,10).';',ENT_QUOTES, 'UTF-8');"
 
 $ php -r "echo html_entity_decode('&#'.base_convert('00E4',16,10).';',ENT_QUOTES, 'UTF-8');"
 ä

En CLI (le fichier doit être encodé en UTF-8) :

#!/usr/bin/php -q
<?php
//php -r "echo html_entity_decode('&#'.base_convert('00E4',16,10).';',ENT_QUOTES, 'UTF-8');"
 
$sT= 'á, à, &#259;, â, å, ä, ã, &#261;, &#257;, æ, &#263;, &#265;,
&#269;, &#267;, ç, &#271;, &#273;, é, è, &#277;, ê, &#283;, ë, &#279;,
&#281;, &#275;, &#287;, &#285;, &#289;, &#291;, &#293;, &#295;, í, ì,
&#301;, î, ï, &#297;, &#303;, &#299;, &#305;, &#309;, &#311;, &#312;,
&#314;, &#318;, &#316;, &#322;, &#324;, &#328;, ñ, &#326;, &#331;, ó, ò,
&#335;, ô, ö, &#337;, õ, ø, &#333;, &#341;, &#345;, &#343;, &#347;,
&#349;, &#351;, &#357;, &#355;, &#359;, ú, ù, &#365;, û, &#367;, ü,
&#369;, &#361;, &#371;, &#363;, &#373;, ý, &#375;, ÿ, &#378;, &#380;,
ð, þ, á, é, í, ñ, ó';
 
$aU= explode(',',$sT);
$aU= array_map('trim', $aU);
$aH= array();
foreach ($aU as $sC)
{
	if ( !ereg('#', $sC) )
	{
		$aH[]= htmlentities($sC, ENT_NOQUOTES, 'UTF-8');	
	}
	else
	{
		$aH[]= $sC;
	}
}
print_r( $aU );
$aH= array_unique($aH);
print_r( implode(',',$aH) );
?>

Affichera :

&aacute;,&agrave;,&#259;,&acirc;,&aring;,&auml;,&atilde;,&#261;,&#257;,&aelig;,&#263;,&#265;,&#269;,&#267;,&ccedil;,&#271;,&#273;,&eacute;,&egrave;,&#277;,&ecirc;,&#283;,&euml;,&#279;,&#281;,&#275;,&#287;,&#285;,&#289;,&#291;,&#293;,&#295;,&iacute;,&igrave;,&#301;,&icirc;,&iuml;,&#297;,&#303;,&#299;,&#305;,&#309;,&#311;,&#312;,&#314;,&#318;,&#316;,&#322;,&#324;,&#328;,&ntilde;,&#326;,&#331;,&oacute;,&ograve;,&#335;,&ocirc;,&ouml;,&#337;,&otilde;,&oslash;,&#333;,&#341;,&#345;,&#343;,&#347;,&#349;,&#351;,&#357;,&#355;,&#359;,&uacute;,&ugrave;,&#365;,&ucirc;,&#367;,&uuml;,&#369;,&#361;,&#371;,&#363;,&#373;,&yacute;,&#375;,&yuml;,&#378;,&#380;,&eth;,&thorn;

[modifier] string to array

$sUtf= 'éééé'; // string UTF-8
$iSize= strlen($sUtf);
for($i=0; $i < $iSize; $i++) {
  	$aChars[$i]=	$sUtf[$i];
}

$aChars outputs:

Array
        (
            [0] => �
            [1] => �
            [2] => �
            [3] => �
            [4] => �
            [5] => �
            [6] => �
            [7] => �
        )

:-(

$sUtf= 'éééé'; // string UTF-8
$iSize= mb_strlen($sUtf, 'UTF-8');
for($i=0; $i < $iSize; $i++) {
	$char = mb_substr ($sUtf, $i, 1, 'UTF-8');
       	$aChars[$i]=	$char;
}

$aChars outputs:

Array
       (
            [0] => é
            [1] => é
            [2] => é
            [3] => é
       )

:-)

[modifier] Cache APC

Kro meugnon!!!<3<3<3
Kro meugnon!!!<3<3<3

cf APC.

[modifier] debug_backtrace()

debug_backtrace() est bien utile :))

[modifier] récupérer les paramêtres d'une méthodes sans paramêtres

Utile en refactoring, sans changer la signature d'une méthode on peut récupérer des paramètres en plus avec func_get_args()

Avant :

class Panda extends Ursidae {
    function Panda($aInit= null)
    {
    	if(!empty($aInit)) {
	    	foreach ($aInit as $k => $v) {
				if (!empty($v)) {
					$this->$k= $v;	
				}
			}
    	}
    }
}

Après (on peut garder la signature obsolète) :

class Panda extends Ursidae {
    function Panda()
    {
    	$args = func_get_args();
        if (is_array($args)) {
    		$args= $args[0];
    	}   
        foreach ($args as $k => $v) {  
			if (!empty($v)) {
			$this->$k= $v;	
			}
	}  
    }
}
 
 
$oPanda= new Panda('poids'= 110);

[modifier] implode de tableau associatif, array to string

$ php -a
Interactive shell

php > $aTrucs= array('fruit'=>'pomme','outil'=>'cle a molette','alibi'=>'traineau');

php > echo http_build_query($aTrucs,'', ' ');
fruit=pomme outil=cle+a+molette alibi=traineau

php > http_build_query rulez

No need to s'emmerder.


[modifier] Les méthodes magiques

PHP et les méthodes magiques >>> Java.

Pour faciliter votre compréhension (et pourquoi pas ?) les exemples seront avec cet objet :

class Poulpe extends Octopus {
	public $iDureeVieMax= 2;	/* annees */
 
	function Poulpe() {
	}
}

Qui n'est autre qu'un poulpe très simple ou octopus vulgaris simplex en pseudo taxonomie de troquet.

[modifier] __get()

[modifier] __set()

[modifier] __call()

[modifier] __callStatic()

[modifier] __construct()

[modifier] __destruct()

[modifier] __toString()

[modifier] __set_state()

[modifier] __clone()

[modifier] __sleep()

[modifier] __wakeup()

[modifier] __autoload()

[modifier] __invoke()

[modifier] PHP bashing

[modifier] true is false

$ php -a
Interactive shell
php > if ((true == "foo") && ("foo" == 0) && (0 == false)) echo "lawl";
lawl

[modifier] Voir aussi

[modifier] Liens

Récupérée de « http://www.bricosoft.com/PHP »
Plus