Oui ça a un sens particulier, il s'agit la de deux fonctions magiques, comme le constructeur ou le destructeur. Il en existe encore d'autres, comme __call par exemple, qui est appelé si aucune fonction portant le nom désiré est déclaré.
Il serait d'ailleurs judicieux de l'ajouter à ma classe, de la manière suivante:
Il serait d'ailleurs judicieux de l'ajouter à ma classe, de la manière suivante:
Code PHP :
<?php
public function __call($method, $arguments)
{
$errorMessage = '<p>la methode '. $method .' n\'existe pas</p><p>Les arguments suivants ont été envoyé avec:</p><ul>';
foreach($arguments as $key => $value)
{
$errorMessage .= '<li>'. $value .'</li>';
}
$errorMessage .= '</ul>';
$this->debugging[] = $errorMessage;
}
Je te laisse te documenter sur ces méthodes, qui sont vraiment puissantes ;-)
D'ailleurs je te conseil également cette fonction si tu ne la connais pas encore, à inclure lors de l'initialisation de ton code (tout en haut donc).
Code PHP :
<?php
/**
* Class autoloader
* Include la bonne classe automatiquement. Exemple : en faisant new Mysql, la classe Mysql.php dans le dossier library est automatiquement include dans le script!
* @param string
*/
function __autoload($className)
{
$path = library . $className . '.php';
if(file_exists($path))
{
include_once($path);
}
else
{
echo 'can\'t find the class '. $className .'<p>full path : '. $path . '.php</p>';
if(...) // si session d'admin ou ayant droits, on affiche tous les fichiers présent dans le dossier (pour controller rapidement si c'est une faute de frappe! :-))
{
echo '
<h3>listing of files in this dir : </h3><br />
<ul>
';
$dirs = scandir(library);
foreach($dirs as $key => $value)
{
if(!is_dir( $dir .'/'. $value ))
{
echo '<li>'. $value .'</li>';
}
}
echo '</ul>';
}
}
}