Jak zavolat funkci v proměnné

JJan

Jak zavolat funkci v proměnné
« kdy: 03. 01. 2018, 21:40:12 »
Ahoj, dělá tady prosím někdo v PHP?
Mám dva soubory
soubor a.php
$a = function () {
return 'text';
};

soubor b.php
include('a.php');
$array['a'];
foreach ( $array as $value )
{
echo $a (); // tohle funkci nezavolá
unset($a); // a tohle funkci nezruší
}

Můžete mi prosím někdo poradit opravu?


Kit

Re:Jak zavolat funkci v proměnné
« Odpověď #1 kdy: 03. 01. 2018, 22:08:28 »
Mně to po opravě fatálních chyb funguje normálně

a.php:
<?php
$a
= function () {
   return
'text';
};


b.php:
<?php
include 'a.php';
$array = ['a'];
foreach (
$array as $value) {
   echo
$a();
   unset(
$a);
}

JJan

Re:Jak zavolat funkci v proměnné
« Odpověď #2 kdy: 03. 01. 2018, 22:15:32 »
Jasně, jelikož jsem ten kód napsal tak jak funguje, oprava
<?php
include 'a.php';
$array = ['a'];
foreach (
$array as $value) {
   echo
$value();
   unset(
$value);
}

mmm

Re:Jak zavolat funkci v proměnné
« Odpověď #3 kdy: 03. 01. 2018, 22:24:59 »

include 'a.php';
$array = ['a'];
foreach ($array as $value) {
    echo ${$value}();
    unset(${$value});
}


nebo

include 'a.php';
$array = [$a];
foreach ($array as $value) {
    echo $value();
    unset($value);
}

Kit

Re:Jak zavolat funkci v proměnné
« Odpověď #4 kdy: 03. 01. 2018, 22:25:45 »
<?php
include 'a.php';
$array = ['a'];
foreach (
$array as $value) {
   
$a = $$value;
   echo
$a();
}


Ovšem do toho pole bych dal místo stringu raději tu funkci.


Kit

Re:Jak zavolat funkci v proměnné
« Odpověď #5 kdy: 03. 01. 2018, 22:35:09 »
S funkcí v poli to vypadá přece jen jednodušeji a lépe se s tím pracuje:

<?php
include 'a.php';
$array = [$a];
foreach (
$array as $value) {
   echo
$value();
}

Hm

Re:Jak zavolat funkci v proměnné
« Odpověď #6 kdy: 03. 01. 2018, 22:35:56 »
Pretty Home Porn!

JJan

Re:Jak zavolat funkci v proměnné
« Odpověď #7 kdy: 03. 01. 2018, 22:41:17 »
Citace od: Kit kdy 03. 01. 2018, 22:35:09
S funkcí v poli to vypadá přece jen jednodušeji a lépe se s tím pracuje:

<?php
include 'a.php';
$array = [$a];
foreach (
$array as $value) {
   echo
$value();
}


To include patří samozřejmě do toho cyklu...
<?php
$array
= ['a'];
foreach (
$array as $value) {
   include
$value . '.php';
   
$a = $$value;
   echo
$a();
}

Kit

Re:Jak zavolat funkci v proměnné
« Odpověď #8 kdy: 03. 01. 2018, 22:48:35 »
Už začínám v té zvrácenosti tušit logiku. Nechceš raději přesedlat na OOP? Tam je to vyřešené lépe.