Yii Framework Forum: Parametri Di Yii Su Macchine Diverse - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Parametri Di Yii Su Macchine Diverse Rate Topic: -----

#1 User is offline   emafer 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 182
  • Joined: 23-February 12
  • Location:Amandola

Posted 04 February 2014 - 05:55 PM

Dunque,
ho spesso condiviso con altri i progetti, tramite github.
Il che significa che il mio main.php dentro config doveva essere cambiato a ogni pull o da me o da altri...

Al che ho trovato questa soluzione, ditemi voi se ce n'era una più semplice (magari nativa)...

Genero i parametri da un file di testo, tramite una classe

class Configurami {
 
       protected $config = false;
       protected $filename;
 
       public function __construct($fileName = 'params')
       {
           $this->filename = $fileName;
           $this->elaboraParametri();
       }
 
       protected function elaboraParametri()
       {
 
           if (is_array($this->config)) {
               return $this->config;
           }
           $file = __DIR__ . DIRECTORY_SEPARATOR . $this->filename;
            try {
                   self::leggiParametri($file);
               } catch (DomainException $e) {
               Yii::log($e);
               }
 
           return true;
       }
 
       protected function leggiParametri($fileconf)
       {
           if (file_exists($fileconf)) {
               $conf_file  = file_get_contents($fileconf);
               $conf_array = explode("\n", $conf_file);
               $arrayConf = array();
 
               foreach ($conf_array as $riga_conf) {
                   $rc = explode('=', $riga_conf);
                   if (substr($rc[0], 0, 1) != '#') {
                       if ($rc[1] == 'true'){
                           $rc[1] = true;
                       }
                       if ($rc[1] == 'false'){
                           $rc[1] = false;
                       }
                       $arrayConf[$rc[0]] = $rc[1];
                   }
               }
 
               $this->config = $arrayConf;
 
           } else {
               throw new DomainException('errore di lettura nel file parametri');
           }
       }
 
       protected function controllaESettaIlParametro($valore, $valoreStandard = '')
       {
           if (!$this->config){
               $this->elaboraParametri();
           }
 
           if (!isset($this->config[$valore])){
              $this->config[$valore] = $valoreStandard;
           }
 
           return $this->config[$valore];
       }
 
       public function getTema()
       {
           return $this->controllaESettaIlParametro('theme', '..');
       }
 
       public function DBconfigure()
       {
           return array(
               'connectionString'   => 'mysql:host=' . $this->getDbHost() . ';dbname=' . $this->getDbName(),
               'emulatePrepare'     => $this->getEmulatePrepare(),
               'username'           => $this->getDbUser(),
               'password'           => $this->getDbPass(),
               'charset'            => $this->getCharset(),
               'tablePrefix'        => $this->getTablePrefix(),
               'enableParamLogging' => $this->getEnableParamLogging(),
               'enableProfiling'    => $this->getEnableProfiling(),
           );
       }
 
     // eccetera eccetera...
   }

e nel mio main faccio così:

include 'params/Configurami.php';
$configura = new Configurami();
return array(
//...
'theme'=> $configura->getTema(),
'language' => $configura->getLanguage(),
//...
// application components
'components'=>array(
//...
'db' => $configura->DBconfigure(),
//...


Qui trovate la classe zippata con i file dei parametri.
params va messo nel .gitignore, per tenerci i propri dati, params.dist è quello dove scrivere tutti i parametri necessari.

Per ora gestisce i parametri scritti uno per riga, separati da un =, come dire
PARAMETRO1=VALORE etc
e salta i commenti fatti con #

Insomma a me è sembrato utile... almeno come studio!
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users