Zdravím zkušené programátory,
rád bych se Vás zeptal na radu ohledně konfiguračních souborů rozsáhlejšího projektu. Chtěl bych mít možnost u projektu měnit různá nastavení od přihlašovacích údajů do database přes změnu designu pomocí css souborů až po seznam stránek a includovaných souborů. V podstatě si chci do budoucna usnadnit práci ohledně možných úprav. Rozhoduji se mezi XML a PHP jako konfigurační soubor. XML je rozhodně přehlednější ale zase se bojím rychlosti, protože mě nenapadá nic jiného než při každém generování stránky vytahovat z nastavení potřebné hodnoty. PHP by v tomto ohledu bylo jednodušší ale zase bych se asi rychle ztratil v úrovních pole. Je mi jasné že to píšu velice složitě, proto radši zkusím příklad:
PHP
<?php
$pole = array( 'database' => array( 'server' => 'localhost',
'login' => 'admin',
'heslo' => 'heslo0001',
'dbase' => 'database01'),
'design' => array( 'aktual' => '2',
'1' => array('cesta/soubor1.css','cesta/soubor2.css'),
'2' => array('cesta/soubor12.css','cesta/soubor22.css')),
'soubory' => array( 'funkce' => 'cesta/funkce.php',
'login_page' => 'cesta/login_pge.html'))
?>
XML
<?xml version="1.0" encoding="UTF-8"?>
<nastaveni>
<database>
<server>localhost</server>
<login>admin</login>
<heslo>heslo0001</heslo>
<dbase>database01</dbase>
</database>
<design aktual="2">
<styl id="1">
<link>cesta/soubor1.css</link>
<link>cesta/soubor2.css</link>
</styl>
<styl id="2">
<link>cesta/soubor12.css</link>
<link>cesta/soubor22.css</link>
</styl>
</design>
<soubory>
<soubor>
<jmeno>funkce</jmeno>
<cesta>cesta/funkce.php</cesta>
</soubor>
<soubor>
<jmeno>login_page</jmeno>
<cesta>cesta/login_page.html</cesta>
</soubor>
</soubory>
</nastaveni>
A na začátku každé stránky pak něco jako:
<?php
require_once($pole['soubory']['funkce']);
$i = $pole['design']['aktual'];
foreach($pole['design'][$i] as $cesta){
$vystup .= '<link rel="stylesheet" href="'.$cesta.'" />';
}
$mysqli = new mysqli($pole['database']['server'], $pole['database']['login'], $pole['database']['heslo'], $pole['database']['dbase']);
?>
Co myslíte? Co používáte vy pro nastavení projektu?