ma convention de nommage des classes: class.ClassName.phpphp aide spl_autoload_register ... tout simplement pas comprendre
ma convention de nommage de fichier de classe: class.classname.php (d'où le strtolower).
les fichiers de classe sont situés dans le chemin d'accès comprennent:/home/content/XX/XXXXX/html/projets/include/
//autoload.php
<?php
class Autoload {
public static function autoloadClasses($className) {
$className = strtolower($className);
$file = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'include/class.' . $className. '.php';
require_once($file);
}
}
$register = spl_autoload_register('Autoload::autoloadClasses');
?>
//check4.php
<?php
$company = $s->company;
$projectName = 'development';
$items = array('type', 'scope', 'table', 'conditions');
$things = array('select', '*', 'todos', array('company'=>$company, PROJECT_NAME=>$projectName));
$combinedArray = array_combine($items, $things);
$q = new Query($combinedArray);
?>
verified classes exist and are included http://technicheian.com/images/includedClasses.png
sur chaque page qui utilise une classe (par exemple, celui-ci appelant Query; situé class.query.php:
05-Nov-2011 20:18:30]PHP Fatal error: Class 'Query' not found in /home/content/XX/XXXXXX/html/projects/check4.php
sur la ligne 9
à la fin de class.session.php est $s = new Session
(noté ici pour dire que la variable $ company ne doit pas être vide).
J'ai lu à peu près tous les articles, comment, etc. Je peux trouver. Qu'est-ce que je rate?
php 5.2 en cours d'exécution
Supprimez le bit 'set_include_path' - vous ne l'utilisez pas ici. De plus, avez-vous vérifié que votre classe existe dans le fichier '{AutoloaderClassDir}/include/class. {ClassName} .php' en prenant en compte les noms en majuscules? – adlawson
Merci pour la réponse. mis à jour mon code (et post). Habituellement, ces types de changements ne sont pas très compliqués ou difficiles à mettre en œuvre. Cependant, j'ai édité presque tout mon code autour de la facilité d'utilisation de cette fonctionnalité tant désirée. Tout ce que j'ai lu en faisant des recherches a fait apparaître cette implémentation triviale ("vous ajoutez simplement cet extrait de code et vous êtes bon"). L'autochargeur étant un peu un routeur, la majorité de mon application casse (évidemment) sans avoir accès aux classes. –
Pourquoi les gens continuent de réinventer la roue? Jetez un oeil à Zend_Loader_Autoloader (http://framework.zend.com/manual/en/zend.loader.autoloader.html) –