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 $fruits$index];
}

}
?>

3 réponses


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
Auteur

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

ramses
Auteur

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->fruits$index])){
return $this->fruits$index];
}
return false;
}

}
?>

Merci à tous.