Ik ben nieuw in de OOP hoek van PHP en heb iets geschreven wat voor mij wel werkt, maar weet niet of dit goed en op de juiste manier is.
Mijn school heeft mij wel wat over OOP verteld maar was allemaal erg onduidelijk.
Ik heb dit geschreven samen met behulp van een tutorial "http://net.tutsplus.com/tutorials/php/object-oriented-php-for-beginners/"
Zouden jullie mij tips e.d kunnen geven op dit script en ook zeggen wat ik "fout" doe of misschien onlogisch.
Geen afkraak dingen of modder gooien aub, een kind die net gaat schaatsen sta je ook niet ui te lachen op het ijs.
Alvast bedankt!
PHP CLASS:
<?php
/**
* Menu functies en classes
*
* Voor het installeren van het menu zijn een aantal
* checks en configuraties nodig. Deze checks worden
* op een "INSTALL" pagina gedaan en getoont. De daad-
* werkelijke checks worden dmv een class of functie
* uitgevoerd
*
* @author Rick de Graaff
* @date 18-01-2012
*
*/
class checkModule {
/**
* Vars voor de class
*
* @param s_Module = modulenaam
* @param a_Tables = array met tabelnamen
* @param a_Files = array met bestandsnamen
* @param a_Folders = array met mapnamen
* @param i_Integer = teller zodat elke tabel een eigen nummer krijgt (tijdelijk nummer)
* @param a_Errors = array waar errors in kunnen staan (deze gebruik ik nog niet)
* @param s_Debug = Als de debug aanstaat word er bij de __destruct een printr getoont met de errors
*
*/
public $s_Module;
public $a_Tables;
public $a_Files;
public $a_Folders;
public $a_Errors;
public $s_Debug;
/* Constructor */
public function __construct($sModule, $aTables, $aFiles, $aFolders, $sDebug){
$this->s_Module = $sModule;
$this->a_Tables = $aTables;
$this->a_Files = $aFiles;
$this->a_Folders = $aFolders;
$this->a_Errors = array();
$this->s_Debug = $sDebug;
// Laat zien om wat voor module het gaat
echo '<h2>MODULE '.strtoupper($this->s_Module).'</h2>'."\n";
echo '<p>Kijk welke tabellen en/of de module al geïnstalleerd staat. Alle tabellen zijn nodig in een module.<br />Vink anders aan wat je wilt installeren.</p>'."\n";
echo '<div class="background">'."\n\n";
echo '<h3>Module actief</h3>'."\n";
}
/* Destructor */
public function __destruct(){
// Sluit de background div
echo '</div>'."\n\n";
if($this->s_Debug == true){
printr($this->a_Errors);
}
}
/**
* Controleren of module bestaat
*
*/
public function moduleCheck(){
// Start van de UL LIST
echo '<div class="formlist-nodrag">'."\n";
echo '<ul>'."\n";
$qCheckInstalled = 'SELECT * FROM modules WHERE moduleNaam = "'.$this->s_Module.'" LIMIT 1';
$mCheckInstalled = mysql_query($qCheckInstalled) or die($sError = '<div><strong>qCheckInstalled error: </strong><br />'.$qCheckInstalled.'<br /><pre></div>'.mysql_error().'</pre>');
$fCheckInstalled = mysql_fetch_array($mCheckInstalled);
$cCheckInstalled = mysql_num_rows($mCheckInstalled);
// Parse voor de mysql error
if(!$mCheckInstalled){ echo $sError;}
// Melding of de module al geïnstalleerd is
if($cCheckInstalled >= 1){
echo '<li><img src="images/icons/silk/accept.png" alt="Wel geïnstalleerd" title="Wel geïnstalleerd" /> Module '.$this->s_Module.' is actief</li>';
} elseif($cCheckInstalled == 0){
echo '<li><img src="images/icons/silk/exclamation.png" alt="Nog niet geïnstalleerd" title="Nog niet geïnstalleerd" /> Module '.$this->s_Module.' is nog <strong>niet</strong> geïnstalleerd <span><input type="checkbox" name="'.stripStr(strtolower($this->s_Module)).'" /></span></li>';
// Error aanmaken in de "error array"
}
// Einde van de UL LIST
echo '</ul>'."\n";
echo '</div>'."\n\n";
}
/**
* Functies en uitvoeringen voor tabels checks
*
*/
public function tablesCheck(){
// Start van de UL LIST
echo '<br /><h3>Tabellen</h3>'."\n";
echo '<div class="formlist-nodrag">'."\n";
echo '<ul>'."\n";
/* Doorloop alle tables die in de array staan */
foreach($this->a_Tables as $sTable){
$qCheckTables = 'SHOW TABLES LIKE "'.$sTable.'"';
$mCheckTables = mysql_query($qCheckTables) or die($sError = '<div><strong>qCheckTables error: </strong><br />'.$qCheckTables.'<br /><pre></div>'.mysql_error().'</pre>');
$fCheckTables = mysql_fetch_array($mCheckTables);
if($fCheckTables[0] == $sTable){
echo '<li><img src="images/icons/silk/database.png" alt="Wel geïnstalleerd" title="Wel geïnstalleerd" /> Tabel '.$sTable.' bestaat al</li>';
} else {
echo '<li><img src="images/icons/silk/database_error.png" alt="Nog niet geïnstalleerd" title="Nog niet geïnstalleerd" /> Tabel '.$sTable.' is niet aangemaakt <span><input type="checkbox" name="'.stripStr(strtolower($sTable)).'" /></span></li>';
}
// Parse voor de mysql error
if(!$mCheckInstalled){ echo $sError;}
}
// Einde van de UL LIST
echo '</ul>'."\n";
echo '</div>'."\n\n";
}
/**
* Mappen check
*
* Check of de mappen die nodig zijn voor deze module aanwezig zijn
*/
public function foldersCheck(){
// Start van de UL LIST
echo '<br /><h3>Mappen</h3>'."\n";
echo '<div class="formlist-nodrag">'."\n";
echo '<ul>'."\n";
/* Waardes 1 voor 1 uit de array halen en controleren */
foreach($this->a_Folders as $sIndexKey => $sFolder){
if(is_dir($sFolder)){
echo '<li><img src="images/icons/silk/folder.png" alt="Folder bestaat" title="Folder bestaat" /> Map "'.$sIndexKey.'" bestaat al</li>';
} elseif(!is_dir($sFolder)){
echo '<li><img src="images/icons/silk/folder_error.png" alt="Folder niet aanwezig" title="Folder niet aanwezig" /> Map "'.$sIndexKey.'" is niet aangemaakt <span><input type="checkbox" name="'.stripStr(strtolower($sIndexKey)).'" /></span></li>';
}
}
// Einde van de UL LIST
echo '</ul>'."\n";
echo '</div>'."\n\n";
}
/**
* Bestands check
*
* Een array die word uigelezen en checkt of de bestanden wel aanwezig zijn
*/
public function filesCheck(){
// Start van de UL LIST
echo '<br /><h3>Bestanden</h3>'."\n";
echo '<div class="formlist-nodrag">'."\n";
echo '<ul>'."\n";
/* Waardes 1 voor 1 uit de array halen en controleren */
foreach($this->a_Files as $sIndexKey => $sFile){
if(file_exists($sFile)){
echo '<li><img src="images/icons/silk/script.png" alt="Bestand bestaat" title="Bestand bestaat" /> Bestand "'.$sIndexKey.'" bestaat al</li>';
} elseif(!file_exists($sFile)){
echo '<li><img src="images/icons/silk/script_error.png" alt="Bestand niet aanwezig" title="Bestand niet aanwezig" /> Bestand "'.$sIndexKey.'" is niet aangemaakt <span><input type="checkbox" name="'.stripStr($sIndexKey).'" /></span></li>';
}
}
// Einde van de UL LIST
echo '</ul>'."\n";
echo '</div>'."\n\n";
}
}
?>
PHP CODE OM CLASS AAN TE ROEPEN:
<?php
/*
* MODULE CHECKEN
*
* Bekijk of alle bestanden en tabellen juist zijn en ook bestaan.
* Als deze niet bestaan krijg je een nette melding en kan je ze
* alsnog laten maken door het CMS
*
* @param, alle variabelen staan hieronder die nodig zijn om alles
* te controleren voor de module (de inhoud van de variabelen verschilt per module).
*
* Opbouw module check:
*
* - Array met Tabellen
* - Array met Bestanden
* - Array met Mappen
* - Variabele met "module naam"
*
*
*
*/
$aTables = array('menu', 'menu_talen', 'jaja');
$aFiles = array(".htaccess" => ''.$sExtSub.'.htaccess', ".index.asp" => ''.$sExtSub.'.index.asp');
$aFolders = array("pages" => ''.$sExtSub.'pages/', "bla" => ''.$sExtSub.'bla/',);
$sModule = 'menu';
// Nieuwe module check aanmaken
$sMenu = new checkModule($sModule, $aTables, $aFiles, $aFolders, false);
// Controleer of module actief staat in de DB
echo $sMenu->moduleCheck();
// Controle of de tabellen wel aanwezig zijn die nodig zijn
echo $sMenu->tablesCheck();
// Controle of de tabellen wel aanwezig zijn die nodig zijn
echo $sMenu->foldersCheck();
// Controle of de tabellen wel aanwezig zijn die nodig zijn
echo $sMenu->filesCheck();
// Sluit de class af en check dmv de destructor voor errors
unset($sMenu);
?>