Eure PHP Snippets.

  • Hallöle allerseits,

    mich würde interessieren, was ihr so für Snippets in PHP verwendet.
    War schonmal kurz davor mein eigenen Snippet-paster zu basteln, aber mitlerweile hab ich n vernünftigen Editor der sowas von Hausaus bietet :) (für HTML bin ich derzeit mit Zen-Coding recht zufrieden)


    Mein 'Liebling' derzeit (heute erweitert) beim Entwickeln:

    PHP
    echo '<pre>','File: ',__FILE__,'  |  Line: ',__LINE__," |  debug:\n",print_r(${cursor-position}, true),'</pre>';

    Toll weil: es egal ist was man reinschmeisst (einfache Variable, Array, Object) man bekommts in einer leserlichen Form angezeigt und es steht sogar dabei, was es ist.

    Davon hab ich noch ein paar Variationen wie z.B.

    PHP
    if(isset($_GET['conditionxy'])) {
      echo '<pre>','File: ',__FILE__,'  |  Line: ',__LINE__," |  debug:\n",print_r($debugvar, true),'</pre>';
      exit('debug-end');
    }

    Für: Debugausgaben, bei einem Projekt auf dem noch jemand außer mir arbeitet und dabei gefälligst auch nicht gestört werden möchte.

    3 Mal editiert, zuletzt von Grevas (21. Dezember 2010 um 22:37)

  • also im büro hab ich eigentlich net viel^^

    ich hab ne helpers-klasse die mir auch nen pre mit print_r auswirft und das reicht eigentlich schon.
    dann mach ich meist ne konstante debug am anfang des projekts auf true oder false und kombininiert mit dem debug-funktiönchen is des recht entspannt, denn ich kann an den stellen wo ich es brauch nen debug ausgeben lassen und muss es am ende nichma entfernen weil ich dazu nur die konstante wieder auf false setzen muss :)

    so, hier haste ma 3 snippets :)

  • Den verwend ich am Anfang von meinen Scripts:

    PHP
    if($_SERVER['SERVER_NAME']=='localhost')
    {
    	@ini_set('display_errors', 1);
    	error_reporting(E_ALL);
    }else
    {
    	@ini_set('display_errors', 0);
    	error_reporting(E_NONE);
    }

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Das error_reporting auf 'localhost' umzusetzen ist genauo sinnvoll wie es auf einem webserver umzustellen. Auf einem lokalen server stellt man doch die sache in der php.ini ein und auf einem webserver sollte man die finger davon lassen. Das einzige, wozu der man das snippet von dodo nutzen koennte, waeren unterschiedliche konfigurationen.

  • Das error_reporting auf 'localhost' umzusetzen ist genauo sinnvoll wie es auf einem webserver umzustellen. Auf einem lokalen server stellt man doch die sache in der php.ini ein und auf einem webserver sollte man die finger davon lassen. Das einzige, wozu der man das snippet von dodo nutzen koennte, waeren unterschiedliche konfigurationen.


    Also ich bin mit dem Code bis jetzt immer gut gefahren.
    Es passiert genau das, was es soll - und das, ohne in der Konfiguration rumpfuschen zu müssen - also absolut anfängertauglich und damit perfekt für ein Forum und einen solchen Thread geeignet - ich versteh dien Problem damit nicht.

    Vor allem dein "auf einem webserver sollte man die finger davon lassen"...
    Warum sollte mir beim Webauftritt - der ja immerhin Kunden anwerben soll - eine Fehlermeldungen mein Design zerstören.
    Lokal ist das okay - da will man es ja sogar.

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Warum sollte mir beim Webauftritt - der ja immerhin Kunden anwerben soll - eine Fehlermeldungen mein Design zerstören.


    Weil man fehler abfangen sollte?! Da sollte es keine fehlermeldung von php geben


    Lokal ist das okay - da will man es ja sogar.


    Und deshalb sprach ich von der php.ini. Zur not kann man das bei problemen bei einem script einbauen, dann kann man aber auf die if-abfrage verzichten.

  • Weil man fehler abfangen sollte?! Da sollte es keine fehlermeldung von php geben


    Und da es als Grundsatz gilt, dass Software nicht fehlerfrei erstellt werden kann und niemals alle Eventualitäten berücksichtigt werden können - vor allem bei komplexeren Aufgaben und aufwändigeren Algorithmen, wirds sich beinahe immer irgendwo, irgendwie eine Fehlermeldung befinden - und die sollten gerade bei potentiellen Kunden nicht auftauchen.

    Und deshalb sprach ich von der php.ini.


    Und genau deshalb sprach ich von Anfängertauglichkeit.

    Zur not kann man das bei problemen bei einem script einbauen, dann kann man aber auf die if-abfrage verzichten.


    ...und das bringt genau? Komm jetzt bitte nicht mit Performance oder "schlankerem Quelltext".
    Der Vorteil an der Lösung ist,d ass man das Problemlos drin lassen kann und trotzdem beide Möglichkeiten hat.

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Ich wuerde das so nie machen, ist aber egal, mach was du willst. Ich sehe da keinen sinn drin

  • Den verwend ich am Anfang von meinen Scripts:

    PHP
    if($_SERVER['SERVER_NAME']=='localhost')
    {
    	@ini_set('display_errors', 1);
    	error_reporting(E_ALL);
    }else
    {
    	@ini_set('display_errors', 0);
    	error_reporting(E_NONE);
    }



    Diese Beispiel sollte auf keinen Fall im tatsächlichen Live-Betrieb verwendet werden (und lokal kann man sich die Prüfung dann auch schenken).
    Der Wert in $_SERVER['SERVER_NAME'] ist nicht sicher und kann über den per HTTP gesendeten Host geändert werden. Damit kann dann prinzipiell jeder an die PHP-Fehlermeldungen kommen.
    http://shiflett.org/blog/2006/mar/…ersus-http-host

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Diese Beispiel sollte auf keinen Fall im tatsächlichen Live-Betrieb verwendet werden (und lokal kann man sich die Prüfung dann auch schenken).
    Der Wert in $_SERVER['SERVER_NAME'] ist nicht sicher und kann über den per HTTP gesendeten Host geändert werden. Damit kann dann prinzipiell jeder an die PHP-Fehlermeldungen kommen.
    http://shiflett.org/blog/2006/mar/…ersus-http-host



    Noch nicht gewusst, danke!
    Eine Alternative: Die IP-Adresse des Servers prüfen.

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Noch nicht gewusst, danke!
    Eine Alternative: Die IP-Adresse des Servers prüfen.



    Ich hatte es auch nicht sicher gewußt, hatte nur im Hinterkopf mal etwas über Unsicherheit bei $_SERVER-Attributen gelesen zu haben. Und habe dann gerade mal nach gegoogled. Fand ich auch interessant zu wissen, man lernt nie aus. :)

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Peinlich, aber mir ist erst jetzt aufgefallen, dass ich es viel zu oft per Hand mach:

    PHP
    $q = "SELECT | FROM ";
    $res = mysql_query($q);
    while($row = mysql_fetch_assoc($res)) {
      $row;
    }

    (| steht für cursor-position)

    Dazu gehört noch die drupal-alternative schreibweise.

  • Peinlich, aber mir ist erst jetzt aufgefallen, dass ich es viel zu oft per Hand mach:



    Doppelpunkte schützen vor Mißverständnissen :D

    Wozu genau ist denn der Code gut?


    Die hier verwende ich häufiger Mal:

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Es ist ein Snippet. Eine Vorlage. Statt den Code per Hand neu zu tippen, reicht ein shortcut / abbrevation um das Grundgerüst für eine Query parat zu haben.

    Was du jetzt gepostet hast, würd ich dagegen mal eine Helper-Funktion nennen *g*. Nix gegen, hilft ja auch.

    //EDIT: hier noch paar Drupal-Snippets.
    Eigentlich mehr als Tipp gedacht, für was man sich alles Snippets anlegen kann.
    Beispiel Form API:

    PHP
    $form['[[%tabstop:title]]'] = array(
      '#type' => 'textfield',
      '#title' => t('[[%tabstop2:Title]]'),
      '#default_value' => '[[%tabstop3:value]]',
      '#description' => t('[[%tabstop4:Description]]'),
      '#size' => [[%tabstop5:60]],
      '#maxlength' => [[%tabstop6:128]],
      '#required' => [[%tabstop7:TRUE]],
    );

    Eine Drupal-Select Query

    PHP
    $q = 'SELECT [[%tabstop:*]] FROM {[[%tabstop2:db]]} [[%tabstop2]]';
    $res = db_query($q);
    while($row = db_fetch_array($res)) {
        $row;
    }


    Und etwas allgemeines, ein Class-Snippet direkt aus Komodo:

    4 Mal editiert, zuletzt von Grevas (9. März 2011 um 14:19)

  • PHP
    function post($var) {
            $forCleaning = trim($_POST[$var]);
            if(get_magic_quotes_gpc() == 1) $forCleaning = stripslashes($forCleaning);
            $cleanString = mysql_real_escape_string($forCleaning);
    
            return $cleanString;
                }

    Das setz ich meist ein, um XSS zu preventen, halt bei POST Variabeln, die ich in SQL Strings verwende.

  • Ein kleines Snippet für PHPUnit um in TestCase-Methoden auf Exceptions zu prüfen und gegebenenfalls eigene Fehlermeldungen ausgeben zu lassen:

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • das geht mit Annotations bedeutend einfacher und übersichtlicher ;)

    PHP
    /**
     *@expectedException MyException
     */
    public function testMyFunctionThrowsMyException()
    {
        $class = new myClass();
        $class->myFunction();
    }


  • Ja, es gibt auch

    PHP
    $this->setExpectedException()


    Aber ich finde es vorteilhaft meine eigenen Ausgaben setzen zu können. Ich prüfe häufig verschiedene Fälle in einer Testmethode auf Exceptions.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • ohne deine Methode schlecht machen zu wollen

    PHP
    /**
     *@expectedException MyException
     */
    public function testMyFunctionThrowsMyException()
    {
        $class = new myClass();
        $class->myFunction();
        $this->fail('Meine Fehlermeldung');
    }


    funktioniert einwandfrei.

    Zitat


    Ich prüfe häufig verschiedene Fälle in einer Testmethode auf Exceptions.


    Das wiederum ist (wenn auch nicht unüblich) schlechter Stil
    Wenn es ausser Faulheit keinen triftigen Grund gibt, sollte nur ein assert pro Test vorhanden sein.