Valider 07a5e0a7 rédigé par marcimat's avatar marcimat
Parcourir les fichiers

- Être plus tolérant avec les objets PHP dans l’environnement d’un squelette...

- Être plus tolérant avec les objets PHP dans l’environnement d’un squelette (via charger() ou via recuperer_fond() ou via <INCLURE>). Ce n’est pas parfait, mais c’est mieux qu’avant : les objets doivent pouvoir être rechargés depuis un var_export, c’est à dire en implémentant la méthode magique __set_state().
- En mode débug, afficher les chaine entre guillemets, sinon les chaînes avec simplement un espace sont difficiles à identifier. Indiquer aussi lorsque ce sont des objets.
parent 518dfb33
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+6 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -337,7 +337,12 @@ function synthetiser_balise_dynamique($nom, $args, $file, $context_compil) {
 **/
function argumenter_squelette($v) {

	if (!is_array($v)) {
	if (is_object($v)) {
		if (PHP_VERSION_ID < 73000 and $v instanceof \stdClass) {
			return "(object) " . var_export((array) $v, true);
		}
		return var_export($v, true);
	} elseif (!is_array($v)) {
		return "'" . texte_script($v) . "'";
	} else {
		$out = array();
+16 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -217,9 +217,23 @@ function debusquer_contexte($env) {
		if (is_array($valeur)) {
			$valeur_simple = array();
			foreach ($valeur as $v) {
				$valeur_simple[] = is_array($v) ? 'array(size=' . count($v) . ')' : $v;
				if (is_array($v)) {
					$valeur_simple[] = 'array:' . count($v);
				} elseif (is_object($v)) {
					$valeur_simple[] = get_class($v);
				} elseif (is_string($v)) {
					$valeur_simple[] = "'" . $v . "'";
				} else {
					$valeur_simple[] = $v;
				}
			}
			$valeur = '(' . count($valeur) . ' items) [' . join(',', $valeur_simple) . ']';
			$n = count($valeur);
			$valeur = (($n > 3) ? 'array:' . $n . ' ' : '');
			$valeur .= '[' . join(', ', $valeur_simple) . ']';
		} elseif (is_object($valeur)) {
			$valeur = get_class($valeur);
		} elseif (is_string($valeur)) {
			$valeur = "'" . $valeur . "'";
		}
		$res .= "\n<tr><td><strong>" . nl2br(entites_html($nom))
			. "</strong></td><td>:&nbsp;" . nl2br(entites_html($valeur))
+39 −17
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -146,27 +146,14 @@ function public_parametrer_dist($fond, $contexte = '', $cache = '', $connect = '
		}

		// spip_log: un joli contexte
		$infos = array();
		foreach (array_filter($contexte) as $var => $val) {
			if (is_array($val)) {
				$val = serialize($val);
			}
			if (strlen("$val") > 30) {
				$val = substr("$val", 0, 27) . '..';
			}
			if (strstr($val, ' ')) {
				$val = "'$val'";
			}
			$infos[] = $var . '=' . $val;
		}
		$infos = presenter_contexte(array_filter($contexte));

		$profile = spip_timer($a);
		spip_log("calcul ($profile) [$skel] "
			. join(', ', $infos)
		spip_log("calcul ($profile) [$skel] $infos"
			. ' (' . strlen($page['texte']) . ' octets)');

		if (defined('_CALCUL_PROFILER') AND intval($profile)>_CALCUL_PROFILER){
			spip_log("calcul ($profile) [$skel] "
				. join(', ', $infos)
			spip_log("calcul ($profile) [$skel] $infos"
				.' ('.strlen($page['texte']).' octets) | '.$_SERVER['REQUEST_URI'],"profiler"._LOG_AVERTISSEMENT);
		}

@@ -222,6 +209,41 @@ function public_parametrer_dist($fond, $contexte = '', $cache = '', $connect = '
	return $page;
}

/** 
 * Retourne une présentation succincte du contexte pour les logs 
 * @param array $contexte
 * @return string
*/
function presenter_contexte($contexte, $profondeur_max = 1, $max_lines = 0) {
	$infos = array();
	$line = 0;
	foreach ($contexte as $var => $val) {
		$line++;
		if ($max_lines and $max_lines < $line) {
			$infos[] = '…';
			break;
		}
		if (is_array($val)) {
			if ($profondeur_max > 0) {
				$val = 'array:' . count($val) . '(' . presenter_contexte($val, $profondeur_max - 1, 3) . ')';
			} else {
				$val = 'array:' . count($val);
			}
		} elseif (is_object($val)) {
			$val = get_class($val);
		} elseif (strlen("$val") > 30) {
			$val = substr("$val", 0, 29) . '…';
			if (strstr($val, ' ')) {
				$val = "'$val'";
			}
		} elseif (strstr($val, ' ')) {
			$val = "'$val'";
		}
		$infos[] = $var . '=' . $val;
	}
	return join(', ', $infos);
}


/**
 * Si le champ virtuel est non vide c'est une redirection.