Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 04-03-2011 15:47:27

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Contribuer au ZF2 (Zend Framework 2)

Bonjour,

Voilà un message sur le blog de Matthew Weier O'Phinney qui indique comment contribuer au ZF2 :
http://weierophinney.net/matthew/archiv … l#extended

S'il y a des amateurs, n'hésitez pas à vous manifester !

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#2 04-03-2011 19:17:24

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: Contribuer au ZF2 (Zend Framework 2)

Il semble qu'il y ai une erreur dans ton lien, celui-ci fonctionne :
http://weierophinney.net/matthew/archiv … l#extended

Hors ligne

 

#3 04-03-2011 22:35:41

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Contribuer au ZF2 (Zend Framework 2)

Bien vu, merci !


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#4 05-03-2011 14:15:49

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Contribuer au ZF2 (Zend Framework 2)

Bonjour
S'il y a un contributeur ans la salle voici la classe Debug.php que Zend à mis dans ZF2

Code:

<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Debug
 * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @namespace
 */
namespace Zend;

/**
 * Concrete class for generating debug dumps related to the output source.
 *
 * @category   Zend
 * @package    Zend_Debug
 * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Debug
{

    /**
     * @var string
     */
    protected static $_sapi = null;

    /**
     * Get the current value of the debug output environment.
     * This defaults to the value of PHP_SAPI.
     *
     * @return string;
     */
    public static function getSapi()
    {
        if (self::$_sapi === null) {
            self::$_sapi = PHP_SAPI;
        }
        return self::$_sapi;
    }

    /**
     * Set the debug ouput environment.
     * Setting a value of null causes Zend_Debug to use PHP_SAPI.
     *
     * @param string $sapi
     * @return void;
     */
    public static function setSapi($sapi)
    {
        self::$_sapi = $sapi;
    }

    /**
     * Debug helper function.  This is a wrapper for var_dump() that adds
     * the <pre /> tags, cleans up newlines and indents, and runs
     * htmlentities() before output.
     *
     * @param  mixed  $var   The variable to dump.
     * @param  string $label OPTIONAL Label to prepend to output.
     * @param  bool   $echo  OPTIONAL Echo output if true.
     * @return string
     */
    public static function dump($var, $label=null, $echo=true)
    {
        // format the label
        $label = ($label===null) ? '' : rtrim($label) . ' ';

        // var_dump the variable into a buffer and keep the output
        ob_start();
        var_dump($var);
        $output = ob_get_clean();

        // neaten the newlines and indents
        $output = preg_replace("/\]\=\>\n(\s+)/m", "] => ", $output);
        if (self::getSapi() == 'cli') {
            $output = PHP_EOL . $label
                    . PHP_EOL . $output
                    . PHP_EOL;
        } else {
            if(!extension_loaded('xdebug')) {
                $output = htmlspecialchars($output, ENT_QUOTES);
            }

            $output = '<pre>'
                    . $label
                    . $output
                    . '</pre>';
        }

        if ($echo) {
            echo($output);
        }
        return $output;
    }

}

l'idée est d'encapsuler var_dump pour que le développeur puis afficher sa variable sans altérer le fonctionnement de ZF
Dès la version 1.0 avec un collègue j'avais porté une classe faisant la même chose que nous avions dans un dans un framework à nous en php4
Cette classe ne propose pas dump mais show et las ou les paramètres de la classe de zend sont $var et $label et $echo ceux de la notre sont $message, $value, $echo
elle sont donc très proche.
mais là où celle de Zend fait un simple var_dump affiché dans un tag <pre> avec le label
la notre affiche la structure de donnée mais aussi des informations sur l'exécution
elle tien compte de la présence de fireBug ou du fait que la sortie est en JSON
enfin la classe est piloté par un switch qui permets de ne plus afficher les debugs on pu donc oublier des appel au débug sans craindre de voir des informations de dev s'afficher en production.

Code:

<?php

/**
 * Affichage formattÈ de n'importe quel objet ou variable.
 *
 * @example Fast_Debug::show('mon message', $mavariable);
 *
 * @package Fast
 * @copyright  ftgroup
 * @author Jean Yves Terrien
 * @author Patrick Dubois
 */
class Fast_Debug
{

    private static $_styled = false;
    private static $_display = false;
    private static $_debugStarted = false;
    /**
    * Affichage structurÈ d'une variable, quel que soit son type.
    * Cet affichage embarque sa propre feuille de style mais qu'une seule
    * fois pour l'ensemble des appels successifs ‡ cette mÈthode.
    * Tous les styles sont gÈrÈs dans un DIV.Debug, aussi assurez-vous de
    * ne pas utiliser une classe de style nommÈe '.Debug' sur un 'DIV' de
    * vos propres affichages.
    *
    * Notification de l'affichage au reste de l'application par une
    * constante membre statique valorisÈe ‡  true, car cet affichage va
    * bloquer les envois de header et donc le mÈcanisme de session.
    * Les mÈthodes qui gËrent ces mÈcanismes pourront en tenir compte
    * en appelant Fast_Debug::isStarted();
    *
    * @param message string message ‡ afficher avant la valeur
    * @param value mixed variable (ou expression) ‡ Èvaluer
    * @param value boolean affiche ou retourn la trace de debug.
    */
    public static function show($message, $value=NULL, $echo=true)
    {
        $mime = 'text/html';
        if (class_exists('Zend_Controller_Front')) {
            $controller = Zend_Controller_Front::getInstance();
            if ($controller->getResponse()) {
                $firePHP = preg_match('|FirePHP|', $controller->getRequest()->getHeader('User-Agent'));
                foreach ($controller->getResponse()->getHeaders() as $header) {
                    if ('Content-Type' == $header['name']) {
                        if (preg_match('|^([^/]+/[^;]+).*$|', $header['value'], $matches)) {
                            $mime = $matches[1];
                        }
                    }
                }
            }
        }

        if (!self::$_display) return false;
        self::start();

        if (isset($firePHP)&&$firePHP) {
            include_once('FirePHPCore/fb.php');
            if (class_exists('FB')) {
                ob_start();
                FB::trace($message);
                FB::log($value, $message);
                ob_end_clean();
                return;
            }
        }

        $trace = debug_backtrace();
        $fichier = basename($trace[0]["file"]);
        $ligne = $trace[0]["line"];
        $print_trace = create_function('$trace, $mime','
            unset($trace[0]); //concerne myErrorHandler sans importance
            $disp = null;
            if (count($trace) > 0) {
                if ("text/html" == $mime) {
                    $disp = "<ul class=\"caller\">";
                    foreach ($trace as $k=>$entry) {
                        $disp .= "<li class=\"caller\">Appel de : <b>";
                        if (isset($entry["class"])) {
                            $disp .= $entry["class"] . "::" . $entry["function"];
                        } else {
                            $disp .= $entry["function"];
                        }
                        $disp .= "()</b>";
                        if (isset($entry["file"])) {
                            $disp .= "<br>dans <i>";
                            $disp .= $entry["file"];
                            $disp .= ":" . $entry["line"];
                            $disp .= "</i>";
                        }
                        $disp .= "</li>" . PHP_EOL;
                    }
                    $disp .= "</ul>";
                } else {
                    $disp = "";
                    foreach ($trace as $k=>$entry) {
                        if (isset($entry["class"])) {
                            $disp .= $entry["class"] . "::" . $entry["function"] . "()";
                        } else {
                            $disp .= $entry["function"] . "()";
                        }
                        if (isset($entry["file"])) {
                            $disp .= " => " . $entry["file"] . ":" . $entry["line"] . PHP_EOL;
                        } else {
                            $disp .= PHP_EOL;
                        }
                        //$disp[$call] = $in;
                    }
                    //$disp = print_r($disp, true);
                }
            }
            return $disp;
        '); // fin de la fonction dynamique

        $print_msg = create_function('$type, $msg, $mime','
            if ("text/html" == $mime) {
                return \'<span class="\' . $type . \'">\' . $msg . \'</span>\';
            } else {
                return $msg;
            }'
        );



        if ('text/html' == $mime) {
            $disp = self::_presetStyles();
            $disp .= PHP_EOL . PHP_EOL . '<!-- DEBUG -->' . PHP_EOL . '<div class="Debug">' . PHP_EOL . '<pre>' . PHP_EOL;
            $intro = '<div class="file">Dans ' . $fichier . ":" . $ligne . "</div>";
        } else {
            $disp = '/*' . PHP_EOL;
            $intro = 'Dans ' . $fichier . ":" . $ligne . PHP_EOL;
        }

        if (is_object($value)) {
            $disp .= $intro . $print_msg('message', $message, $mime) . ' => ';
            $disp .= print_r($value, true);
            $disp .= $print_trace($trace, $mime);
        } elseif (is_array($value)) {
            $disp .= $intro . $print_msg('message', $message, $mime) . ' => ';
            $disp .= print_r($value, true);
            $disp .= $print_trace($trace, $mime);
        } elseif (is_bool($value)){
            $disp .= $intro . $print_msg('message', $message, $mime) . ' => ' . ucfirst(gettype($value)) . PHP_EOL;
            if ($value) {
                $value = 'True'.PHP_EOL;
            } else{
                $value = 'False'.PHP_EOL;
            }
            $disp .= '{' . PHP_EOL . '    [] => ' . $value . '}' . PHP_EOL;
            $disp .= $print_trace($trace, $mime);
        } elseif (is_null($value)){
            $disp .= $intro . $print_msg('stabilo', $message, $mime);
            $disp .= $print_trace($trace, $mime);
        } elseif (is_string($value) && is_file($value)) {
            $disp .= $intro . $print_msg('message', $message, $mime) . ' => File' . PHP_EOL;
            $disp .= '{' . PHP_EOL . '    [] => ' . $value . PHP_EOL . '}' . PHP_EOL;
        } else {
            $disp .= $intro . $print_msg('message', $message, $mime) . ' => ' . ucfirst(gettype($value)) . PHP_EOL;
            $disp .= '{' . PHP_EOL . '    [] => ' . $value . PHP_EOL . '}' . PHP_EOL;
            $disp .= $print_trace($trace, $mime);
        }

        if ('text/html' == $mime) {
            $disp .= '</pre>' . PHP_EOL . '</div>' . PHP_EOL . '<!-- fin DEBUG -->' . PHP_EOL . PHP_EOL;
        } else {
            $disp .= '*/' . PHP_EOL;
        }


        if (!$echo) return $disp;
        echo $disp;
    } // fin function dump

    private static function _presetStyles()
    {
        if (!self::$_styled) {
            // on n'Ècrit une section style qu'une seule fois sur le flux courant
            // quel que soit le nombre d'appels ‡ cette mÈthode.
            $styles =  ''
            . PHP_EOL . '<style>'
            . PHP_EOL . '/* styles pour Debug */'
            . PHP_EOL . 'div.Debug {text-align:left; }'
            . PHP_EOL . 'div.Debug pre {padding:3px; color:#333333; background-color:#DDDDDD; font-family: mono; font-size: 9pt; line-height:10pt;}'
            . PHP_EOL . 'div.Debug .file {color:#666666; font-style:italic; padding-bottom:5px;}'
            . PHP_EOL . 'div.Debug .message {color:#006600;}'
            . PHP_EOL . 'div.Debug .stabilo {background-color:yellow; padding-left:3px; padding-right:3px;}'
            . PHP_EOL . 'div.Debug .caller {color:#003399; list-style:square; margin:8px; line-height:9pt;}'
            . PHP_EOL . 'div.Debug pre strong em {color:#993300;}'
            . PHP_EOL . '/* fin styles pour Debug */'
            . PHP_EOL . '</style>'
            . PHP_EOL;
            self::$_styled = true;
            return $styles;
        }
        return '';
    }

    public static function displayDebug($mode = null) {
        if (null !== $mode) self::$_display = $mode;
        return self::$_display;
    }

    private static function start() {
        if (!self::$_debugStarted) self::$_debugStarted = true;
    }

    public static function isStarted() {
        return self::$_debugStarted;
    }
} // fin class Fast_Debug

Je suis près si ça intéresse à prêter main fort pour l'intégrer à ZF2
Mais je ne pense pas avoir le temps de le faire moi même.
Il existe de la doc sur son utilisation.
A+JYT

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages