Bonjour,
Je suis en train de réaliser un portail que je souhaite mettre à disposition de mes collègues de travail.
La partie installation sur le serveur se fera obligatoirement par un administateur réseau qui :
Pour le reste je souhaite que ça soit mes collégues qui puissent par eux-même renseigner les informations qui restent :
Je cherche une technique simple pour la mise en oeuvre, vu le peu d'information je pense que c'est inutile de créer une table dans ma base de données juste pour ça.
Si vous avez des idées toutes simples je suis preneur.
Bonjour,
Tu peux utiliser plutôt la même library que laravel : https://github.com/vlucas/phpdotenv
ou simplement un système d'include classique.
//config.php
<?php
/**
* A noter l'importance du return.
**/
return [
'foo' => 'bar'
];
et ensuite on le récupère.
//SomeFile.php
<?php
// [...]
$config = include('path/to/config.php');
// [...]
Tu auras le tableaux de configuration dans ta variable $config
Bonjour, pour ma part je pense qu'il vaut mieux créer une table pour car si tu te retrouve avec d'autres paramètre à rajouter tu pourra le faire plus simplement !
Je vais essayer deux solutions :
J'ai développé à partir de la formation POO du site.
Je viens de me lancer dans une autre technique qui me semble plus "adapatable".
J'ai créé un fichier config.ini.php qui contient les paramètres du portail :
/*
[portail_info]
PORTAIL_NAME = "MonPortail"
PORTAIL_DES = "Portail de l'atelier ..."
[atelier_info]
AT_CODE = "MYE"
AT_MATERIEL="MOTO"
AT_LIGNE="MONTAGE"
*/
Je récupére les informations dans mon fichier de configuration à partir d'une class ConfigApp :
class ConfigApp
{
private static $_config;
function __construct()
{
self::$_config = parse_ini_file(ROOT.'/app/config/config.ini.php');
}
public static function set($key, $val)
{
// A dév
}
public static function get($param=null)
{
return self::$_config[$param] ? self::$_config[$param] : null;
}
}
Du coup, je vais piocher dans mon fichier de configuration directement avec le code ConfigApp::get('AT_CODE')
J'instancie la class ConfigApp dans le loader de mon App.
J'ai regardé pas mal de forum, je pense que c'est le plus simple.
Vous en pensez quoi ? Je pense que c'est quand même perfectible, je ne suis pas complétement convaincu sur ma mise en oeuvre...
Merci Yanis-git.
Dans un premier temps je vais rester sur le bon vieux fichier config.php à inclure.
Si le besoin s'en ressent sur le long terme je passerai plutot par une class qui me permettra plus de souplesse.
Je pense aussi, rien ne t'empêche de faire une Class pour encapsuler tout ça. Basé sur ton Exemple ci desssus.
<?php
class Config
{
protected $config;
protected static $_instance = null;
public function getInstance(){
if(self::$_instance == null){
self::$_instance = new Config();
}
return self::$_instance;
}
public function __construct(){
$this->$config = parse_ini_file(ROOT.'/app/config/config.ini.php');
//OU
//$this->$config = include(ROOT.'/app/config/config.ini.php');
}
public function has($key){
return isset($this->$config[$key]);
}
public static function get($param){
if(!isset($this->config[$param])){
throw new Exception("config key : $param must be defined", 1);
}
return $this->config[$param];
}
}
//Usage
$foo = Config::getInstance()->get('foo'); // Return $foo|throw Exception.
// Usage with default value.
$foo = 'default';
if(Config::getInstance()->has('foo')){
$foo = Config::getInstance()->get('foo');
}
Ici j'ai ajouté un Singleton (CF : methode : getInstance()) car tu souhaites ne parse qu'une seul fois ton fichier de configuration. Mais tu voudras le consulter plusieurs fois. C'est l'exemple typique d'un Singleton.
$param
de la méthode get. Il a, celon moi, aucun sens, on ne voudra jamais récuperer le paramètre null. De plus cela soulevera une fatal error de PHP. l'index null ne peut éxister.Dans l'espoir que ça a put te guider.
Du coup j'ai refait un petit visionnage de la formation : https://www.grafikart.fr/formations/programmation-objet-php/singleton, on a tendance à regarder toutes les vidéos d'un coup et à la fin on zappe pleins de techniques.
En effet, ca m'aide bien, plus j'avance plus je me rends compte que j'ai besoin de paramètres qui spécifiques à chaque portail et qui ne changeront jamais, l'utilisation d'un fichier de config est pratique.
L'utilisation d'une class est beaucoup plus propre dans l'écriture du code.
Pour rester simple dans la présentation du code j'avais mis le null par solution de facilitée. Enfin va falloir que je travaille ca aussi...
Merci encore.