Voici un petit bout de code php5 qui permet de créer simplement des fichiers à partir d'un modèle. Comme mon explication est loin d'être évidente ;) voici un exemple avec un fichier de zone DNS. Ici, tout ce qui est mis entre accolade doit être remplacé par sa valeur.

$TTL 3600
{domain}.               IN  SOA {ns1}.   {contactzone}. (
            {timestamp}
            10800
            3600
            604800
            3600 )

{domain}.               IN  NS      {ns1}.
{domain}.               IN  NS      {ns2}.

; Enregistrements Spf

{domain}.               IN  TXT     "v=spf1 a mx ~all"
mail.{domain}.          IN  TXT     "v=spf1 a -all"

www.{domain}.           IN  A       {ipl}
{domain}.               IN  A       {ipl}
ftp.{domain}.           IN  A       {ipl}
mail.{domain}.          IN  A       {ipl}

{domain}.               IN  MX  10  mail.{domain}.
{domain}.               IN  MX  20  mx-backup.sivit.fr.

smtp.{domain}.          IN  CNAME   mail.{domain}.
pop.{domain}.           IN  CNAME   mail.{domain}.

Voici donc la méthode en question qui s'intégrera parfaitement dans votre classe :

<?php
   /** Création de fichier de configuration
    *
    * Mini système de template pour créer des fichiers de configuration à partir d'un squelette
    * en remplaçant {pattern} par la valeur
    *
    * @access   public
    * @return    bool
    * @param    string  $orig         Fichier "template"
    * @param    string  $dest        Fichier de destination
    * @param    array   $keywords Mots à rechercher dans le template
    * @param    array   $values     Valeur de remplacement
    */

    public function setConfigFile($orig,$dest,$keywords,$values)
    {

        // contenu du fichier dans un variable
        $content = file_get_contents($orig);

        // ajout pattern
        foreach($keywords as $key=>$value) {
            $patterns[] = "/{".$value."}/imSU";
        }

        // remplacement
        $output_content = preg_replace($patterns, $values, $content);

        // variable dans un fichier ou exception
        if(!file_put_contents($dest,$output_content)) {
            throw new Exception('Erreur dans la creation du fichier');
        }

        return true;
       
    }

    // }}}
?>

Pour notre exemple, je passe sur l'instanciation de la classe, On utiliserais la méthode de la façon suivante :

<?php

// on a un objet obj

// à remplacer...
$keywords = array('domain','ns1','ns2','timestamp','contactzone');

// par :
$values = array('toto.com','ns1.toto.com','ns2.toto.com',date('Ymdi'),'technique.toto.com');

// go !
$obj->setConfigFile('zonedns.tpl','/var/cache/bind/toto.com.hosts', $keywords, $values);
?>

Ce script n'a rien de révolutionnaire mais je trouve ça pratique. Ca ressemble de très loin à un système de template minimaliste ;)

PS : pour les allergiques à l'orienté objet, vous pouvez bien entendu l'utiliser comme une simple fonction