Sei qui: Home » Guide » PHP » Guida completa a PHP » Introduzione alle classi ed agli oggetti in PHP

Introduzione alle classi ed agli oggetti in PHP

In questa parte della guida è illustrato il "nocciolo" di PHP e di tutti i programmi orientati all'utilizzo degli oggetti. Attraverso la dichiarazione di una classe è, infatti, possibile definire lo "scheletro" dell'oggetto che verrà creato con l'instanziazione della classe stessa.

Classi ed oggetti.

Quando si parla di linguaggio ad oggetti, in qualsiasi ambito, viene spontaneo chiedersi che cosa possa significare un oggetto in informatica. Nella vita comune un oggetto è un qualcosa che ha delle proprietà, come ad esempio il colore, la forma, le dimensioni, e con il quale è possibile compiere una o più azioni. L'esempio tipico di oggetto è quello di una autovettura. Questa ha delle proprietà che possono, ad esempio, essere il colore, la marca, il modello, il tipo di motore. L'autovettura, inoltre, ha dei metodi con il quale è possibile modificare qualcosa del suo stato. Il metodo accellera, ad esempio la fa avanzare, il metodo frena le fa perdere velocità e via dicendo.

Quanto appena detto ha significato nella realtà ma, in informatica, cosa significa il termine oggetto? La stessa cosa! Un oggetto informatico non è altro che un costrutto virtuale, definito da una classe, al quale possono essere assegnati dei valori (proprietà) o delle azioni (metodi).  Il codice di scrittura di un oggetto prende il nome di classe proprio perchè identici oggetti facenti parte della stessa classe hanno medesime proprietà, sebbene con diversi valori, e medesimi metodi. Vediamo un esempio.

La classe "autovettura"
Nome Tipo Descrizione
Velocità massima valore La velocità massima raggiungibile dall'autovettura
Velocità corrente valore La velocità corrente dell'autovettura
Tipo di motore valore Che tipo di motore ha? Benzina o diesel?
Marca valore Che marca di autovettura?
Accellera metodo Aumenta la velocità corrente
Frena metodo Diminuisce la velocità corrente

Le classi in PHP

PHP è un linguaggio orientato agli oggetti e per questo motivo, mediante l'uso di classi, rende possibile utilizzare le funzionalità di metodi e proprietà appena descritte. Il costrutto è abbastanza semplice e prevede l'inserimento della keyword "class" seguita dal blocco in parentesi graffe.

Un semplice esempio di classe.

<?php
 class MiaClasse{
 // Qui va il codice della classe 
 }
 ?>

Con il semplice esempio di sopra abbiamo definito la classe MiaClasse che, adesso, esiste nel nostro script.

Istanziare le classi.

Una volta scritto il codice della classe è comodo poter disporre di un oggetto per utilizzare i metodi e le proprietà. Per fare questo è possibile assegnare ad una qualsiasi variabile la valenza di oggetto con il semplice codice.

<?php
 $oggetto = new Classe;
 // Adesso $oggetto è un oggetto le cui peculiarità sono definite nel codice
 // di classe MiaClasse
 
 class MiaClasse{
 // Qui va il codice della classe
 }
 ?>

 

Proprietà e metodi della classe.

A livello di codice della classe, ovvero tra le parentesi graffe, è possibile inserire sia le proprietà che i metodi. Le proprietà sono delle variabili mentre i metodi sono delle funzioni. Vediamo com'è possibile fare una classe per l'ipotetica autovettura sopra proposta. Il costrutto $this-> serve ad identificare, all'interno della classe, si i metodi che le variabili della classe stessa.

<?php
 class Autovettura{
 // Seguono le proprietà;
 
 Public $vel_max ;
 Public $vel_curr = 0; // Assegna automaticamente un valore
 Public $motore;
 Public $marca;
 
 Function Accellera($valore){
 //  Accellera se la velocità massima non
 //  e' stata raggiunta. Si noti il simbolo del
 // Punto esclamativo che sta ad indicare
 // la negazione logica (not)
 if (!$this->vel_max >== $this->vel_curr){
 $this->vel_curr = $this->vel_curr + $valore;        
 } 
 }
 
 Function Frena ($valore){
 //  Decelera se la velocità corrente non
 //  e' uguale a zero.
 if (!$this->vel_curr == 0){
 $this->vel_curr = $this->vel_curr - $valore;        
 } 
 
 // Controlla se, dopo la decelerazione, l'autovettura ha assunto un valore negativo
 if ($this->vel_curr == 0){
 $this-vel_curr = 0;
 }
 }
 ?>

 

A questo punto la classe può essere istanziata ed ogni riferimento può essere utilizzato dall'oggetto appena creato. {geshi lang="php"}<?php // Codice della classe Autovettura non riportato // Istanzia l'oggetto $autovettura = new autovettura; // Definisce la proprietà vel_max$autovettura . $autovettura->vel_max = 180; // Accellera di 30 $autovettura->accellera(30) // Adesso $autovettura->vel_curr è uguale a 30; //frena di 20 $autovettura->frena(20) // Adesso $autovettura->vel_curr è uguale a 10; ?>

Ricerca
News
giu 3, 2010
È stato appena rilasciato, dalla società JetBrains, un nuovo IDE per la creazione rapida di progetti Web/PHP/MySQL.

tag: phpstorm, IDE, php

apr 3, 2010
Rilasciato JQuery UI in versione stabile. La release 1.8, oltre a numerosi bugfix, possiede due interessanti Widgets.

tag: jquery

mar 12, 2010
È stato da poco rilasciato il famoso forum SMF in versione 2.0RC3; tanti bugfix e un'aspetto più consolidato.

tag: smf, vbulletin, forum

mar 11, 2010
Un articolo "passo-passo" che spiega come configurare Google Apps con un qualsiasi tipo di pacchetto TopHost. Un'accoppiata vincente!

tag: TopHost, Google Apps

mar 9, 2010
Inserita la guida completa a PHP

tag: howtoprog

mar 8, 2010
Il sito è in fase di restyling; ci scusiamo per gli eventuali disagi ma, come vedrete a breve, vale la pena pazientare qualche giorno!