2010-07-12 4 views
9

Je développe un système web en utilisant PHP régulier. C'était ma première expérience avec PHP, donc le code n'est pas lisible ni propre. Il mélange du code HTML avec PHP. Je dirais que j'ai déjà fait la moitié du code.PHP vs OO PHP - Lequel utiliser?

Quels sont les vrais avantages du PHP orienté objet? Ce site traite des livres et des auteurs de livres, en utilisant MySQL et Apache. Ce n'est donc pas un site web très compliqué.

+3

Il est vraiment plus la différence entre être organisée dans votre code et non. Vous voulez une organisation. Le mal de tête de passer au crible le code désorganisé est un énorme couloir de temps que vous ne voulez pas avoir à traiter. OO augmente la longévité et la réutilisabilité du code. Créez une classe de livre, appliquez les attributs en tant que vars et profitez des avantages d'un objet consolidé contenant toutes les données dont vous avez besoin (par rapport à un ensemble de baies déconnectées ou à tout autre moyen de suivi) de livres). Ce site est votre ami: http://php.net/manual/fr/book.classobj.php – abelito

+0

J'ai supprimé les balises 'comparsion' et 'language-comparison' car vous ne demandez pas vraiment une comparaison entre PHP et autres langues: vous posez des questions sur PHP et sur l'utilisation du système objet. –

Répondre

16

L'avantage réel de l'orientation de l'objet: votre code est mieux organisé, plus facile à entretenir, plus modulaire (et donc plus facile à réutiliser), et potentiellement moins fragile (en raison de l'encapsulation de l'état et de la mise en œuvre, et, espérons-le, d'une meilleure sécurité). (Le cynique en moi dit aussi que si vous apprenez PHP orienté objet, vous prenez la première étape importante de quitter le PHP ghetto. Heh. Travaillé pour moi!)

Il y a déjà beaucoup de questions de PHPers mobiles en OO sur Stack Overflow:

ne pas mentionner que t voici des zillions de tutoriels orientés objet PHP là-bas. Mon point de vue: fondamentalement, oui, si vous écrivez PHP, vous devriez probablement écrire PHP orienté objet pour tout ce qui est au-delà de la plus triviale des applications. Il existe de nombreux frameworks en PHP pour Rails qui vous faciliteront la vie et vous aideront à devenir un meilleur programmeur.

+0

+1: Je suis d'accord avec vous! J'ajouterais seulement que PHP garde l'état de vos objets d'une page à l'autre donc vous voudrez peut-être conserver les données dans le tableau $ _SESSION. – Alerty

2

Objet orienté PHP ne diffère pas du style procédural dans la quantité de code HTML que vous vous mêlez au code PHP. Donc, si votre seule préoccupation est le mélange, vous devriez chercher d'autres moyens de faire nettoyer votre code. Par exemple, vous pouvez créer des fichiers modèles html avec des espaces réservés pour votre contenu dynamique et utiliser file_get_contents et str_replace pour injecter le contenu dynamique lors de l'exécution.

+0

Cependant, la quantité de code PHP que vous entremêlez avec votre HTML sera significativement plus élevée en utilisant non OO. – thetaiko

+1

@thetaiko: Pas nécessairement. Prouve-moi faux avec un exemple et je répondrais à votre défi avec la réécriture de la version procédurale. –

+1

Que vous utilisiez ou non OOP ou procédure PHP, si vous mélangez en HTML (présentation) avec votre logique métier, vous êtes dans un grand désordre tentaculaire. N'importe quel développeur web peut vous le dire. Utilisez le côté présentation plus comme un modèle comme la façon dont JSP l'applique. –

-5

Si vous voulez vraiment utiliser la programmation oo allez à Ruby.

OO PHP pour moi est un faux. Et si vous avez déjà fait la moitié du code en php structurelle, ne changez pas d'avis.

rappelez-vous juste pour rendre le code propre avec beaucoup de commentaires afin que vous puissiez facilement changer qqch dans le futur

+6

Quelqu'un devrait dire à Facebook. Et Zend. Et poire. Et le mainteneur de SPL. Il existe des millions de lignes de qualité orientées objet PHP là-bas, indépendamment de vos sentiments personnels à ce sujet. –

+3

Je ne dis pas qu'il n'y a pas de bons outils dans oo php. Je dis juste que PHP n'a jamais vraiment été un langage de programmation OO. –

+0

@Dobiatowski Alors quoi? C'est OOP maintenant. Bien sûr, ce n'est pas mon implémentation OOP préférée, mais ça marche très bien. –

0

Dans mon esprit, nous PHPers peut bien jeter le concept d'objet (instance de classe), nous avons seulement besoin de classe Array et Mode:

Tous les tableaux à l'appui de mode initial toute fonction de tableau comme sa méthode:

<?php 
$array1->array_flip(this); 
?> 

utilisation "-> Mode()" pour valider l'ensemble minimal de données, puis la classe de mode de fonctionnement:

<?php 
$array1->mode('class1', $success); 
?> 

Toute classe de mode n'a pas "-> construct()" en elle, mais elle a "-> validate()" pour valider l'ensemble de données minimal. Le tableau dans un mode pourrait toujours utiliser la fonction de tableau comme méthode, mais après avoir utilisé l'un d'entre eux, le tableau retournera en mode tableau de base, et nous devons utiliser "-> mode ('class1', $ succès); " pour changer de mode.

La pensée radicale ici est la programmation centrée sur les données; nous devons séparer les données (tableau) et l'activité (méthode de classe).

Nous pourrions modifier le moteur PHP, pour se débarrasser des parties de OO (orienté objet), et soutenir la classe Mode. Nous pourrions l'appeler MyPHP.

Par exemple: array_man1 $ pourrait être réglé en deux modes: cls_normal_man et cls_crazy_man:

<?php 
$array_man1->mode('cls_normal_man')->normal_method1()->mode('cls_crazy_man')->crazy_method1(); 
?>