Original von user-251el
Nett. Zeig doch mal ein wenig Code, also besondere Stellen oder ist es geheim?
Hier mal "das Herz" vom "compiler". Wenn irgendwas blöd gecoded ist oder man es besser machen kann, dann würd ich mich über eine Anregung freuen.
class.file.php
<?PHP
class file {
var $html_directory;
var $show_msg;
function file ($html_directory, $content=0, $show_msg=0)
{
$this->html_directory = $html_directory;
$this->show_msg = $show_msg;
if(is_array($content))
{
$this->array2files($content);
}
}
/* Macht aus einem String einen dateinamen.html */
function name ($name)
{
if(!empty($name))
{
$filename = str_replace(" ", "_", $name);
$filename = $filename.".html";
}
else
{
$filename = "build_".time().".html";
}
return $filename;
}
/* Erstellt eine Datei mit dem Namen $name und dem Inhalt $content */
function create ($name, $content)
{
chdir($this->html_directory); //wechselt ins Hauptverzeichnis
$file = $this->name($name);
if(!file_exists($file))
{
$handle = fopen($file, "a"
fwrite($handle, $content);
fclose($handle);
}
else
{
unlink($file); //Löscht Datei
$this->create($name, $content);
}
}
/* Erstellt Dateien aus dem Array */
function array2files ($content)
{
if($this->show_msg == 1) echo "<b>HTML-Dateien werden erstellt</b><br>";
foreach ($content as $key => $value) {
$this->create($content[$key]["filename"], $content[$key]["content"]);
if($this->show_msg == 1) echo $this->name($content[$key]["filename"])." erstellt<br>";
}
}
}
?>
cgrabber.class.php
<?php
class cgrabber {
var $files = array(); //Dateinamen von den Content-Dateien
var $content_directory; //Ordnername, wo die Content-Dateien liegen
var $files_directory; //Wo die Dateien erstellt werden
var $content_name = array(); //Klassennamen der Content-Dateien
var $content_class = array(); //Klassen der Content-Dateien
var $content = array(); //Der Content
var $show_msg; //Debugmode, zeigt status an
function cgrabber ($show_msg=0, $content_directory="content" {
$this->show_msg = $show_msg;
$this->content_directory = $content_directory;
$this->sourcedir();
$this->include_content_files();
$this->content();
}
/* Verzeichnis durchsuchen, Dateien in array schreiben */
function sourcedir () {
if($this->show_msg == 1) echo "<b>Verzeichnis wird durchsucht</b><br>";
$dir = dir($this->content_directory);
while ($file = $dir->read()) {
if (substr($file,-4)=='.php' {
$this->files[] = $file;
$this->content_name[] = substr($file, 0, -4);
if($this->show_msg == 1) echo $file." gefunden<br>";
}
}
$dir->close();
}
/* Included Dateien, startet die Klassen */
function include_content_files () {
if($this->show_msg == 1) echo "<b>Dateien werden eingelesen</b><br>";
foreach ($this->files as $key => $file) {
require_once($this->content_directory."/".$file);
if(class_exists($this->content_name[$key])) //Prüft ob es die Klasse überhaupt existiert
{
$this->content_class[$this->content_name[$key]] = new $this->content_name[$key]();
if($this->show_msg == 1) echo $file." eingelesen<br>";
}
//Debugging
else die("<br><b>ERROR</b><br>cgrabber.class.php<br>include_content_files();<br>Keine Klasse namens \"".$this->content_name[$key]."\" in \" \"".$file."\" gefunden!"
}
}
/* Holt den Inhalt aus den klassen */
function content () {
if($this->show_msg == 1) echo "<b>Inhalt werden in Variablen gespeichert</b><br>";
$i=0;
//Geht alle Klassen durch
foreach ($this->content_class as $name => $content_class) {
foreach ($content_class->content as $key => $value) {
$this->content[$i] = $value;
$i++;
}
if($this->show_msg == 1) echo $name." Inhalte gespeichert<br>";
}
if($this->show_msg == 1) echo "Insgesamt ".$i." Inhalt/e gespeichert<br>";
}
}
?>
compiler.php
<?PHP
define ("SHOWMSG", 1);
$ges_startzeit = microtime(true);
$con_startzeit = microtime(true);
require_once ("lib/cgrabber.class.php"
$cgrabber = new cgrabber(SHOWMSG);
$con_endzeit = microtime(true);
$fil_startzeit = microtime(true);
require_once ("lib/file.class.php"
$php_directory = "\phpfly";
$html_directory = str_replace($php_directory, "", getcwd());
$file = new file($html_directory, $cgrabber->content, SHOWMSG);
$fil_endzeit = microtime(true);
echo "<br><b>Zeit für das Parsen des Contents:</b> ".round($con_endzeit-$con_startzeit, 5)."s";
echo "<br><b>Zeit für das Erstellen der Dateien:</b> ".round($fil_endzeit-$fil_startzeit, 5)."s";
echo "<br><b>Zeit Gesamt:</b> ".round(microtime(true)-$ges_startzeit, 5)."s";
?>