Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

PHP Sourcecode incl. Code aus includes ausgeben?

Frage Entwicklung PHP

Mitglied: mfromh

mfromh (Level 1) - Jetzt verbinden

28.06.2010, aktualisiert 01.07.2010, 5620 Aufrufe, 7 Kommentare

include()- / require()-Statements durch deren Code ersetzen

Hallo Forum,

kann ich mir PHP-Code so anzeigen lassen, dass statt include() oder require() der Sourcecode angezeigt wird, der an dieser Stelle inkludiert wird? M.a.W. möchte ich die vom Precompiler zusammengesetzte Datei ausgeben, bevor sie durch den Compiler interpretiert wird.

Kennt jemand von Euch einen Weg?

Danke im voraus.

--
BFN
MFromH
Mitglied: maretz
28.06.2010 um 14:22 Uhr
Moin,

das wird so nicht gehen - da PHP ne Script-Sprache ist die nicht durch nen (Pre-)Compiler sondern nur durch einen Interpreter läuft...

Da wäre mir höchstens der manuelle Weg bekannt... aber ganz ehrlich: Alles andere wäre auch Sinnfrei. Denn du hast ja immer nen paar (unsichtbare) Includes - nämlich deine PHP.ini die ausgewertet wird usw. (sonst wüsste dein Script ja nicht worauf es basiert). Und dann kommt da noch der Teil vom Webserver zu der das ganze PHP erstmal lädt (ohne das wüsste dein Webserver ja nicht was er z.B. mit dem Befehl "phpinfo();" anfangen soll...)
Bitte warten ..
Mitglied: dog
28.06.2010 um 14:28 Uhr
readfile()

Nein, so etwas gibt es nicht.
Das tiefste an das man aus PHP selbst rankommt ist __halt_compiler()

Vielleicht reicht dir aber schon ein Xdebug oder APD und das Setzen von Breakpoints und Überwachen mit gdb?

Oder inclued http://www.php.net/manual/de/intro.inclued.php ?
Bitte warten ..
Mitglied: mfromh
28.06.2010 um 16:32 Uhr
Danke für Eure Antworten.

Mich wundert eigentlich, dass mein Wunsch so exotisch ist, denn die Fragestellung, an welcher Stelle welche Variable / Function definiert bzw. verändert wird, ist ja bei einem PHP mit einigen incudes() doch gar nicht mal so leicht zu beantworten. Und letztlich kann ja auch ein entsprechendes Utility nicht sooo schwer zu coden sein ...

--
BFN
Michael
Bitte warten ..
Mitglied: Arano
29.06.2010 um 00:22 Uhr
Nabend

Entsprechende Funktionen gibt es doch:
Damit sollte es möglich sein es in Erfahrung zu bringen

~Arano


EDIT:
Ähm ja.... hätte richtig lesen sollen, da helfen die ja auch nicht... sorry !
Bitte warten ..
Mitglied: dog
29.06.2010 um 00:44 Uhr
Wie gesagt, für sowas setzt man Breakpoints und überwacht die Ausführung mit einem Debugger
Bitte warten ..
Mitglied: maretz
30.06.2010 um 00:02 Uhr
Moin,

naja, die frage ist: Warum sollte man das tun? Was bringt es mir das ich z.B. beim Include ITX.php dann erstmal zig Zeilen Code rausgeballert bekomme die mich gar nicht intressieren?

Was intressiert dich denn beim Debuggen deines Codes? Normal ja nur DEINE Variablen und der Zustand DEINES Programmes. Und nicht alles was du so ggf. inkludiert hast. Und den Zustand deines Programmes kannst du dir ja relativ simpel anzeigen lassen...

Nur mal zum Verständnis: Nehmen wir an du würdest ein Programm bauen welches den Code an der Stelle komplett einbindet.

In deinem Code steht
include itx.php
-> wird ersetzt durch den Code der in der itx.php steht. Soweit so gut.
Leider findest du in der itx.php dann sowas wie
require class.db.inc
require localFunctions.inc
require sonderfunktion.php

ok - also rein mit dem ganzen kram.
In der sonderfunktion.php findest du aber wieder ein
require class.db.inc
-> da man hier die DB-Funktionen in einer Klasse ausgelagert hat (nur mal angenommen!).

Na - merkst du wie lang der Code jetzt werden würde (denn die class.db.inc könnte ja ggf. 1000ende Zeilen enthalten - du willst aber in der sonderfunktionen.php nur ganz bestimmte funktionen davon nutzen!). Das wäre schonmal kontraproduktiv -> du hast keine Chance mehr den Code zu lesen...

Noch schlimmer wird es wenn du im Bereich Objektorientierung bist. Hier hast du z.B. eine Klasse "Auto" (das übliche halt). Du hast jetzt ein Programm welches dir die Anzahl der Türen zurückgibt - enthält logischerweise ein "include auto.inc". Ein anderer Programmteil gibt dir zurück wieviele Reifen das Auto hat - somit enthält auch der Teil ein "include auto.inc". Innerhalb der Auto.inc hättest du aber z.B. noch eine DB-Funktion - also wird hier schonmal die "db.class.inc" immer inkludiert... Du hättest also ein relativ simples Programm in kurzer Zeit extrem aufgepustet wenn du dir statt des include immer den Programm-Text reinlädst. Und ein Debuggen wäre nicht mehr möglich -> du hättest ja immer den kompletten Text statt des Includes. Aber was dein Programmteil "Anzahl der Türen" mit dem Programmcode zur Rückgabe der Reifenanzahl soll kannst du vermutlich nicht sagen - trotzdem würde der auch in dem Programmteil stehen und eher verwirren...

Also -> hat nen guten Grund das man das include so belässt wie es ist... ;)
Bitte warten ..
Mitglied: mfromh
30.06.2010 um 06:50 Uhr
OK, Ihr habt mich überzeugt

Danke.

--
BFN
Michael
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (29)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...