PHP Beautifier
2008-09-24 -
Jag använder BBEdit som min texteditor och det finns en funktion som den saknar, och det är möjligheten att re-indentera koden. Det betyder alltså att säga åt editorn att sätta in tabbar och sådant där det ska vara för att koden ska flyta snyggt i textmassan, if-satser och sådant ska positioneras på rätt sätt och sådant. Men det finns däremot ett väldigt bra PHP-bibliotek som heter PHP Beautifier (som också kräver att du har PEAR-paketet installerat) som kan göra detta automatiskt och efter vissa givna regler. Så hur använder man detta i BBEdit då? Ja, det är riktigt enkelt. Använd det här scriptet:
error_reporting(E_ALL|E_STRICT); require_once ('PHP/Beautifier.php'); require_once ('PHP/Beautifier/Batch.php'); if ($argv[1]) { try { $beauty = new PHP_Beautifier(); $batch = new PHP_Beautifier_Batch($beauty); $batch->addFilter('ArrayNested'); $batch->setIndentChar(" "); $batch->setIndentNumber(1); $batch->addFilter('IndentStyles', array('style' => 'k&r')); $batch->setInputFile($argv[1]); $batch->process(); print trim($batch->get()); } catch(Exception $exp) { echo ($exp); } }
Vad scriptet gör att den går igenom $argv och snyggar till den efter givna regler, och i det här fallet så använder den stilen "k&r" vilket är en förkortning av Kernighan & Ritchie och är en indenteringstil som passar mig och ser i regel ut så här:
if (cond) {
# do...
}
Jag säger också åt den att indentera med 1 tabb. Sen kan man välja att köra med filtret "ArrayNested" och det är en smaksak, men det gör om en array som ser ut så här:
$apa= array("utter", "giraff", "elefant", "ostrich");
Till detta:
$apa= array( "utter", "giraff", "elefant", "ostrich" );
Men det kan också skapa problem, där sådan här kod:
if(in_array($apa, array("one", "two", "three"))){ # do stuff... }
Vilket kan se rörigt ut, men du får själv avgöra om du vill använda den med andra ord.