Externes PHP Skript einbinden

Programmierung der FHZ-Zentralen mit contronics homeputer Standard / homeputer Studio & WEB-Server

Moderator: Co-Administratoren

Antworten
Benutzeravatar
over.unity
Beiträge: 348
Registriert: 04.01.2007, 10:20
Wohnort: Frankreich - Elsass

Externes PHP Skript einbinden

Beitrag von over.unity » 29.01.2007, 21:46

Hallo zusammen

Eigendlich möchte ich gerne mein eigenes php skript einbinden. Nur der Editor störte mich unheimlich, da er keine Zeileneinschübe ermöglicht, und das Parsen des php mal funktionierte mal nicht.

Ich habe mir nun ein Makro geschrieben, welches das php programmieren vereinfacht. Dort funktionieren auch die includes und alle anderen Funktionen.


Das sieht ganz einfach folgendermassen aus:

Code: Alles auswählen

<?
$Testobjekt = "Hallo initialisierung";
$parsefile = file_get_contents("F:\haussteuerung\test.php");
eval("?>".$parsefile."<?")
?>
Das Testobjekt ist das Objekt in welchem dieses Makro hinheinkommt. Das Eval funktioniert leider nur mit dieser Zeile. Warum weiss ich nicht, aber eben, die Software ist bugig.... So sollte aber alles gehen.

Viel spass!
-
over.unity

Gross denken, klein beginnen

gwanjek
Beiträge: 76
Registriert: 18.12.2006, 17:32
Wohnort: Ostseeküste

Beitrag von gwanjek » 30.01.2007, 10:20

Hallo,
hochinteressanter Ansatz.....

Wie parametrisierst du deine Bibliotheksfunktionen? als Kommandozeilen-Argumente hinterm Dateinamen?

Kannst du aus dem per eval gestarteten Prozess heraus noch sauber mit den Makros und deren Variablen spielen? Oder nutzt du das nur für sekundäres?

Gruß Gerd

Benutzeravatar
over.unity
Beiträge: 348
Registriert: 04.01.2007, 10:20
Wohnort: Frankreich - Elsass

Beitrag von over.unity » 30.01.2007, 11:24

Also komischerweise gings gestern nachdem ich das geposted habe nicht mehr. Ich denke ich werde heute abend nochmals hinter die Bücher gehen.
gwanjek hat geschrieben:Hallo,
Wie parametrisierst du deine Bibliotheksfunktionen? als Kommandozeilen-Argumente hinterm Dateinamen?
Da weiss ich nicht was Du damit meinst... Wenn Du damit mein FrameWork meinst, dann kann ich Dir noch keine Antwort dazu geben, da ich das FrameWork erst aufbaue.
gwanjek hat geschrieben:Kannst du aus dem per eval gestarteten Prozess heraus noch sauber mit den Makros und deren Variablen spielen? Oder nutzt du das nur für sekundäres?
Gruß Gerd

Nein nein, das funktioniert! - zumindest hat es das gestern..... - Du kannst direkt die Variablen ansprechen. Ich denke aber dass ich den threat zu früh aufgemacht habe, ich muss nochmals alles testen...

gruss
-
over.unity

Gross denken, klein beginnen

husnock
Beiträge: 12
Registriert: 30.07.2006, 09:40
Wohnort: Berlin

Beitrag von husnock » 02.02.2007, 20:24

das hoert sich kompliziert an, aber warum geht eigentlich INCLUDE nicht, habs gerade versucht, scheint nicht zu funzen???

Benutzeravatar
over.unity
Beiträge: 348
Registriert: 04.01.2007, 10:20
Wohnort: Frankreich - Elsass

Beitrag von over.unity » 03.02.2007, 11:43

das scheint daran zu liegen, dass gewisse Funktionen ausgeschaltet wurden. Es gibt noch mehr, aber ich habe momemntan noch nicht so den Durchblick.

Durch das es mal wieder Wochenende ist, habe ich wieder Zeit zu ausprobieren ... ;-)
-
over.unity

Gross denken, klein beginnen

gwanjek
Beiträge: 76
Registriert: 18.12.2006, 17:32
Wohnort: Ostseeküste

Beitrag von gwanjek » 21.02.2007, 00:49

over.unity hat geschrieben:
gwanjek hat geschrieben:Hallo,
Wie parametrisierst du deine Bibliotheksfunktionen? als Kommandozeilen-Argumente hinterm Dateinamen?
Da weiss ich nicht was Du damit meinst... Wenn Du damit mein FrameWork meinst, dann kann ich Dir noch keine Antwort dazu geben, da ich das FrameWork erst aufbaue.
Ich meine damit den Parameter "x" im SIN(x), also man wird ja wohl nicht je eine extra Funktion aufbauen für sin(30°), eine für sin(45°) usw..... bzw. hier: z.B. jeweils gesondert als externe PHP-Funktion ausgelagerte Funktionen "MaximalsollTempAbweichung(Wohnzimmer)" gegenüber "MaximalsollTempAbweichung(Kinderzimmer)".

"Wohnzimmer" und "Kinderzimmer" wären dann die Parameter der einzig vorhandenen externen Funktion "MaximalsollTempAbweichung(zimmer)", die man ja wohl nicht für jeden Raum nochmal neu schreiben will.

Üblicherweise werden die auch hier im PHP als Function-Parameter per dem Funktionsnamen in Klammern nachgesetzte Werte übergeben, also "funktion (para1, para2, ...);"

Wie würdest du sowas in deiner eval-Methode übergeben? Oder machst du das gar nicht? Denke aber schon, das die Makros der Objekte, aus denen heraus du das aufrufst, dann ja auch mitteilen müssen, dass genau sie das aufrufen, oder ihre spezifischen Werte mitgeben wollen um die dann zu verarbeiten, oder?

==========
Zur INCLUDE: Contronics sagt doch, das PHP wäre komplett und unverändert, wie also kann das dann (ohne Bug) sein?

Ich habe in anderen Threads nachgewiesen, daß eine gewisse PHP-Code-Größe das System zum Absturz bringt, wobei völlig egal ist, welcher (korrekte) Code hinzukommt, um diese Grenze zu überschreiten. Selbst hinzugefügte Kommentare reichen da aus.

Include fügt ja zur Laufzeit nur Code in das Script ein, vergrößert es also.... habt ihr das mal mit hinreichend kleinen Codeschnipseln im Stamm-Script und im Include versucht? Vielleicht ist das ja der selbe Effekt? Dann dürften das dann "plötzlich doch funktionieren", wenn beider Code zusammen nur klein genug ist im Umfang.

Gruß Gerd

Benutzeravatar
over.unity
Beiträge: 348
Registriert: 04.01.2007, 10:20
Wohnort: Frankreich - Elsass

Beitrag von over.unity » 22.02.2007, 08:00

Also ich habe mit meiner Methode keine Probleme. Ich hab mir nun ein ganzes FrameWork aufgebaut, wo ich alle Variablen steuere. Das Teil hat nun über 10 php Files die "included" werden (Nach dem Eval geht das).

Ich muss aber mit meiner Methode die Variablen initialisieren:

$meinSchalter = $meinSchalter
.
.
eval(Hier mein Skript)


-------

Nach einer bestimmten Grösse der oben aufgeführten Variablen friert das System ein....also ich denke Dein beschriebenes Problem!


Wenn ich mal Zeit habe, poste ich mein Framework. es hat folgende Funktionen:
- Session
- ObjectTranfer
- Timefunction (zur gegebener Zeit ein Funktion aufrufen)
- Automatischer transfer der Objektzustände


gruss andi
-
over.unity

Gross denken, klein beginnen

Antworten

Zurück zu „homeputer Studio / Standard: Programmierbeispiele“