![]() |
Re: PHP Inspection Unit
Zitat:
Die von TPHPClass die neuen Klassen-Konstanten (ab PHP5). mfG mirage228 |
Re: PHP Inspection Unit
Ich nutze TPHPSource und die anderen Dinge wie Includes und so klappen ja auch, nur bei den Konstanten gehts net. Ich mach wohl irgendwas falsch. Könntest du nicht mal deine Demo updaten ;)
|
Re: PHP Inspection Unit
Zitat:
in der aktuellen Demo zu v.1.9 sollten Konstanten eigentlich bereits enthalten sein :gruebel: Sonst einfach das hier in die TreeView-Prozedur schreiben (Ich hatte es direkt hinter die Includes gesetzt) ;)
Delphi-Quellcode:
Falls ConstantCount nun immernoch 0 zurückgibt, käme da noch der übliche Verdächtige dran. Undzwar unvollständige oder fehlende PHP-Tags (liegen solche vor, wird der Source ja nicht geparsed).
// Hinzufügen der globalen Konstanten (per define() definiert)
Node := twTree.Items.AddChild(nil, 'Konstanten'); for i := 0 to ConstantCount-1 do begin SubNode := twTree.Items.AddChild(Node, Constants[i].Name + ' = ' + Constants[i].Value); SubNode.Data := TObject(Constants[i].TextPos); end; mfG mirage228 |
Re: PHP Inspection Unit
Ich dachte Vesion 1.8 ist die aktuellste, hab jetzt mal Update auf 1.9 gemacht und siehe da, die Konstanten gehen doch :)
|
Re: PHP Inspection Unit
Hi ho,
ich wollte nur eben bescheidsagen, dass die Version 2.0 gerade in der Mache ist. ;) Ich habe schon einiges implementiert, wollte aber nochmal bei Gelegenheit nachfragen, ob es irgendwelche speziellen User Wünsche gibt, die ich in die neue Version implementieren soll. :) Falls ihr eine Idee habt, was noch den Weg in die neue Version finden sollte, dann sagt mir hier bescheid. :) mfG mirage228 |
Re: PHP Inspection Unit
Bei mir im Forum wurde eine Sache angesprochen, wo ich noch nicht genau weiß, ob sowas Sinnvoll ist und ob es in die Unit mit rein soll, da man es eigentlich auch selber machen kann. Und zwar sollen per Include eingebundenen Dateien auch geöffnet und deren einzelnen Werte mit in dem Baum eingebunden werden. Natürlich nur bis zu einer bestimmten Tiefe wegen der Perfomance. Ich weiß nicht ob dies wirklich nötig ist. Wie denkst du darüber?
|
Re: PHP Inspection Unit
Zitat:
Das mit den Includes ist schwierig und wäre auch mit Einschränkungen verbunden, weil ja einige Includes variabel (und evtl. sogar von einer Nutzereingabe abhängig) sind und ich mich daher auch die Includes mit konkreter Pfadangabe beschränken müsste. Auch dort wäre es mit einem gewissen Aufwand verbunden den richtigen Dateinamen erstmal rauszuparsen, die Linux Slashes in Windows Back-Slashes umzuwandeln und anschließend den Pfad der Datei anhängen (den der Benutzer der Unit übergeben müsste). Naja, ich sehe mal, ob ich das mit einer "Zusatzprocedure" alá ParseIncludedFiles(const FilePath: string; MaxDepth: Byte = 2) oder so Ähnlich lösen kann ;) mfG mirage228 |
Re: PHP Inspection Unit
Zitat:
Die Unit soll so bleiben wie sie ist sonst wird sie mal wie DirectX. DirectX beinhaltet z.B. sachen die eher in eine engine passen als in eine API. Deshalb sollte die Unit solche sachen nicht enthalten. Schließlich könntest du sowas auch selber erstellen. mfg |
Re: PHP Inspection Unit
Ich hatte in dem von dir zitierten Post ja gesagt, dass ich mir nicht sicher bin, ob man sowas reinmachen sollte, oder ob es besser von jedem selber gemacht wird.
Btw: Machst du also doch noch weiter ;) |
Re: PHP Inspection Unit
Guten Tag,
Ich denke mal ich bleib bei meinem entschluss und mache nicht weiter. Aber ich dachte mir die Unit mal nach c# zu portieren oder nach Delphi.NET kommt drauf an. Gibt bestimmt einige die sowas brauchen eingeschlossen mir selbst falls ich mal eine C# Version von meiner IDE veröffentlichen möchte. Ich weis weis nicht genau was diese mozilla Lizenz alles erlaubt deshalb wollte ich mal den autor fragen ob das in ordnung geht mit der C# portierung? Aber mit dieser Portierung würde ich frühestens Ostern anfangen können. Denke aber das es geht habe mir den code mal angeschaut und sollte leicht sein. Werde aber einige Sachen nicht übernehmen zum Beispiel das compilieren von PHP Code mittels php.exe. Das sollte jeder für sich machen. Das ist auch das was mich an der jetzigen Delphi unit stört. Schließlich passt sowas nicht in eine Parser unit. Ist meine Meinung. mfg |
Re: PHP Inspection Unit
Zitat:
|
Re: PHP Inspection Unit
Hi DSeven,
Du kannst die Unit gerne nach C# portieren, wenn Du magst :) Ich könnte auch mal versuchen, dass ganze in Delphi.NET als Assembly zu kompilieren. Das kannste dann ja auch in C# verwenden. Mich würde auch mal der Geschwindigkeitsunterschied zwischen den aktuellen RegExes und den .NET RegExes interessieren :) Nun gut, wenn ihr das nicht möchtet, lasse ich das mit den Includes parsen weg. Das ist vielleicht wirklich etwas, was der Benutzer selbst erledigen sollte. Das mit dem PHP Syntax Check war aber eigentlich dazu gedacht, dem Benutzer die Möglichkeit zu geben um zu überprüfen, ob sein Code richtig ist. Falls dieser nämlich Syntaxfehler enthält, können beim Parsen auch unerwartete Resultate auftreten. Und bevor das passiert, kann man halt überprüfen, lassen ob alles so läuft, wie es soll. Aber das könnte man auch auslagern, das stimmt schon. mfG mirage228 P.S.: Bald gibts wieder was Neues :mrgreen: |
Re: PHP Inspection Unit
Abend,
heute ist es endlich so weit :mrgreen: Die Version 2.0 ist endlich fertig. Es gibt massig Bugfixes und natürlich wieder einige neue Features. ;) Hier die komplette Liste aller Änderungen:
Auch wenn es so viel Neues gibt, hat sich die Parsinggeschwindigkeit dabei nur minimal verlangsamt. :) Ich habe mir Mühe gegeben so gut wie alles zu testen. Solltet ihr dennoch Fehler finden, sagt mir bitte bescheid ;) Den Download findet ihr, wie bereits zuvor, im ersten Beitrag des Threads. mfG mirage228 |
Re: PHP Inspection Unit
Werde das Update in Webweaver integrieren und auch genauer testen, wenn ich wieder weitermache ;)
|
Re: PHP Inspection Unit
Hiho,
habe eben noch einen klein Fehler berichtigt, der verursachte, dass die TextPos von Entitites in einer Klasse, die ein Interface implementierte nicht korrekt waren. Die verbesserten Archive sind im ersten Beitrag zu finden ;) Wer sich die Datei eben selbst patchen möchte, der ändere bitte folgende Zeile (befindet sich hinter dem "implementation")
Delphi-Quellcode:
zu
CLASSSTR = '((((\s+)(extends)(\s+)(\w+?)|)(((\s+)(implements)(\s+)' +
'(.*)(\s*)(?:\{))|))|)';
Delphi-Quellcode:
mfG
CLASSSTR = '((((\s+)(extends)(\s+)(\w+?)|)(((\s+)(implements)(\s+)' +
'(.*)(\s*)(?=\{))|))|)'; mirage228 |
Re: PHP Inspection Unit
Hi ho,
Heute gibts wieder eine Version des PHP Inspektors: Es ist die Version 2.1 Sie enthält nicht viele neue Features, sie berichtigt hauptsächlich einen Fehler, der mir aufgefallen ist. Hier also die Liste der Änderungen:
Auch habe ich eine (englische) Readme-Datei im HTML Format geschrieben, die einen kurzen Überblick über die Features des PHP Inspektors gibt und kurz erläutert, wie man ihn verwendet. Den Download gibts, wie immer, im ersten Beitrag ;) mfG mirage228 |
Re: PHP Inspection Unit
Danke für die neue Version.
Werde sie gleich mal testen. cya |
Re: PHP Inspection Unit
Hallo,
So habe mir mal die Mühe gemacht und einen PHPDoc Parser geschrieben. Bin aber noch nicht dazu gekommen ihn in deine Unit einzubauen. Der Parser geht folgender massen vor: Wenn deine Unit nach einer Klasse, Funktion Parst bzw. eine gefunden hat dann schaltet sich mein Parser ein und sucht ein PHPDoc Comment. Das Problem ist jetzt nur, ich weis nicht wirklich wie ich das in meinen Editor (denn ich weiter mache) einbauen kann. :D Wenn ich Fertig bin werde ich die unit mal posten. cya |
Re: PHP Inspection Unit
Zitat:
das ist ja echt klasse :thumb: Ich denke Deine Parsing Funktion / Klasse sollte sich ganz gut mit der TPHPComment(s) zusammenbringen lassen, da die ja beim finden eines Entities sowieso prüft, ob dieser in Kommentaren ist. Danach könntest Du ja Dich ja der bereits gefundenen Kommentare bedienen. :) Zitat:
Zitat:
mfG mirage228 |
Re: PHP Inspection Unit
Zitat:
Kann sein das meine Methode auch ein wenig umständlich ist da ich zeichen für zeichen durchgehe. Aber eigentlich hab ich damit noch keine wirklichen probleme was speed oder funktionalität angeht. cya |
Re: PHP Inspection Unit
Zitat:
Am besten baust Du die Suche danach direkt in den Programmblock nach "if FComments.CheckIsCommented(...) then" ein. Dann sind die Kommentare schon bis dahin geparsed und Du kannst Sie durchlaufen und ggf. die Daten hinzufügen. mfG mirage228 |
Re: PHP Inspection Unit
Wie ist die unit aufgebaut. Werden alle Kommentare der unit gespeichert?
cya |
Re: PHP Inspection Unit
Zitat:
Die Kommentare, wenn sie geparsed sind, werden von TPHPComments (in TPHPComment Objekten) gespeichert. mfG mirage228 |
Re: PHP Inspection Unit
Hi,
so heute gibts wieder eine neue Version - 2.2 Neue Features gibts diesmal nicht, dafür habe ich einige Fehler behoben :) Liste alle Änderungen:
Den Download gibts wie immer im ersten Post. mfG mirage228 |
Re: PHP Inspection Unit
Hab die neue Version gerade mal heruntergeladen und kurz getestet :thumb:
|
Re: PHP Inspection Unit
Habe einen kleinen Fehler im Zusammenhang mit Konstanten gefunden. Öffne das Beispielprogramm und pack folgenden Code rein:
Code:
Hat der Wert der Konstante die Länge einer ungeraden Zahl, so wird vorne ein Anführungszeiche (ob einfach, oder doppelt hängt vom benutztem Zeichen in define() ab). Ist der Wert der Länge dagegen gerade, so wird keins angezeigt.
<?php
define('Test', 'a'); // Test = 'a define('Test', 'aa'); // Test = aa define('Test', 'aaa'); // Test = 'aaa define('Test', 'aaaa'); // Test = aaaa //... ?> MfG Pr0g |
Re: PHP Inspection Unit
Und noch ein Fehler ist mir aufgefallen, der sich auf "include" und "require"(_once) bezieht. Steht einer dieser Befehle in der letzten Zeile, bspw. hier:
Code:
kommt es zu einer Zugriffsverletzung. Wenn sie nicht in der letzten Zeile stehen, so wie hier:
<?php
include
Code:
gibt es keine Probleme.
<?php
include //leere Zeile Edit: Bei folgendem Code wird der Text nach $to_require als Includedatei, bzw. require aufgenommen, das sollte ja nicht:
Code:
<?php
$to_require = 'meine_datei.php'; |
Re: PHP Inspection Unit
Hi pr0g,
Danke fürs Fehlersuchen. :) Also der Fehler mit den define()s ist ja äußerst seltsam, sollte aber relativ einfach zu beheben sein - hoffe ich *g*. :) Bei dem Include in der letzten Zeile habe ich lediglich vergessen einmal zu prüfen, ob der String länger ist als 0 Zeichen bevor ich versuche auf ein Zeichen zuzugreifen. :oops: Aber der letzte Fehler hats wohl in sich. Man kann ihn, soweit ich das sehe, einfach durch das Hinzufügen einer Word Boundary (\b) Assertion nach dem "(?<!\$)" beheben, jedoch vergrößerte sich die Parsing-Zeit in meiner Testdatei (ca. 750 KB) von 2,7 Sek auf 3,3 Sek, was ich nicht besonders schön finde. Ich versuche das Problem noch anders in den Griff zu kriegen, aber wenns nicht anders geht, werde ich das wohl so mit dem \b machen. :? Edit: Hab doch noch ne sehr einfache Lösung gefunden. Die Assertion (?<!\$) muss nur so angepasst werden, dass weder ein Alphanummerisches Zeichen, ein Unterstrich, noch ein $ oder ein sonstiges ASCII Zeichen, das einem Variablenbezeichner entsprechen kann, vor dem Match ist. Also einfach: (?<![\$\w\x7f-\xff]) In meinen Versuchen klappt das bisher sehr gut, also denke ich, mache ich das so. Bei dieser Variante gibts auch keine spürbaren Geschwindigkeitseinbußen :) Wenn alles glatt geht, gibts heute eine neue bzw. eine aktualisierte Version. mfG mirage228 |
Re: PHP Inspection Unit
Hi ho,
so die neue Version 2.3 ist fertig. Ich hoffe ich konnte alle Fehler zufriedendstellend behoben :) Die neue Version enthält insgesamt folgende Änderungen:
Der Download befindet sich wie gehabt im ersten Beitrag. mfG mirage228 |
Re: PHP Inspection Unit
Super, habs gerade getestet und scheint alles in Ordnung zu sein ;)
|
Re: PHP Inspection Unit
Hallo,
also zur Zeit für mich das wichtigste ist die Portierung zu .NET da ich die klasse unbedingt in meinen C# Editor benötige und einige probleme beim portieren habe. Würde das gehen oder muss ich mich weiterhin mit den problem einer portierung von Delphi zu C# quälen? cya |
Re: PHP Inspection Unit
Hi,
ich habe bereits eine (fast) vollständige Portierung vorgenommen (der Version 2.1), musste aber feststellen, dass der angeblich PCRE kompatbile RegEx von .NET keine Modifier ?R für Rekursion unterstützt und der ist ja zum Parsing hier für mich sehr wichtig. (Siehe auch mein ![]() Ich müsste dann die Wrapper- und Importunits zur PCRE.dlls umschreiben (P/Invoke), es sei denn Du weisst eine Möglichkeit den Modifier ?R nach .NET zu bringen... mfG mirage228 |
Re: PHP Inspection Unit
Hmm es währe ziemlich umständlich bzw. viel Arbeit Per P/Invoke die komplette Unit nach C# zu bringen.
Ich werde mich diesbezüglich mal informieren und mal schaune wie man das problem lösen kann. cya |
Re: PHP Inspection Unit
Hallo,
heute gibt es eine (kleine ;) ) neue Version - Version 2.4. Es gab u.U. einen Fehler bei den Positionen eines Konstrukts. Die gesamte Liste der Änderungen:
Den Download gibts, wie gehabt, im ersten Beitrag :) mfG mirage228 |
Re: PHP Inspection Unit
Hallo,
nach einer kleinen Pause gibt es nun wieder eine neue Version. Es ist die Version 2.5. :) Folgende Änderungen gibt es:
Den Download gibts im ersten Beitrag ;) mfG mirage228 |
Re: PHP Inspection Unit
:thumb:
|
Re: PHP Inspection Unit
Habs mit ein paar älteren Dateien getestet und funktioniert bei mir alles :thumb:
air |
Re: PHP Inspection Unit
Hallo,
Nach einer kleinen "Pause" ;) gibts nun wieder eine neue Version (2.6). Es handelt sich nur um Fehlerkorrekturen, Features sind in dieser Version keine hinzugekommen. Hier die komplette Liste der Änderungen:
Wenn keine Fehler mehr gefunden werden, dann werde ich die neue Version auf "offiziell" veröffentlich (meine Homepage, Torry.net etc.). :) mfG mirage228 |
Re: PHP Inspection Unit
Lebt das Projekt noch oder gibt es eine aktuelle Alternative?
|
Re: PHP Inspection Unit
Zitat:
mfG mirage228 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz