IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Auto-chargement des classes


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 116
    Points : 55
    Points
    55
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 html : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 21
    Points
    21
    Par défaut
    Salut,

    Peut-être que cette article pourras t'aider : http://www.karedas.net/autoload-php-...toire-341.html (par contre il utilise encore __autoload()).

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Modifie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(pathinfo($file, PATHINFO_FILENAME) === strtolower($className))
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(strtolower(pathinfo($file, PATHINFO_FILENAME)) === strtolower($className))

  4. #4
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 116
    Points : 55
    Points
    55
    Par défaut
    Merci de m'avoir répondu je vais tester...

Discussions similaires

  1. Chargement des classes et appel au démarrage de Tomcat
    Par Lolitaaa dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 11/08/2010, 13h15
  2. Réponses: 2
    Dernier message: 22/07/2009, 21h28
  3. [View] Auto-chargement des aides de vue
    Par Feng-Huang dans le forum Autres composants
    Réponses: 2
    Dernier message: 09/06/2009, 11h11
  4. [weblogic 6][ejb]Ordre de chargement des classes
    Par Tistou07 dans le forum Weblogic
    Réponses: 1
    Dernier message: 14/02/2007, 10h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo