Waarom lukt het echoën van een php-functie niet?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Frank Conijn

Frank Conijn

04/03/2013 16:55:18
Quote Anchor link
Ik wil het liefst een functie inladen vanuit een ander php-bestand d.m.v. echoën. Ik heb de volgende testopstelling gemaakt:
include-test.php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php include("include.php"); ?>
<!DOCTYPE HTML>
<html>
<head>
    <title>Demo</title>
    <meta charset="windows-1252" />
</head>
<body>
<?php echo $function ?>
</body>
</html>

en include.php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$function
= '
    <?php
        if (!isset($_GET["p"]))
        {echo "Gelukt!";}
    ?>
'
;
?>


Het lukt echter alleen als ik het zo doe:

include-test.php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<!DOCTYPE HTML>
<html>
<head>
    <title>Demo</title>
    <meta charset="windows-1252" />
</head>
<body>
<?php include("include.php"); ?>
</body>
</html>

en include.php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
    <?php
        if (!isset($_GET["p"]))
        {
echo "Gelukt!";}
    ?>


Waarom krijg ik bij de eerste testopstelling geen 'Gelukt!' als ik include-test.php open?
Gewijzigd op 04/03/2013 16:56:41 door Frank Conijn
 
PHP hulp

PHP hulp

24/04/2024 20:24:19
 
Eddy E

Eddy E

04/03/2013 16:57:48
Quote Anchor link
Omdat je daar de PHP-code wilt echoén, en dat werkt niet.
Ik denk dat jij dit wilt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
include("include.php");
?>

<!DOCTYPE HTML>
<html>
<head>
    <title>Demo</title>
    <meta charset="windows-1252" />
</head>
<body>
<?php
echo lukthet();
?>

</body>
</html>


En dan dit als include.php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
function lukthet()
 {

 global $_GET;
 if(isset($_GET['p']))
     {

    return 'Gelukt!';
    }


 return 'Niet gelukt';
 }

?>


Ik heb dus nu een functie met de naam lukthet gemaakt.
Die kijkt zelf naar $_GET (die hoef je dus niet door te geven!) of die er is of niet.
En zo ja: dan GEEFT hij (return) hij wat tekst terug.
Die echo je in je code zelf (niet in de functie).

Probeer even exact te snappen wat het doet en hoe het werkt.
Vragen? Stel ze gerust.
Gewijzigd op 04/03/2013 16:59:18 door Eddy E
 
- SanThe -

- SanThe -

04/03/2013 17:02:33
Quote Anchor link
Eddy E op 04/03/2013 16:57:48:
global $_GET;


$_GET is een superglobal dus die hoef je nooit global te maken. Dat is ie al.
 
Frank Conijn

Frank Conijn

04/03/2013 17:34:51
Quote Anchor link
Ha die Zunflappie! Ik ken je nog van Webmastercity. :)

Het is me in zoverre duidelijk dat ik alles wat ik nodig heb me duidelijk is. En met de standaard include-functie kom ik er ook. Alleen begrijp ik niet goed waarom mijn echoën niet lukt en het jouwe wel. Want jij echoot toch ook een functie?

Dat jouw functie ergens anders uitgevoerd wordt en dat daarna het resultaat ervan teruggegeven wordt is me duidelijk, maar het is me niet helemaal duidelijk waarom ik niet gewoon een functie in zijn geheel kan echoën. Wat is het verschil tussen echoën en includeren, in deze? Want daar komt het op neer.
 
Frank Conijn

Frank Conijn

22/03/2013 10:58:46
Quote Anchor link
Ik vond uiteindelijk zelfs nog drie manieren om (het resultaat van) een PHP-functie over te brengen naar/te gebruiken in een ander bestand, naast de manier al beschreven in mijn eerste bericht:

php-transfer.php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php require("php-transfer-required.php"); ?>
<?php echo $part_1 ?>
    <title>Demo</title>
    <style>
    html.normal {
        background: yellow;
    }
    html.touch {
        background: red;
    }
    body {
        margin: 50px;
        padding: 50px;
        color: white;
    }
    body.normal {
        background: green;
    }
    body.touch {
        background: black;
    }
    </style>
</head>
    <body class="<?php echo detectMachineType() ?>">
        <p>Er zijn dus maar liefst nog drie manieren
        om (het resultaat van) een PHP-functie over
        te brengen naar/te gebruiken in een ander bestand
        (cookie-waarde: <?php echo $cookie_waarde ?>)...</p>
    </body>
</html>

php-transfer-required.php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
function detectMachineType() {
    if(isset($_COOKIE['machineType']))
        {
$cookie_val = $_COOKIE['machineType']; }
    else
        { $cookie_val = "normal"; }
    return $cookie_val;
}


$cookie_waarde = detectMachineType(); /* $cookie_val laten
echoën levert een undefined-variable-melding op */


$part_1 =
'<!DOCTYPE html>
<html class="'
.detectMachineType().'">
<head>
    <meta charset="utf-8">
'

?>
Gewijzigd op 22/03/2013 11:18:56 door Frank Conijn
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.