staging.inyokaproject.org

php API Funktionen verstehen ...

Status: Ungelöst | Ubuntu-Version: Ubuntu 22.04 (Jammy Jellyfish)
Antworten |

tomovic

Avatar von tomovic

Anmeldungsdatum:
25. August 2013

Beiträge: 205

hallo, ich fuchs schon lange was. Die meisten Menschen würde jetzt sagen, hast du nichts besseres zu tun und das zurecht. ☺

Es gibt wunderschöne php Funktionen, wie z.b.

echo json_encode($data)

Ich will einfach nur wissen, wie die Funktion mit dem Parameter verarbeitet wird.

Ich habe den Quellcode von PHP herunter geladen. Im Terminal habe ich nach dem Wort json_encode im ganzen /php-Quellcode Verzeichnis gesucht. Es wurden Dateien gefunden: - .phpt wo die Funktion getestet wird - .o Objekt Dateien.

Die Funktion muss es doch Irgendwo weiterverwarbeitet werden. Mache ich einen Denkfehler? Wie soll ich Vorgehen.

ChickenLipsRfun2eat Team-Icon

Supporter
Avatar von ChickenLipsRfun2eat

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12070

Hallo!

Richtig fragen als Leitfaden benutzen.

Du hast also Quellcode von PHP und json.c entdeckt? ⇨ php/php-src/blob/master/ext/json/json.c. Da findest du irgendo die Funktionsdefinition (sind mehrere). Die Deklaration und zugehörigen Variablen, Präprozessoranweisungen, etc. sind in der .h und in allen per #include eingebundenen Dateien zu suchen.

Also was genau willst du nun wissen und bei was willst du mit welchem Ziel vorgehen?

tomovic

(Themenstarter)
Avatar von tomovic

Anmeldungsdatum:
25. August 2013

Beiträge: 205

ChickenLipsRfun2eat schrieb:

Also was genau willst du nun wissen und bei was willst du mit welchem Ziel vorgehen?

––> php API Funktionen verstehen ...←––

Vielen vielen Dank,

1.Frage: Wie bist du auf die https://github.com/php/php-src/blob/master/ext/json/json.c Datei gekommen?

2.Frage: Zeile 215 –> PHP_FUNCTION(json_encode) Werden hier die Parameter übernommen?

ChickenLipsRfun2eat Team-Icon

Supporter
Avatar von ChickenLipsRfun2eat

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12070

tomovic schrieb:

––> php API Funktionen verstehen ...←––

Das ist keine Frage. Du musst schon konkrete Fragen stellen. Wissen kann dir hier keiner ins Hirn pflanzen 😉

1.Frage: Wie bist du auf die https://github.com/php/php-src/blob/master/ext/json/json.c Datei gekommen?

https://duckduckgo.com → Da eintippen: „php source json_encode“ oder gleich „php source json_encode.c“.

2.Frage: Zeile 215 –> PHP_FUNCTION(json_encode) Werden hier die Parameter übernommen?

PHP_FUNCTION müsstest du mal gucken, was das macht. Vermutlich ist das irgend ein Wrapper, der dann im Bedarfsfall andere Funktionen mit Argumenten aufruft. Ich möchte mir den Quellcode nun nicht so ausführlich angucken.

Prinzipiell solltest du zunächst mal C lernen, wie im anderen Thema bereits geschrieben. C, configure/make/install, evtl. cmake. Wenn du damit klarkommst, dir auch Präprozessorkram mit gcc ersetzen lassen kannst, etc. dann kannst du dir die meisten Fragen selbst beantworten.

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6234

Die meisten Menschen würde jetzt sagen, hast du nichts besseres zu tun und das zurecht. ☺

Ja, das kenne ich, habe ich auch schon zu hören bekommen. Aber ist dir klar, worauf du dich da einlässt? Fremden Quellcode zu interpretieren ist nicht immer einfach.

Es hilft aber, wenn man weiß, was die Funktion machen soll. Dazu wäre die entsprechende Dokumentation hilfreich. Aber auch damit ist oft eine Einarbeitungszeit erforderlich. Das dauert länger als einen Tag (jedenfalls bei so großen Projekten).

tomovic

(Themenstarter)
Avatar von tomovic

Anmeldungsdatum:
25. August 2013

Beiträge: 205

vielen Dank an alle. Eure infos sind echt Gold wert. ich wurde bei mehreren Funktionen bei php fundig.Bis auf eine.

1.Frage: zu mysqli_real_escape_string() finde ich keinen Quellcode. 2.Frage: Wenn ich eine .c Datei verändere. z.B. printf hinzufüge oder ich baue eine Funktion ein wie "lösche das erstes Zeichen"... Muss ich jedes mal build,configure, make komplett durchlaufen lassen? Hab mal was gehört von ein und aus checken, ist aber schon lange her. 3.Frage: Wenn ich mit php einen Comport ansteuere, dann sollte er sich so verhalten, als würde ich ihn mit einer separaten Datei ausführen? Stimmt das?

ChickenLipsRfun2eat Team-Icon

Supporter
Avatar von ChickenLipsRfun2eat

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12070

tomovic schrieb:

vielen Dank an alle. Eure infos sind echt Gold wert. ich wurde bei mehreren Funktionen bei php fundig.Bis auf eine.

1.Frage: zu mysqli_real_escape_string() finde ich keinen Quellcode.

Den kannst du auch so nicht finden, da PHP nur einen Wrapper bietet. Die eigentliche Funktionsdefinition ist Teil von MySQL. Zumindest scheint das so, habe folgende Links grob überflogen — wie gesagt, ich will das nicht alles wissen 😉

2.Frage: Wenn ich eine .c Datei verändere. z.B. printf hinzufüge oder ich baue eine Funktion ein wie "lösche das erstes Zeichen"... Muss ich jedes mal build,configure, make komplett durchlaufen lassen?

Jaein. Wenn du printf einfügst, reicht ein make TARGET aus. Nur wenn du am build oder der Konfiguration was änderst, musst du das berücksichtigen. Dritter Hinweis auf: Lern die Basics von configure und make. Du musst das nicht alles schreiben können oder wissen, aber anwenden.

Hab mal was gehört von ein und aus checken, ist aber schon lange her.

Ja. War früher im Hotel so. Glaube heute auch noch 😉

3.Frage: Wenn ich mit php einen Comport ansteuere, dann sollte er sich so verhalten, als würde ich ihn mit einer separaten Datei ausführen? Stimmt das?

Ich verstehe die Frage nicht. Ein comport ist eine Datei in /dev, wenn es einer echter ist unter /dev/serial, ansonsten sowas wie /dev/ttyUSB (oft bei sowas wie Arduinos in Verwendung). Diese Dateien sind nicht ausführbar, aber les- und/oder beschreibbar.

Antworten |