www.mikrocontroller.net

Forum: PC-Programmierung Defines in PHP


Autor: Tomi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.

Eine Frage zu PHP. Habe angefangen damit zu programmieren.

Gibt es eine Möglichkeit in PHP defines wie in C zu definieren.
D.H. in c:
#define WERT           10

in PHP
?????????????

Viel Wichtiger. Gibt es noch die Möglichkeit des Funktions defines.
In c:
#define  CALCULATE(zahl)      Berechne (Zahl);

in PHP
?????????????

Danke für Eure Hilfe

BYE
tomi

Autor: Roland Praml (pram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://de.php.net/manual/de/function.define.php

aber du bekommst (leider) keine Laufzeitfehler wenn du dich in der 
Konstante "verbuchstabierst".
#define  CALCULATE(zahl)      Berechne (Zahl);
weiß jetzt nicht was das bringen soll aber ich würde:
function CALCULATE(zahl) { return Berechne(Zahl) }
machen. evtl löst aber auch das
http://de.php.net/manual/de/function.create-function.php
dein Problem.

Gruß
Roland

Autor: Tomi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo nochmal.

Danke das habe ich gesucht. Jetzt habe ich aber folgendes problem.
Habe das in PHP

$Func_1 = create_function('','return "Hallo";');

function GetRaum1()
{
  $Raum = $Func_1();
  return $Raum;
}

Wenn ich die Funktion GetRaum1() aufrufe bekomme ich im Browser 
folgendes:
"Fatal error: Call to undefined function Func_1() in 
D:\webmy\rooms_func.php on line xx"

Wie kann ich die definierte Funktion im gleichen file aufrufen?
Wenn ich $Func_1() aus einem anderen skript aufrufe funktioniert es.

Was ist denn anders wenn es im gleichen File steht?

Danke.

BYE
Thomas

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

bei mir sahen die Funktionen mehr so aus:

function GetArtikelPreis ($artikel)
  {

       $preis = 0;
       if ($artikel == 12345)
         {
           $preis = "246,75 Euro;
         }
       return $preis;
  }

Gruß aus Berlin
Michael

Autor: Tomi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soory! Was meinst Du damit???

Autor: Tomi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry! Was meinst Du damit???
Wollte die Funktion von create_function näher erklärt haben!!

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
create_function ist in den allermeisten Fällen Unsinn. Schreib einfach:

function Func_1() {
    return "Hallo";
}

und schon ist die Funktion namens Func_1 bekannt.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso: Es gibt define in PHP. Allerdings funktioniert das ganz anders 
als in C oder C++. In PHP kannst du nur ganz bestimmte primitive Typen 
in defines verwenden (Arrays gehen z.B. nicht). Für feste Zahlenwerte 
oder feste Strings ist define also zu gebrauchen, für alles andere 
eigentlich nicht.

Insbesondere ist es nicht möglich, mit define irgendwelche Funktionen 
oder Makros zu definieren. Dafür gibt es die Syntax 
"Funktions-Definition", die so aussieht:
function Func_1() {
    return "Hallo";
}

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich bin nicht der php-freak,
aber was ist hiermit

$Func_1 = create_function('','return "Hallo";');

function GetRaum1()
{
  $Func_1 = create_function('','return "Hallo";');

  $Raum = $Func_1();
  return $Raum;
}

echo GetRaum1();


Sollte dann auch aus dem eigenen script aufgerufen werden

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vom ursprünglichen Grundsatz her ist PHP eine Server-basierte 
Scriptsprache.
Damit kann sowieso alles nur aus einem Script stammen, wenn das 
durchgelaufen ist, ist die Geschichte zuende.

Gemeinsam genutzte Teile kannst Du zwar auslagern und per .include 
einbinden, mehr aber üblicherweise auch nicht.

Liegt hauptsächlich daran, daß ja auf einem Webserver für jeden Aufruf 
eine Instanz eingerichtet werden muß, die nach durchlaufen des Scriptes 
wieder freigegeben werden muß (würde den Server-Provider wohl ziemlich 
stören, wenn es nicht so wäre. ;)

Aber vermutlich habe ich auch nur nicht so richtig verstanden, worum es 
Dir geht.

Gruß aus Berlin
Michael

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> $Func_1 = create_function('','return "Hallo";');
>
> function GetRaum1()
> {
>   $Func_1 = create_function('','return "Hallo";');
>
>   $Raum = $Func_1();
>   return $Raum;
> }
>
> echo GetRaum1();

Geht's noch umständlicher? ;-)


Mal davon abgesehen, dass du $Func_1 jetzt in zwei verschiedenen Scopes 
definiert hast: create_function ist für sowas doch total unsinnig. Was 
spricht gegen eine simple Funktionsdefinition der folgenden Art?

function Func_1() {
    return "Hallo";
}

Solche Funktionsdefinitionen kann man sogar lokal machen.
Wenn man unbedingt möchte, kann man also schreiben:

function GetRaum1()
{
  function Func_1() {
      return "Hallo";
  }

  $Raum = Func_1();
  return $Raum;
}

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Chris,
sorry, ich meinte eigentlich auch nur die lokale Definition.
Die da drüber ist mir beim Kopieren mit rein gekommen.

Gruß Jörg

Autor: global (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
global

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
$Func_1 = create_function('','return "Hallo";');

function GetRaum1()
{
  gloabl $Func_1;
  $Raum = $Func_1();
  return $Raum;
}

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.