Auto-chargement des classes
Bonjour à tous, j'ai un petit souci concernant l'autochargement des classes.
J'ai un fichier que j'ai mis a la racine qui est un autoload :
autoloader.php
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
<?php
spl_autoload_register(function($className) {
$files = glob("*.php");
$dirs = array(
__DIR__ . '\controller\*',
__DIR__ . '\model\*',
);
foreach($dirs as $dir)
{
$files = glob($dir);
foreach($files as $file)
{
//echo "<pre>";print_r($file);
var_dump($file);
if(pathinfo($file, PATHINFO_FILENAME) === strtolower($className))
{
require_once($file);
}
}
}
}); |
Voici mes fichiers :
Model/ModeleAjouterMembres.php
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
<?php
require_once'../autoload.php';
class ModeleAjouteMembres
{
public static function addMembres(membre $membre)
{
$connexion = Connexion::getInstance();
$sql = $connexion->prepare("INSERT INTO ps_membre(nom_membre,prenom_membre,date_naissance,cp_membre,adresse_membre,ville_membre,pays_membre,tel_membre,email_membre,password) VALUES(?,?,?,?,?,?,?,?,?,?)");
{
$params = $membre->getReqParams();
$n=1; // Nombre de paramètres
foreach($params as $v)
{
$sql->bindValue( $n,$v,PDO::PARAM_STR);
echo $v; echo"<br>";
$n++;
}
}
$res=$sql->execute();
$result=$sql->fetchAll();
return $result;
}
} |
Controller/Inscription.php:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
<?php
require_once'../autoloader.php';
class Inscription {
public static function ajouterUnMembre(membre $membre)
{
if (isset($_POST['submit']))
{
$connexion = Connexion::getInstance();
$ajout = new ModeleAjouteMembres();
$ajout::addMembres($membre);
}
}
} //end class
$membre = new membre( "",
$_POST['nom'],
$_POST['prenom'],
$_POST['date_naissance'],
$_POST['code'],
$_POST['adresse'],
$_POST['ville'],
$_POST['pays'],
$_POST['tel'],
$_POST['email'],
$_POST['password']);
echo "<pre>";print_r($membre);
Inscription::ajouterUnMembre($membre);
header('Location:../index.php'); |
et view/Inscription.html
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>BLOCKS - Bootstrap Dashboard Theme</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<link href="../lib/bootstrap/css/bootstrap.css" rel="stylesheet">
<link href="../admin/assets/css/main.css" rel="stylesheet">
<link href="../admin/assets/css/font-style.css" rel="stylesheet">
<link rel="stylesheet" href="../admin/assets/css/register.css">
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<style type="text/css">body {padding-top: 60px;}</style>
<link href="http://fonts.googleapis.com/css?family=Raleway:400,300" rel="stylesheet" type="text/css">
<link href="http://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet" type="text/css">
</head>
<body>
<!-- NAVIGATION MENU -->
<div class="navbar-nav navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../index.php"><img src="../images/logo/interface2.png" alt=""></a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav" style="padding-top:30px;margin-left:90px">
<li><a href="calendar.html.twig">OFFRE</a></li>
<li><a href="Inscription.html.twig.html">CONNEXION</a></li>
<li><a href="login.html.twig">QUI SOMMES-NOUS ?</a></li>
<li><a href="tables.html.twig">NOUS CONTACTER</a></li>
</ul>
</div>
</div>
</div>
<div class="container" style="padding-top:60px">
<div id="register-wraper">
<!-- <form id="register-form" class="form" action="../controller/ControlleAjouteMembres.php" method="POST">
--> <form id="register-form" class="form" action="../controller/Inscription.php" method="POST">
<legend> INSCRIPTION </legend>
<hr>
<div class="body">
<input name="id" class="input-huge" type="hidden">
<label>NOM</label>
<input name="nom" class="input-huge" type="text">
<label>PRENOM</label>
<input name="prenom" class="input-huge" type="text">
<label>DATE NAISSANCE</label>
<input name="date_naissance" class="input-huge" type="text">
<label>CODE POSTALE</label>
<input name="code" class="input-huge" type="text">
<label>ADRESSE</label>
<input name="adresse" class="input-huge" type="text">
<label>VILLE</label>
<input name="ville" class="input-huge" type="text">
<label>PAYS</label>
<input name="pays" class="input-huge" type="text">
<label>TELEPHONE</label>
<input name="tel" class="input-huge" type="text">
<label>EMAIL</label>
<input name="email" class="input-huge" type="text">
<label>PASSWORD</label>
<input name="password" class="input-huge" type="password">
</div>
<br/>
<div class="footer">
<button type="submit" name="submit" class="btn btn-success">Enregistrer</button>
</div>
</form>
<!--***** END OF INSCRIPTION ----->
</div>
</div>
<div id="footerwrap">
<footer class="clearfix"></footer>
<div class="container">
<div class="row">
<div class="col-sm-12 col-lg-12">
<p><img src="../admin/assets/img/logo.png" alt=""></p>
</div>
</div><!-- /row -->
</div><!-- /container -->
</div><!-- /footerwrap -->
</body></html> |
Mon problème est le suivant : lorsque je lance le programme, mon autoload ne trouve pas la classe ModeleAjouteMembres alors que j'ai fait un print_r, et le fichier est bien appelé.
Mes classe ont le même nom que mes fichiers.
Voici mon arborescence :
http://puu.sh/aH258/e776d65f72.png
Si vous avez des solutions je suis preneur.
Merci d'avance