Zurück   Flashforum > Flash > Stuff

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24-02-2005, 18:50   #1 (permalink)
flachzange
 
Benutzerbild von elias
 
Registriert seit: Jun 2003
Ort: berlin
Beiträge: 3.932
[stuff] PHP Code ordentlich formatieren

da ich erst neulich die tokenizer funktionalität von php für mich entdeckt
habe, stand es noch aus damit was zu machen.

also hab ich eine klasse geschrieben die PHP code neu formatiert.

für die letzten tests habe ich diesen unformatierten code benutzt:

PHP-Code:
<?php class TestClass{var $var;function Template(){echo $this->toString()." created\n";}function toString(){if(1>2&&true===false)$blubb*=2/1%3;return '['.__CLASS__.']';}}?>
das ergebnis sieht so aus:

PHP-Code:
<?php
class TestClass
{
    var 
$var;
    function 
Template()
    {
        echo 
$this->toString() . " created\n";
    }
    function 
toString()
    {
        if(
&& true === false)$blubb *= 3;
        return 
'[' __CLASS__ ']';
    }
}
?>
es fehlen aber noch einige dinge. zb werden for schleifen zerschossen
da darin semikolons vorkommen. spezielle formatierungen für arrays wären
auch denkbar.

wen das interessiert der sollte sich die seite genauer ansehen:
http://de2.php.net/tokenizer
Angehängte Dateien
Dateityp: zip TokenFormatter.zip (2,9 KB, 19x aufgerufen)
__________________
elias ist offline   Mit Zitat antworten
Alt 24-02-2005, 21:02   #2 (permalink)
schnarchnase
 
Registriert seit: Jan 2002
Ort: konstanz
Beiträge: 2.953
ja krass - aber warum lässt du das nicht deinen editor machen?
__________________

perlen vor die säue.
rechtschreibfan ist offline   Mit Zitat antworten
Alt 24-02-2005, 21:33   #3 (permalink)
flachzange
 
Benutzerbild von elias
 
Registriert seit: Jun 2003
Ort: berlin
Beiträge: 3.932
1. kenne ich keinen editor der das so macht wie ich will

2. ist das formatieren nur eine spielerei

3. wären sachen wie refaktorisieren interessanter
__________________
elias ist offline   Mit Zitat antworten
Alt 24-02-2005, 23:00   #4 (permalink)
schnarchnase
 
Registriert seit: Jan 2002
Ort: konstanz
Beiträge: 2.953
ok, also für's automatisierte refactoring wäre ich auch zu haben.

hast du zend studio mal ausprobiert? oder vim
__________________

perlen vor die säue.
rechtschreibfan ist offline   Mit Zitat antworten
Alt 25-02-2005, 06:11   #5 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Ich hab da noch viel "organically grown code" (phpwtf lässt grüssen) der druch die vielen Einschübe in der Strukturierung vorne und hinten nicht mehr Stimmt. Wenn du es hinkriegst das jetzt noch schleifen unangetastet leiben wär ich an deinem Ergebnis sehr interessiert.

PS: Ich hab die Klammer nach einem Funktionsaufruf immer lieber gleich danach, also so:

PHP-Code:
function test($var){
     
$var $var 50;
     if ( 
$var >= 300 ){
               
$var 1500;
     }else{
               
$var $var 20;
     }
     return 
$var;

Er gibt meiner Menung nach halt wieder ein bischen kompakteren Code.
__________________
(\__/)
(='.'=)
(")_(")

Geändert von Nightflyer (25-02-2005 um 06:13 Uhr)
Nightflyer ist offline   Mit Zitat antworten
Alt 25-02-2005, 09:20   #6 (permalink)
flachzange
 
Benutzerbild von elias
 
Registriert seit: Jun 2003
Ort: berlin
Beiträge: 3.932
die sache mit dem for loop hab ich jetzt gefixt.

für die { kannst du dort den letzten parameter auf 0 setzen:

PHP-Code:
//Reformatter.php zeile 78
$this->curr $this->getWhiteSpace($this->depths1); 
wenn du schon zeilenumbrüche im code hast brauchst du die Normalizer
klasse nicht anwenden. die ist nur für den fall das garkeine oder nur sehr
wenige existieren.

@rechtschreibfan
mal sehen wie einfach sich das umsetzen lässt.
wegen editor:
zend hab ich vor einiger zeit mal getestet, fand es damals zu speziell. ich
will einen editor für alles haben. vim? zu gewöhnungsbedürftig
__________________

Geändert von elias (25-02-2005 um 09:22 Uhr)
elias ist offline   Mit Zitat antworten
Alt 25-02-2005, 10:58   #7 (permalink)
flachzange
 
Benutzerbild von elias
 
Registriert seit: Jun 2003
Ort: berlin
Beiträge: 3.932
so hab jetzt ein beispiel erstellt in dem man variablen einer datei global
umbenennen kann. klassen methoden oder eigenschaften werden noch nicht
erkannt, ist aber machbar. wirklich brauchbar wirds aber erst wenn man
sich auf funktionsblöcke einschränken kann.

beispiel im anhang, es liegt keine testdatei vor die müsst ihr im
refactorer selbst angeben.
Angehängte Dateien
Dateityp: zip Refactor.zip (2,7 KB, 8x aufgerufen)
__________________
elias ist offline   Mit Zitat antworten
Alt 25-02-2005, 12:05   #8 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Wie wärs, wenn das Script nur eine Datei wär, die auf den Server hochgeladen und gestartet werden muss. Dann durchforstet das Script alle Dateien in diesem Ordner und formatiert sie neu und am Schluss bekommt der User eine Auflistung aller Dateien des Ordners die neu formatiert worden sind.
Noch besser wäre natürlich die gleiche Prozedur nur lokal, aber das kann ja PHP leider nicht...
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 25-02-2005, 13:19   #9 (permalink)
flachzange
 
Benutzerbild von elias
 
Registriert seit: Jun 2003
Ort: berlin
Beiträge: 3.932
Zitat:
Zitat von Nightflyer
Noch besser wäre natürlich die gleiche Prozedur nur lokal, aber das kann ja PHP leider nicht...
natürlich geht das auch lokal. du brauchst nur die php.exe am besten die
cli version.
__________________

Geändert von elias (25-02-2005 um 13:45 Uhr)
elias ist offline   Mit Zitat antworten
Alt 25-02-2005, 17:33   #10 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Hmm, irgendwie blicke ich nicht durch wie man damit ein Script parsen kann...
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 25-02-2005, 18:16   #11 (permalink)
flachzange
 
Benutzerbild von elias
 
Registriert seit: Jun 2003
Ort: berlin
Beiträge: 3.932
wie wärs damit?

Zitat:
d:\xampp\php>phpcli.exe d:\phpdateien\test.php
bei mir läuft das ganz einfach mit STRG + 2 in meinem editor
__________________

Geändert von elias (25-02-2005 um 18:18 Uhr)
elias ist offline   Mit Zitat antworten
Alt 25-02-2005, 21:00   #12 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Ne lokal tu ich mir php nicht an da steige ich zuwenig durch..
Könntest du nicht eine Upload-Funktion machen die uploadende PHP-Dateien formatiert?

Bütte, ich steig bei OOP nicht durch...
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 26-02-2005, 07:24   #13 (permalink)
flachzange
 
Benutzerbild von elias
 
Registriert seit: Jun 2003
Ort: berlin
Beiträge: 3.932
aber über die nächste ampel schaffst du's allein?
__________________
elias ist offline   Mit Zitat antworten
Alt 26-02-2005, 08:16   #14 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Zitat:
Zitat von elias
aber über die nächste ampel schaffst du's allein?
Tut mir leid das nicht alle Informatiker sind...
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 26-02-2005, 09:08   #15 (permalink)
Neuer User
 
Registriert seit: Aug 2003
Beiträge: 126
also ich machs mir nicht so umständlich bzgl. der Code-Formatierung. ich nehm den phpCodeBeautifier von http://www.phpedit.net .

Hab auch n PHP-Skript, das für mich dann einfach alle PHP-Dateien in nem Verzeichnis recht ordentlich formatiert:

PHP-Code:
<h3>PHP Code Bautifier auf Verzeichnis anwenden ( / verwenden, ohne abschließenden /)</h3>
<?php
if(!isset($_POST['verz'])){
echo <<<EOF
<form action="" method="post">
Verzeichnis: <input type="text" size="50" name="verz">
<input type="submit" value="Code verschönern ;)">
<form>

EOF;
}else{
$verzeichnis=$_POST['verz'];
$beautifier_pfad='D:/Programme/PHP/php-beautifier/phpCB.exe';
$handle=opendir ($verzeichnis);
while (
false !== ($file readdir ($handle))) {
    if(
strpos($file,'.php')==strlen($file)-4) {
    
copy($verzeichnis.'/'.$file,$verzeichnis.'/'.$file.'.bak');
    
exec($beautifier_pfad.' '.$verzeichnis.'/'.$file,$run);
    
$neu=fopen($verzeichnis.'/'.$file,'w+');
    foreach(
$run as $value){
        
fwrite($neu,"$value\n");
    }
    
fclose($neu);
    unset(
$run);
        echo 
"$file formatiert ...<br />";
    }
}
closedir($handle);
echo 
"FERTIG!";
}

lässt sich sicher noch vereinfachen, aber so zum schnellen Code-Formatieren reichts auf jeden Fall. Erstellt auch ne Sicherung ('.bak'), falls doch mal was schief geht. Gibt auch noch ausreichend Optionen, siehe Hilfe.
flat_le ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:36 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele