Excusez-moi, j'ai du mal

WRInaute occasionnel
Ca fait longtemps que je développe en PHP4 (non objet) mon hébergeur ne suportait pas le PHP5. enfin c'est ce que je croyais mais finalement mon pack premium chez 1et1 me le permet. Donc j'ai envie de me mettre au PHP5 objet

Par contre, je n'arrive pas à voir l'intérêt d'un langage objet pour un site internent (ou peut etre que c'est pour mon cas vu que mon site est relativement petit).

Je vous explique. En gros j'ai des gens qui s'inscrivent à des sessions de cours. Une fois inscrit, je veux simplement qu'ils puissent avoir accès a un espace prive qui leur donne les coordonnées des personnes inscrites a la mêmes session qu'eux. C'est pas sorcier et je l'ai fait en PHP4.

Admettons que, pour la gloire, je veuille refaire l'équivalent en PHP5 object, qu'est ce que ca va m'apporter ?
Je vois pas comment m'y prendre en fait. Je veux bien faire une classe "session" et une classe "élève" avec qqn attributs et qq méthodes mais ou sera le gain?
Pendant mes cours j'ai travaille sur des langages objets mais pas sur des applis internet. Etant donne que les objets ne seront pas conserves en memoire d'uns page a l'autre je vois pas l'avantage (ou alors il faut que je passe mes objets d'une page a l'autre par variable de session par exemple?)

Bref, vous pouvez m'expliquer un peu (les tutos que j'ai trouvés montrent comment faire mais m'éclairent pas trop sur le but final).
Si vous aviez des petits bouts de code simple en PHP5 objet a me montrer ce serait cool.

pour simplifier, si j'ai un formulaire et que je veux le sauvegarder en BDD, il y a t il un interet a passer par un objet ?

si vous avez des explications ou des pistes, merci tout plein par avance !
 
WRInaute impliqué
Je ne peux pas trop t'éclairer sur les avantages, hormis la lisibilité du code au final (mais si quelqu'un a plus d'infos, ça m'interesse aussi)

par contre pour

Code:
(ou alors il faut que je passe mes objets d'une page a l'autre par variable de session par exemple?)

il me semble que ça se passe avec serialize ...
 
WRInaute discret
Salut,

En effet, beaucoup de Geek ne jurent que par l'objet...

Le "tout" objet, dans le monde professionnel, ça n'existe pas, et meme si (mais je ne le croirai jamais) certains disent programmer en tout objet, sans jamais un petit dérapage, je n'en vois aucunement l'intêret!

En revanche, on ne peux pas dire que l'objet n'est pas interressant, ou que la POO en php n'est pas interressante!

Par exemple, pour un formulaire PHP, si il n'y a qu'un formulaire qui envoie les données qqpart pour les enregistrer, aucun intéret.

Par contre, tu dis que tu veux gérer des gens qui s'inscrivent à des cours...

Alors la la POO peut être adapté, car tu va pouvoir gérer ces cours, ces heures de cours pour chacun des clients plus méthodiquement!

Disons que la POO dans une application, permet de laisser entendre une certaine maintenabilité et pereinité, clareté... de l'appli.

Des exemple il y en à partout, je te conseille cet excellent bouquin:
http://www.eyrolles.com/Informatique/Li ... avance.php

qui permet, comme son nom ne l'indique pas d'apprendre le php en partant de pas grand grand chose.
Il est très bien écrit, et te permettra d'étendre tes connaissances en PHP4.

L'introduction à la POO est vraiment vraiment très bien faite, et te donne les différences à chaque fois avec php4!
 
WRInaute discret
Les principaux caractéristiques et avantages de la POO sont toujours les mêmes, quelquesoit le langage utilisé :
* encapsulation
* héritage
* polymorphisme
* réutilisabilité

Le dernier point sera particulièrement appréciable si tu dois gérer non plus un site mais plusieurs et que tu peux d'un site à l'autre réutiliser rapidement toute un module de gestion d'un type d'objet particulier (une classe d'abstraction à l'accès à la BDD par exemple, une classe de Template pour gérer rapidement et de la même façon le design des applis...)

Sans compter qu'en programmant proprement, cela permet d'obtenir une séparation plus marquée du code PHP et de la présentation HTML sans avoir forcément besoin d'utiliser des frameworks basés sur le modèle MVC.

Après, il est évident que les avantages de la programmation objet sont surtout sensibles et intéressants dans le cadre de projets relativement conséquents, plutôt orientés "applicatifs web ou intranet".

Pour un seul site simple vitrine de quelques pages statiques par exemple, il est plus difficile de trouver un réél intérêt à la POO.
 
WRInaute occasionnel
Merci a tous les trois pour vos éléments de réponse.

Pour répondre à tom_pascal, j'avais bien en tête les avantages de la POO mais je ne comprenais pas comment les appliquer à une appli web.

par exemple en java, je créais un objet je le modifiais avec des méthodes et finalement j'enregistrais les modifs.

Mais en web, si je crée un objet sur une page, en général, on le modifie sur une autre page et on l'enregistre sur une troisième (pour simplifier :p) et donc dans ce cas, je ne vois pas comment faire sinon en recréant un objet sur chaque page. D’où ma question quant à la simplicité et l'avantage d'utiliser la POO

Autre chose, en ce qui me concerne, je veux évidemment appliquer ca sur mon petit site perso mais c'est uniquement pour montrer à un éventuel futur employeur ce que je sais faire. Donc mon site est petit mais l'objectif est d'acquérir les principes pour bosser sur de plus gros sites.

Bref en tout cas merci encore a vous 3.
Pierrot
 
WRInaute occasionnel
Merci a tous les trois pour vos éléments de réponse.

Pour répondre à tom_pascal, j'avais bien en tête les avantages de la POO mais je ne comprenais pas comment les appliquer à une appli web.

par exemple en java, je créais un objet je le modifiais avec des méthodes et finalement j'enregistrais les modifs.

Mais en web, si je crée un objet sur une page, en général, on le modifie sur une autre page et on l'enregistre sur une troisième (pour simplifier :p) et donc dans ce cas, je ne vois pas comment faire sinon en recréant un objet sur chaque page. D’où ma question quant à la simplicité et l'avantage d'utiliser la POO

Autre chose, en ce qui me concerne, je veux évidemment appliquer ca sur mon petit site perso mais c'est uniquement pour montrer à un éventuel futur employeur ce que je sais faire. Donc mon site est petit mais l'objectif est d'acquérir les principes pour bosser sur de plus gros sites.

Bref en tout cas merci encore a vous 3.
Pierrot
 
WRInaute discret
Pierrot25 a dit:
Mais en web, si je crée un objet sur une page, en général, on le modifie sur une autre page et on l'enregistre sur une troisième (pour simplifier :p) et donc dans ce cas, je ne vois pas comment faire sinon en recréant un objet sur chaque page. D’où ma question quant à la simplicité et l'avantage d'utiliser la POO

Il y a des solutions à cela:

Les sessions (qui n'est en fait qu'un cookie coté serveur), les cookies et la sérialization des données (tableaux par exemple) sont des solutions qui, combinés entre elles te permettent tout cela...

Et c'est la que je te réfere au livre que je t'ai conseillé si jamais tu souhaite te pencher dessus.
 
WRInaute discret
c'est pas de la pub, mais ce livre est vraiment "grand publique", ça deviens vite une bible, que l'ont soit un expert ou un débutant (avec les bases) en php.
 
WRInaute occasionnel
zim3 a dit:
c'est pas de la pub, mais ce livre est vraiment "grand publique", ça deviens vite une bible, que l'ont soit un expert ou un débutant (avec les bases) en php.

Non j'ai bien compris :lol: si tu connais un bon livre j'aime mieux que tu me le dises (même si c'est de la pub après tout)

en revanche, j'habite a Londres donc je vais essayer d'en trouver un en anglais (d'autant que le tien est "Définitivement indisponible").
 
WRInaute discret
Je pense sincerement que l'utilité de l'orienté objet comme de tout autre chose sur terre ne vient et n'est comprise que quand on en a besoin.

Il n'y a pratiquement rien que tu puissse faire en objet et que tu puisses pas faire en procédural.

seulement que la notion objet et la vision objet, est une question d'abstraction.

En exemple simple :

Supposons que tu aies a manipuler des cours et des etudiants.

Supposons que dans le dossier etudiant, t'aies pleins d'infos..
Ses coordonnées.. son cursus avant d'arriver, ses formations, ses experiences professionnelles etc..

physiquement parlant supposons que tu aies 4 tables :
etudiant , etudiant_peda, etudiant_formation, etudiant_exp_pro

faire abstraction de la construction et la structure de ta BDD, et travailler en objet, impliquerait a construire ton objet membe, avec ses differentes propriétés (attributs) et ses differentes fonctions (methodes).

Une fois ceci réalisé tu peux zapper completement ta bdd et l'oublier.. c'est tes objets que tu gere.. ca te permet une plus grande organisation, aisance et facilité d'utilisation.. et le jour ou tu as besoin de modifier ta base.. tu le craindra plus comme la peste.. car ca n'impliquera plus que des modifications mineures.. dans les methodes de ton objet..

ca a de tres grands avantages.. mais la transition n'est pas evidente.. et c'est surtout l'adoption du concept qui est plus chiante.. non pas son utilisation..

anyway.. je te souhaite une tres grosse merde ;)
 
WRInaute passionné
Pour aller dans le sens de ekay, lorsque la 1ère version de mon programme (cela ne me rajeunit pas!) était devenue un foutoir ingérable, j'ai tout repris à zéro en essayant d'utiliser au maximum la POO.
Au début ce fut fastidieux, mais maintenant je ne le regrette pas: si les objets sont bien conçus, la maintenance est plus que facilitée, les évolutions itou, la lecture idem...

J'essaie d'en intégrer petit à petir dans mes scripts php, et bien cela facilite pas mal la vie!

Ceci dit, je ne sais pas ce qu'est de la POO "pure".
 
WRInaute discret
de la poo pure c'est debile..
a mon avis :)

je pense qu'il faut tt utiliser a bon escient..

disons que j'utilise de la poo quand je peux regrouper sous un meme "concept" plusieurs fonctions..

pour des fonction "orphelines" et quoi qu'on en dise on en a besoin.. ca deviendrait carrément ingérable..

sachant egalement que mm php5 meme si bcp plus poussé que le 4, reste un peu jeune a ce niveau..

ex : on ne peut reellement detruire un objet.
 
WRInaute occasionnel
ekay a dit:
bah de la programation objet pure..
0 procédural..
est ce que ca existe vraiment ?

enfin c'est pas vraiment l'objet de mon fil.
les avantages de la POO sont indeniables mais effectivement, comme dans tout, il ne vaut pas tomber dans l'exces et voiloir faire de la POO pour faire de la POO.

moi mon idee etait de comprendre sur un exemple simple (donc petit) comment faire de la POO en PHP5. je suis toujours a la recherche d'exemples donc si vous avez quelques bons tutos avec, par exemple, creation de quelques classes, quelques methodes et interfacage avec BDD et navigateur, je suis preneur!

en tout cas, merci encore a tous pour vos commentaires et remarques.
 
X
xescorp
Guest
Le PHP5 ne change pas grand chose pour les petits sites qui sont statique avec 1 formulaire de contact :D

Ce qui est intéressant avec la POO, ce n'est pas vraiment la techno en soit mais surtout les frameworks qui en ont abouti tel Symfony (PHP5 only).

http://www.symfony-project.com/tutorial ... oject.html


Imaginons vous avez 10 tables et une appli web complète à faire :
- Vous les définissez dans un fichier (propel)
- Vous lancez une commande symfony qui va vous créer toute les classes manipulant ces 10 tables (propel)
- Vous récupérez un fichier sql pour créer votre base (propel)
- Vous lancez une commande qui va vous créer le back office de ces 10 tables (scaffolding)
- Vous lancez une commande qui va vous créer un module de front office, vous le faite X fois selon le nombre de modules (scaffolding)


C'est après que vous modifiez toutes ces classes à votre envie.


Les intérêts sont multiples :
- la séparation du code et du template est exemplaire
- votre appli symfony est portable sur différentes BDD (Sqlite, Mysql, Oracle..) et cela en changeant une ligne de config
- vous ne faite plus de SQL
- bibilio de fonctions PHP et même Ajax (manipulation de speculos par fonction php)
- votre appli n'a pas de trou de sécurité (à moins que vous n'utilisiez pas les fonctions fournies)
- le Framework est clairement un cadre de travail, toute personne peut comprendre une appli symfony (l'organisation globale est identique pour toute appli)


C'est ce dernier point que je trouve le plus intéressant, car cela peut concerner les personnes avec qui vous développez, mais aussi sur votre propre travail, l'autre jour je regardais de vielles classes PHP4, et j'ai mis du temps à comprendre la relation entre mes classes.

Ici, le nommage la relation entre classes sont normalisés, vous n'avez d'ailleurs pas besoin de créer beaucoup de classes par vous même, car la plupart des cas sont prévues.

Dans l'exemple du blog par exemple, notez que tous les fichiers PHP sont des classes, sauf le fichier php racine index.php (tout est url_rewriter) et les templates, dont voici un exemple (généré par scaffolding) avec la liste des posts du blog (à modifier bien entendu)

<?php
// auto-generated by sfPropelCrud
// date: 2007/04/17 17:44:32
?>
<h1>post</h1>

<table>
<thead>
<tr>
<th>Id</th>
<th>Title</th>
<th>Excerpt</th>
<th>Body</th>
<th>Created at</th>
</tr>
</thead>
<tbody>
<?php foreach ($posts as $post): ?>
<tr>
<td><?php echo link_to($post->getId(), 'post/show?id='.$post->getId()) ?></td>
<td><?php echo $post->getTitle() ?></td>
<td><?php echo $post->getExcerpt() ?></td>
<td><?php echo $post->getBody() ?></td>
<td><?php echo $post->getCreatedAt() ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>

<?php echo link_to ('create', 'post/create') ?>




Les Frameworks sont assez magique, mais c'est un peu comme apprendre un nouveau langage, et je ne suis pas sûre que ceux ne maitrisant pas totalement les concepts POO accrochent.

Il faut un temps d'apprentissage relativement important, mais le gain est énorme par la suite.


Pour Xtrade, Symfony c'est de la POO pure :D
 
WRInaute discret
un petit exemple d'une classe de gestion de bdd de notre framework en interne :

Code:
class furiousDatabase
{
	var $hostname;
	var $username;
	var $password;
	var $database;
	var $dbLink;
	

	function furiousDatabase($hostname,$username,$password,$database)
	{
		$this->hostname = $hostname;
		$this->username = $username;
		$this->password = $password;
		$this->database = $database;
	}

	function connect() 
	{
		$this->dbLink = @mysql_connect($this->hostname,$this->username,$this->password) or furiousMessage::message("Error","ERREUR [DATABASE]",mysql_errno()." : ".mysql_error(),"");
		@mysql_select_db($this->database,$this->dbLink) or furiousMessage::message("Error","ERREUR [DATABASE]",mysql_errno()." : ".mysql_error(),"");
		return $this->dbLink;
	}
	
	function query($query)
	{
		$result = mysql_query($query,$this->dbLink) or furiousMessage::message("Error","ERREUR [DATABASE]",mysql_errno()." : ".mysql_error()."<br>Query :\n".$query,"");
		return $result;
	}

	function free($result)
	{
		return @mysql_free_result($result);
	}

	function sqlFetchArray($result)
	{

		return @mysql_fetch_array($result);
	}

	function sqlFetchObject($result)
	{
		return @mysql_fetch_object($result);
	}

	function sqlNumRows($result)
	{
		return @mysql_num_rows($result);
	}

	function sqlInsertId($link)
	{
		if($link == "") $link = $this->dbLink;
		return mysql_insert_id($link);

	}
}
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Haut