Bonjour à toutes et tous,

Tout d'abord je vous souhaite de belles fêtes et une fin d'année radieuse.
Pour 2018, continuez sur le même thème et tout ira bien.

Bon ceci étant fait, voici mon tracas du jour.
Je reprends PHP après quelques années d'absence et je cale.
J'ai une classe : class_test.class.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
<?php
/**************************************************
*
* Test
*
*
*************************************************/
class test
{
	var $dbHost = "";
 
	// méthode
    	function afficher()
    	{
    	    echo $this->dbHost;
    	}
}
?>
J'ai un script qui appelle instancie cette classe : conf_global.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
session_start();
error_reporting(E_ALL & ~E_NOTICE);
$application = "test";
// Chemin physique du site
$href = "http://".$_SERVER['HTTP_HOST']."/";
$_SESSION['href_relatif'] = $href;
 
// Chemin absolu
$href_abs = $_SERVER['DOCUMENT_ROOT'].$application;
$_SESSION['href_absolu'] = $href_abs;
 
require_once($href_abs."/inc/fonctions.php");
echo ($href_abs);
if (!set_include_path($href_abs.'/class/'.PATH_SEPARATOR.get_include_path()))
  die('Cannot register include path');
 
spl_autoload_extensions('.class.php');
spl_autoload_register();
 
// testons tout ça
var_dump( class_exists('test', true) );
$test = new test;
$test->afficher();
$test->dbhost = "localhost";
$test->afficher();
?>
À l'exécution, c'est pas terrible, j'ai le message suivant à la ligne 22 qui est mon var_dump
Fatal error: Uncaught exception 'LogicException' with message 'Class test could not be loaded' in C:\wamp\www\test\inc\conf_global.php on line 22
Suivi de
( ! ) LogicException: Class test could not be loaded in C:\wamp\www\test\inc\conf_global.php on line 22
Call Stack
# Time Memory Function Location
1 0.0010 140904 {main}( ) ..\index.php:0
2 0.0010 145936 require_once( 'C:\wamp\www\test\inc\conf_global.php' ) ..\index.php:3
3 0.0050 536752 class_exists ( ) ..\conf_global.php:22
4 0.0050 537008 spl_autoload ( ) ..\conf_global.php:22
J'utilise pour la 1ère fois "spl_autoload" que j'ai trouvé ici sur ce forum
Citation Envoyé par Benjamin Delespierre Voir le message
Conseil: utilise un seul fichier .php par classe et donne lui l'extension .class.php.
Ensuite, mets en place un autoloader pour charger les classes à la demande, c'est très simple si tu as tous tes .class.php dans un même répertoire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
<?php
if (!set_include_path('chemin/ver/test/classes'.PATH_SEPARATOR.get_include_path()))
  die('Cannot register include path');
 
spl_autoload_extensions('.class.php,.php,.inc');
spl_autoload_register();
 
// testons tout ça
var_dump( class_exists('Model', true) );
De cette façon tu n'auras plus jamais à t'occuper du chargement des classes, ce sera automatique
Mon erreur vient-elle d'une mauvaise utilisation de ce code ?
Merci pour votre partage de neurones.