Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

25 domande e risposte su PHP 5

Che differenza c'è tra PHP 4 e PHP 5, cosa è la programmazione ad oggetti, come posso installare PHP 5 sul mio server Windows? 25 risposte a PHP 5
Che differenza c'è tra PHP 4 e PHP 5, cosa è la programmazione ad oggetti, come posso installare PHP 5 sul mio server Windows? 25 risposte a PHP 5
Link copiato negli appunti

Queste FAQ (Frequently Asked Questions) cercheranno di rispondere ai quesiti più comuni su PHP v.5, l'ultima release del celebre linguaggio di programmazione lato server, che ha introdotto notevoli miglioramenti specialmente dal punto di vista della programmazione Object Oriented (OOP).

Che differenze ci sono tra PHP 4 e PHP 5?

Non è una domanda a cui è possibile rispondere con due righe, infatti freephp.html.it sta dedicando diversi articoli alle novità introdotte. In due parole possiamo dire che le principali differenze stanno nella gestione interna degli oggetti da parte dello Zend Engine 2 (il cosiddetto "motore di PHP"), ora molto più efficiente, e nella sintassi utilizzata nella dichiarazione delle classi. Queste modifiche rendono PHP più simile ad altri linguaggi tipicamente Object Oriented come Java o C++. Inoltre si è approfittato dell'occasione per ampliare il già fornito arsenale PHP con alcune estensioni che aggiungono funzionalità davvero potenti.

Quando PHP 5 verrà supportato dai fornitori di hosting?

Verosimilmente le prime offerte compariranno abbastanza presto, anche per questioni pubblicitarie, ma non bisogna avere fretta. Ci vorranno parecchi mesi perché la nuova versione del linguaggio diventi davvero stabile, collaudata ed affidabile quanto la precedente.

Le classi e gli script pensati per PHP 4 continueranno a funzionare?

In teoria sì, gli sviluppatori hanno lavorato molto per garantire la retrocompatibilità e, specialmente se gli script sono stati realizzati a regola d'arte, non ci dovrebbero essere problemi. Anche nel caso di differenze incolmabili (come ad esempio l'assegnazione degli oggetti come copia anziché riferimento) abilitando in php.ini la direttiva specifica "zend.ze1_compatibility_mode" funzionerà tutto come prima.

PHP 5 è un linguaggio cosiddetto "general purpose"?

Non esattamente, anche se le funzionalità non strettamente legate al WEB vengono costantemente potenziate, PHP rimane volutamente un linguaggio prevalentemente orientato al WEB.

Non voglio abbandonare PHP 4 ma vorrei iniziare a testare PHP 5, posso farli convivere sulla stessa macchina?

Sì con qualche accortezza, troverai tutti i dettagli in questi due articoli:
Testare PHP 5 conservando PHP 4: server Linux,
Testare PHP 5 conservando PHP 4: server Windows

Come installo PHP 5?

Leggi il manuale ufficiale di www.php.net e gli articoli di freephp.html.it citati nella risposta precente

Meglio installare PHP 5 con Apache 1.3.x o Apache 2.x?

Per ora le sole versioni di Apache supportate appartengono al ramo 1.3.x. Questo non significa che abilitando il prefork o utilizzando PHP CGI o FAST CGI le cose non possano funzionare egregiamente, ma per ora il team PHP sconsiglia l'utilizzo di Apache 2.x in siti di produzione.

Aiuto! Le funzioni per Mysql non esistono più?

A causa di alcune incompatibilità tra licenze non sono più abilitate di default. In Linux è necessario avere installato Mysql e utilizzare l'opzione di configurazione with-mysql=/path/to/mysql_install_dir. In Windows è necessario copiare in System (o System32) la libreria libmysql.dll (presente nel pacchetto di installazione di PHP), verificare che nella directory ext sia presente php_mysql.dll e decommentare l'apposita riga nel php.ini.

PHP è diventato un linguaggio object oriented puro?

No, pur con le differenze del caso, è più corretto classificarlo tra i linguaggi ibridi come C o Python.

Non so nulla di OOP, per caso PHP 5 mi costringerà a programmare a oggetti?

No, sarà possibile continuare a programmare esattamente come prima anche se sarebbe un peccato non approfittare delle novità introdotte per avvicinarsi all'Object Oriented Programming.

Vorrei saperne di più sulla programmazione a oggetti in PHP, da dove posso iniziare?

Ecco un po' di link: La programmazione ad oggetti con PHP4,
Tecniche per programmare a oggetti, Taking PHP the OO way.

Per imparare PHP da 0 mi conviene iniziare con PHP 4?

personalmente penso di sì: PHP 5 è un'evoluzione di PHP come lo conosciamo e le principali novità sintattiche riguardano esclusivamente classi e oggetti. In un ipotetico percorso di apprendimento meglio iniziare dalla documentazione PHP 4 e magari passare a PHP 5 soltanto quando si affronteranno i temi legati all OOP.

Perché dovrei imparare a programmare a oggetti? Mi sembra una complicazione inutile e non ne comprendo i vantaggi.

Non è obbligatorio (vedi anche la risposta precedente), però nel caso di applicazioni complesse l'approccio OOP consente di organizzare meglio il codice e lo rende più facile da mantenere. Devi fare un atto di fede, iniza a sperimentare e probabilmente presto ti troverai a tuo agio. Gli articoli elencati di seguito cercano di dimostrare come sia utile pensare in termini di oggetti: Validare i form con la programmazione a oggetti.

Ma in definitiva cose'è un "oggetto"?

È un componente di codice autonomo che incapsula uno "stato" e un "comportamento".
Racchiude in sé sia dati (le proprietà) che funzioni (i metodi): in modo molto sbrigativo potremmo definire gli oggetti come array in grado di contenere azioni. L'oggetto trova la sua definizione in una classe.

Cos'è una classe?

L'oggetto è uno dei 6 tipi di dati conosciuti da PHP, tuttavia si distingue nettamente dagli altri in quanto ogni oggetto deve le proprie caratteristiche fondamentali ad un'entità definita dal programmatore: la classe appunto. Da una classe può essere creato un numero arbitrario di oggetti che ne costituiscono le istanze, quindi tra classe e oggetto fondamentalmente intercorre la differenza che esiste tra l'idea di cane e il barboncino del nostro vicino (ovvero un animale ben preciso).

Cosa sono i membri di un oggetto?

I metodi ("azioni") e le proprietà di un oggetto.

Cos'è l'ereditarietà?

Si tratta di una caratteristica che consente al programmatore di organizzare il codice in modo più razionale e risparmiare molto tempo.Una classe (child class) può ereditare proprietà e metodi di un'altra (parent class) specializzandone le funzioni. Le istanze della classe figlia presenteranno proprietà e metodi delle istanze della classe madre con le differenze o aggiunte specificate appositamente. L'ereditarietà va usata bene, cioè tenendo presente che lo scopo non è quello di "fare in fretta", bensì di scrivere codice più ordinato ed efficiente: non dobbiamo far ereditare una classe da un'altra soltanto perché ci fa risparmiare tempo, l'ereditarietà deve procedere dal generale al particolare. La classe derivata deve essere spontaneamente identificabile come una specializzazione della classe da cui deriva (rapporto "is a", ovvero "è un tipo di").

Cosa vuol dire "interfaccia dell'oggetto" e cos'è l'incapsulamento?

L'interfaccia pubblica dell'oggetto è il modo in cui l'oggetto si presenta esteriormente (in contrapposizione al suo funzionamento interno), viene detta anche API (Application Program Interface): per questa ragione si parla di "incapsulamento". Non si tratta di un concetto così astruso: in fondo quando guidiamo un' automobile normalmente non facciamo altro che utilizzarne l'API (volante, cambio e pedali), senza troppo preoccuparci del funzionamento interno del motore.

Cos'è una classe astratta?

Una classe astratta non può essere istanziata: funge esclusivamente da modello che definisce metodi e proprietà per un certo numero di sotto-classi.
Le classi astratte possono contenere anche metodi astratti, cioè metodi che non sono implementati nella classe in questione ma che devono obbligatoriamente essere implementati nelle sottoclassi.

Cos'è un'interfaccia?

Non è la stessa cosa dell'interfaccia (API) di cui si parla nella domanda n.19, anche se l'interfaccia in questione serve proprio a definire l'interfaccia pubblica di un oggetto. È un un tipo speciale di classe astratta nella quale tutti i metodi sono "public" e "abstract", stabilisce una regola alla quale l'API di tutte le classi figlie dovrà adeguarsi. Lo scopo è quello di rendere il codice più chiaro e consentire agli sviluppatori che lavorano in team di creare delle linee guida rigide a cui attenersi nelle varie fasi di sviluppo. Una classe può ereditare contemporaneamente le API di interfacce differenti.

Cos'è un "design pattern"?

Una soluzione consolidata per un problema ricorrente in un dato contesto. È un concetto che compare spesso nella programmazione object oriented, l'interazione tra alcuni oggetti per la soluzione di un certo problema può essere facilmente standardizzata adattandola alla situazione concreta. Per saperne di più puoi anche visistare www.phppatterns.com

Dove posso trovare altra documentazione sulle le novità introdotte con PHP 5?

Per la documentazione in italiano ovviamente ti consigliamo di continuare tenere d'occhio Freephp.html.it e il forum di html.it.
Per la documentazione in lingua inglese elenchiamo di seguito le migliori risorse che siamo riusciti a rintracciare in rete:
PHP 5 InfoCenter, Changes in PHP 5/Zend Engine 2.0, PHP5 da PhpVolcano.

Sono già esperto e queste FAQ non mi dicono nulla che già non sapessi, dove posso trovare risposte più approfondite?

Forse nelle Guru Q&A di Zend.com.

È meglio PHP 5 o.... Java, ASP.NET, Python?

È una domanda troppo generica e forse denota un po' di inesperienza: meglio per fare che cosa? Su quale piattaforma? Ti invito a frequentare il Forum di HTML.it.

Ti consigliamo anche