2009-10-01 4 views
3

J'ai récemment commencé à construire la version 2 de mon framework MVC personnalisé. Cela a fonctionné très bien pour moi sur un certain nombre de projets, mais je vois vraiment de la place pour l'amélioration. Il manque certaines fonctionnalités majeures comme la liste de contrôle d'accès, la validation de formulaire et la mise en cache. Autant que j'aimerais construire ces parties moi-même, je sais que ce n'est pas une décision intelligente. Donc, j'ai commencé à regarder Zend Framework 1.9. J'aime vraiment comment sa bibliothèque de composants est faiblement couplée. Cependant, en regardant différents tutoriels, il semble très verbeux. J'ai vu quelques exemples d'applications que je pourrais dupliquer en utilisant moins de code avec mon propre framework. En tant que tel, je voudrais "redéfinir" beaucoup de choses pour le rendre plus RAD. Donc, avant que j'investisse beaucoup de temps à creuser dans le cadre, j'espérais que quelqu'un pourrait faire la lumière sur ce sujet pour moi. Je suis un codeur dans l'âme, et je n'ai aucun problème à passer des heures et des heures à peaufiner et à personnaliser quelque chose s'il a une base solide (ce que j'espère que ZF a).Est-il facile d'étendre/modifier Zend Framework?

Je devrais noter que je suis très heureux de voir que Doctrine peut être intégré avec ZF.

Si ZF n'est pas facilement extensible, quels sont les autres frameworks (qui ont aussi ACL, validation de forme, mise en cache)? J'ai regardé Symfony, mais toute la configuration de Configuration over Convention me dérange beaucoup.

Merci d'avance pour toute contribution.

Modifier
Pour répondre à la question de Tharkûn, ce que je veux dire par « facilement extensible » est que je peux rouler mes propres classes (qui peuvent ou peuvent ne pas étendre les classes ZF) et les emballer dans le cadre afin que je puisse construire facilement une base de code pour mes propres projets.

Répondre

8

Parmi les frameworks PHP populaires, ZF est sûrement celui qui est le plus facilement étendu, notamment en raison du couplage lâche.

Merci pour les clarifications. Ce que vous décrivez est exactement ce que ZF est bon, mais je dirais que c'est aussi ce que la POO est bonne, donc je considérerais un framework OO qui ne supporte pas ce cas pour la poubelle.

Quoi qu'il en soit. Avec ZF, normalement, vous conservez votre propre bibliothèque dans une structure parallèle à la structure du dossier ZF. Vous pouvez utiliser l'autochargeur ZF et enregistrer votre dossier de bibliothèque avec l'autochargeur en l'ajoutant à l'espace de noms. Exemple:

//this will be the only require needed for your whole application 
require_once 'Zend/Loader/Autoloader.php'; 
$loader = Zend_Loader_Autoloader::getInstance(); 
$loader->registerNamespace('Mylibrary_'); 

Dans Mylibrary, vous devez ensuite suivre les conventions de dénomination ZF. Supposons que vous souhaitiez étendre la classe Zend_Db_Table_Abstract. Cette classe est située logiquement sous Zend/Db/Table/Abstract.php. Votre bibliothèque devrait maintenant répliquer cette structure: Mylibrary/Db/Table/Abstract.php. Et vous le nom de votre classe dans ce fichier:

class Myproject_Db_Table_Abstract extends Zend_Db_Table_Abstract 
{ 
    /* 
    now you're ready to extend and override as much as you like. 
    and as a bonus you'll not even hav to include your library files 
    since your library is registered with the loader 
    */ 
} 

Est-ce que vous avez quelque chose d'autre à l'esprit quand ils posent cette question?

0

Il est presque pas de problème pour étendre le Zend Framework.

Il est courant de configurer des "myExtenions" qui coexistent avec la bibliothèque Zend Framework. A titre d'exemple, vous pouvez jeter un oeil sur:

Zym Zend Framework Extension

+0

Qu'entendez-vous par «près»? – markus

1

Personnellement Zend FW est mon préféré. Ça botte le cul. Période.Cela dit, vous devez être un codeur dans l'âme pour pouvoir l'apprécier. Cela peut devenir assez abstrait.

Pour répondre à votre question; Zend FW est très extensible, tout - vraiment tout - peut être étendu. La convention de dénomination de classe est; La classe Zend_This_IsAn_Example se trouve dans /library/Zend/This/IsAn/Example.php que vous étendriez en tant que Whatever_This_IsAn_Example que vous placeriez dans /library/Whatever/This/IsAn/Example.php Il a également un chargement automatique que vous pouvez activer , vous n'aurez plus à require_once classfiles.

structure mvc;

/application /application/controllers /application/etc /application/modèles /application/vues /bibliothèque /bibliothèque/Zend /bibliothèque/personnalisée /publique

Check out http://framework.zend.com/manual/en/introduction.html et http://framework.zend.com/docs/quickstart

0

Le point principal est que vous pouvez facilement coder à l'interface. N'êtes-vous pas satisfait de l'implémentation de Zend_Acl_Resource? Faire votre propre classe de ressources implémentant Zend_Acl_Resource_Interface :)

+0

vous n'êtes pas limité à l'extension des classes abstraites ... ZF est BIG et c'est de cette façon, car il a d'innombrables points d'extension. –

1

Ce n'est pas parfait - Il y a eu une tendance à utiliser des membres statiques et des dépendances de classes concrètes dans ZF - mais certaines d'entre elles ont été corrigées dans des versions ultérieures du framework. Je dirais que par rapport à d'autres cadres similaires, ZF se porte bien. En fait, le couplage lâche est probablement le plus gros argument de vente du framework.

2

J'ai développé mon propre framework en étendant ZF. Et je peux vous dire que cela peut être facilement fait. Vous pouvez utiliser ce que vous voulez, et remplacer ce que vous ne voulez pas assez facilement. Full ZF suit OOP à la base. Ils utilisent les meilleures pratiques partout. J'ai beaucoup appris en observant son code.

Personnellement, je pense que ZF est le meilleur framework php que j'ai jamais vu.