29-08-2012, 09:21 AM
(Modification du message : 29-08-2012, 10:11 AM par Sephi-Chan.)
Au regard de ton exemple d'inscription, voilà un exemple de ce que tu pourrais faire avec Ruby on Rails.
Dans le contrôleur, on a des actions (chaque méthode). Ces actions sont comme tes scripts PHP : elles peuvent renvoyer du contenu HTML (ou même des images, du JSON, du XML, etc.) ou rediriger l'utilisateur.
Ensuite on a les modèles, qui définissent les relations, les règles de validation, etc.
Comme tu peux le voir, j'ia beaucoup moins de code et le peu que j'écris est très explicite et concis. Et je ne m'embête pas avec la sécurité des requêtes : tout est fait pour moi.
Et tu n'as pas encore vue la vue, avec des outils pour générer des formulaires, avec messages d'erreurs, remplissage automatique, etc.
Donc voilà. L'OO on s'en fout un peu en fait. Ce qui importe, c'est d'utiliser les frameworks… Qui sont en OO. :p
Dans le contrôleur, on a des actions (chaque méthode). Ces actions sont comme tes scripts PHP : elles peuvent renvoyer du contenu HTML (ou même des images, du JSON, du XML, etc.) ou rediriger l'utilisateur.
class UsersController < ApplicationController
# Page qui présente le formulaire d'inscription, servie via l'URL `/users/new`.
# Le contenu HTML de la page est issu du fichier `app/views/users/new` (que je montre plus bas).
def new
@user = User.new
end
# Page de traitement du formulaire d'inscription, appelée via l'URL `/users` en POST.
def create
@user = User.new(params[:users])
# On sauvegarde l'utilisateur, si ça marche on crée un cookie et on
# renvoie l'utilisateur sur la page d'accueil avec un message.
if @user.save
cookies.permanent[:user_id] = @user.id
@user.create_station!(cristal: 3000, mineral: 1000)
@user.create_talent!
redirect_to '/', notice: 'Bienvenue !'
# Sinon, la validation échoué on affiche le formulaire avec les
# données déjà remplies et les messages d'erreurs.
else
render :new
end
end
end
Ensuite on a les modèles, qui définissent les relations, les règles de validation, etc.
# Implique qu'une table `users` existe, avec des colonnes `email`, `login`, `password_digest` et `faction_id`.
class User < ActiveRecord::Base
has_secure_password
validates_uniqueness_of :email
validates_email_format_of :email
validates_uniqueness_of :login
validates_length_of :login, within: 3..25
validates_format_of :login, with: /^[A-Z]+/
validates_inclusion_of :faction, in: Faction.all
belongs_to :faction
has_one tation
has_one :talent
end
# Implique qu'une table `factions` existe.
class Faction < ActiveRecord::Base
has_many :users
end
# Implique qu'une table `talents` existe, avec une colonne `user_id`.
class Talent < ActiveRecord::Base
belongs_to :user
end
# Implique qu'une table `stations` existe, avec une colonne `user_id`.
class Station < ActiveRecord::Base
belongs_to :user
end
Comme tu peux le voir, j'ia beaucoup moins de code et le peu que j'écris est très explicite et concis. Et je ne m'embête pas avec la sécurité des requêtes : tout est fait pour moi.
Et tu n'as pas encore vue la vue, avec des outils pour générer des formulaires, avec messages d'erreurs, remplissage automatique, etc.
<%= form_for @user do |form| %>
<div>
<%= form.label :login %><br />
<%= form.text_field :login %>
</div>
<div>
<%= form.label :email %><br />
<%= form.email_field :email %>
</div>
<div>
<%= form.label :password %><br />
<%= form.password_field :password %>
</div>
<div>
<%= form.label :password_confirmation %><br />
<%= form.password_field :password_confirmation %>
</div>
<div>
<%= form.submit %>
</div>
<% end %>
Donc voilà. L'OO on s'en fout un peu en fait. Ce qui importe, c'est d'utiliser les frameworks… Qui sont en OO. :p