2010-11-07 8 views
1

je voulais utiliser le code comme ceci dans mon projet Zend Framework:Zend_Framework - Classe de dénomination

public function indexAction() { 
    $user = new User(); 
    $user->name = "Guest"; 
    $user->save(); 
} 

La principale chose qui est important pour moi est que la classe est appelée juste User et non App_Model_User mais comment pourrais-je gérer cela? Je pensais que je pourrais ajouter le chemin du fichier User.php dans le modèle-dossier à l'include_path:

<?php 
class User { 
    /* Some code */ 
} 

Mais comment pourrais-je config le chargeur automatique pour charger le fichier/classe? Actuellement j'utilise l'autoloader avec appnamespace ("App") pour charger des classes appelées App_Model_User qui fonctionne mais le nommage de classe n'est pas le droit je pense. Il devrait être plus propre et plus clair.

Répondre

2

J'utilise set_include_path comme suit:

$root = dirname(dirname(__FILE__)); 

set_include_path(
    $root . '/application' . PATH_SEPARATOR 
    . $root . '/library' . PATH_SEPARATOR 
    . $root . '/application/models' . PATH_SEPARATOR 
    . $root . get_include_path() 
); 

Ensuite, le chargeur automatique capte tous les modèles (avec un nom) que je mets dans/application/modèles. Ce qui précède est dans mon seul script face au public (index.php). Voici comment configurer le chargeur automatique:

$autoloader = Zend_Loader_Autoloader::getInstance(); 
$autoloader->setFallbackAutoloader(true); 

La deuxième ligne veillera à ce que vos modèles ne doivent pas être explicitement inclus. Voir:

http://framework.zend.com/manual/en/zend.loader.autoloader.html

+0

J'ai essayé la même chose mais ensuite je dois écrire 'require 'User.php' que cela fonctionne, mais comment est-ce que j'ai pu configurer le chargeur automatique de Zend Framework pour le faire automatiquement? PS: Depuis PHP 5.3 le 'dirname (__ FILE __)' pourrait être remplacé par '__DIR__' – Poru

+0

@Poru - S'il vous plaît voir ma modification, j'espère que cela résout. – karim79

+0

Juste découvert cette solution et puis j'ai vu votre édition, mais merci quand même;)! Maintenant ça marche! – Poru

0

Quelle est votre version de PHP? Vous pouvez utiliser des espaces de noms.

+0

Système DEV:> 5.3 mais mon serveur a 5.2.x :( – Poru

Questions connexes