Caputo's blog

Informatica, tecnologia, programmazione, fai da te, papercraft e papertoy

Piccola Guida OO in PHP

luglio 16th, 2010 by Giovanni Caputo

Guidva veloce per sviluppare PHP con tecnica Object Oriented.

Creare una classe in PHP

  1. <?php
  2. class ClasseMia
  3. {
  4. // Definizione dei metodi e delle proprietà
  5. }
  6. ?>

Istanziare la classe:

  1. $obj = new ClasseMia;

Definire le proprietà

public $proprieta = “Questa è la proprieta”;

Stampare la proprietà

Dopo aver instanziato la classe:

echo $obj->prop1;

Definire i metodi di una classe in PHP

  1. <?php
  2. class ClasseMia
  3. {
  4. public $prop1 = “I’m a class property!”;
  5. public function setProperty($newval)
  6. {
  7. $this->prop1 = $newval;
  8. }
  9. public function getProperty()
  10. {
  11. return $this->prop1 . “<br />”;
  12. }
  13. }
  14. ?>

Metodo costruttore di una classe PHP

  1. public function __construct()
  2. {
  3. echo ‘The class “‘, __CLASS__, ‘” was initiated!<br />’;
  4. }

Questo metodo viene esegito quando viene istanziata la classe.

Allo stesso modo esiste il metodo distruttore:

  1. public function __destruct()
  2. {
  3. echo ‘The class “‘, __CLASS__, ‘” was destroyed.<br />’;
  4. }

Effettuare la echo di un oggetto

Per effettuare la echo di un oggetto è necessario definire il metodo __toString della classe:

  1. public function __toString()
  2. {
  3. echo “Using the toString method: “;
  4. return $this->getProperty();
  5. }

Estendere una classe

  1. class SecondaClasse extends ClasseMia
  2. {
  3. public function newMethod()
  4. {
  5. echo “From a new method in ” . __CLASS__ . “.<br />”;
  6. }
  7. }

Eseguire i metodo della classe padre:

parent::__construct();

Proprietà e metodi statici

Sono proprietà e o metodi comuni a ogni oggetto che instanzia la classe. Inoltre non necessitano di instanziare la classd.

Questo post è stato postato venerdì, luglio 16th, 2010 at 18:53 nella categoria Programmazione, Siti Web, Tecnologia. Tags:, , .
Puoi seguire tutti i commenti di questo articolo attraverso RSS 2.0 feed. Puoi lasciare un commento, o trackback dal nostro sito.

5 responses about “Piccola Guida OO in PHP”

  1. Flavio said:

    Grandissimo articolo! Apprezzo molto il tuo blog e lo seguo da tempo. Per rendere più completo l’articolo, ti chiederei (scusandomi per l’ignoranza che sto dimostrando) se possibile di aggiungere come si potrebbero organizzare le classi a livello di file. Ad esempio: un file per ogni classe o più classi in un file? Se un file per ogni classe, che nome conviene dare al file?

    Grazie,
    Flavio

  2. Giovanni Caputo said:

    Ciao io utilizzo un file per ogni classe…
    Inoltre il nome del file deve avere lo stesso nome della classe e utilizzare la funzione

    function __autoload($className) {
    if (file_exists($className . ‘.php’)) require $className . ‘.php’;
    else throw new Exception(‘Class “‘ . $className . ‘” could not be autoloaded’);
    }

    che viene eseguita quando viene istanziata una classe. In questo modo nn è necessario inserire a mano tutte le include/require…

  3. Flavio said:

    OK! Molto interessante. Unico limite di questo sistema mi sembra l’obbligo di dover mettere tutte le classi in un’unica cartella.

    Grazie,
    Flavio

  4. Giovanni Caputo said:

    Eventualmente è possibile modificare opportunamente la funzione __autoload in maniera tale che legga anche nelle sottodirectory… (ma penso che questo potrebbe essere molto pensante per progetti corposi) opppure è possibile creare un Map tra nomi classi e directory….

    Invece con i framework come Zend, Solar o Symfony ci sono già delle funzionalità implementate, ad esempio la classe Vendor_User() è associata automanticamente al file User nella cartella Vendor (Vendor/User.php)

    Non ti so dire di + al momento xke nn ne ho mai utilizzato uno… ma penso che tali framework siano molto utili..

    Se trovi alternative non esitare a condividerle.

    Grazie a te!

  5. Flavio said:

    Grande spiegazione! Secondo me splittando la stringa Vendor_User in due parti, avendo come separatore sempre l’underscore (_), si ricava la cartella e il nome del file. Forse è più semplice di quanto pensassi.

    Di nuovo grazie e complimenti!

Lascia un commento

You must be loggati to post a comment.