Forum: PC-Programmierung Defines in PHP


von Tomi (Gast)


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

von Roland P. (pram)


Lesenswert?

http://de.php.net/manual/de/function.define.php

aber du bekommst (leider) keine Laufzeitfehler wenn du dich in der 
Konstante "verbuchstabierst".
1
#define  CALCULATE(zahl)      Berechne (Zahl);
weiß jetzt nicht was das bringen soll aber ich würde:
1
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

von Tomi (Gast)


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

von Michael U. (amiga)


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

von Tomi (Gast)


Lesenswert?

Soory! Was meinst Du damit???

von Tomi (Gast)


Lesenswert?

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

von Chris (Gast)


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.

von Chris (Gast)


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";
}

von Gast (Gast)


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

von Michael U. (amiga)


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

von Chris (Gast)


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;
}

von Gast (Gast)


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

von global (Gast)


Lesenswert?

global

von Gast (Gast)


Lesenswert?

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

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.