Comment accédé à une variable depuis un fichier PHP externe

Par ramses, il y a 15 ans


Comment accédé à une variable d’un fichier PHP externe pour être utilisé dans une méthode d’un composant pur cake

Le problème :

Je souhaite que le composant cake charge un fichier PHP ou il est déclaré, une variable de type tableau voir ci-dessous source « fruits.php » jusqu’ici pas de problème si je fais un debug($fruits) juste avant la déclaration de la classe, je trouve le tableau $fruits.

Mais dans ma classe et pour la méthode fruit voir source du composant cake « fruits.php » cake me retourne le message suivant : Notice (8): Undefined variable: fruits [APP/controllers/components/fruit.php, line 09]

J’ai essayé avec la méthode App::import("Vendor", "fruits", array("file"=>"fruits".DS."fruits.php"));

Mais sans succès.

Je remercie tous les acteurs de Grafikart.fr qui m'apporteront une explication et sa solution.

source fruits.php :

<?php

$fruits = array(
"01" => "Bannane",
"02" => "Orange",
"03" => "Pamplemousse",
"04" => "Fraise",
"05" => "Pomme",
"06" => "Raisin",
"07" => "Franboise");

?>

Source du composant fruit.php:

<?php

define ("TEST_DIR", ROOT.DS.APP_DIR.DS."controllers".DS."components".DS."Fruits".DS);
include(TEST_DIR. "fruits.php");

class FruitComponent extends Object {

function fruit(index) { return $fruitsindex];
}

}
?>

3 réponses

slyvaan, il y a 15 ans

Bonsoir,

Peut-être en ajoutant un global $fruit dans ta fonction.

<?php
define ("TEST_DIR", ROOT.DS.APP_DIR.DS."controllers".DS."components".DS."Fruits".DS);
include(TEST_DIR. "fruits.php");
class FruitComponent extends Object {
    function fruit($index) {
        global $fruit;
        return $fruits$index];
    }
}
?>
ramses, il y a 15 ans

Merci pour cette solution, mais hélas, elle ne retourne rien.
J'avais essayé avec GLOBALfruits] mais ça ne fonctionnait pas non plus.

ramses, il y a 15 ans

La solution a été trouvée par scarabe du forum français de cakephp que je remercie.

Voici la solution pour les personnes qui sont intéressées par le sujet.

<?php

class FruitComponent extends Object {

var $fruits = null;

function fruit(index) { if (is\_null(this->fruits)){
include(dirname(__FILE__).DS.'fruits.php');
this->fruits = $fruits; } if (isset(this->fruitsindex])){ return $this->fruitsindex];
}
return false;
}

}
?>

Merci à tous.