Newsgroup: it.comp.www.php
Titolo: Dividere file php

Ho una classe che è composta da circa 3000 righe.
Devo aggiungere un metodo che è circa 2500 righe, e vorrei tenerlo in un 
file separato, ma non riesco a capire se e come sia possibile.
TIA
Andrea


wrote:

certo, metti il metodo in un altro file e includilo (include() o
require()) dove dovrebbe andare.
P.S. Sicuramente sia la classe che il metodo sono fatti male. Un
metodo non dovrebbe essere lungo più di una decina di righe (almeno
che non si tratti di switch() o if in cascata), e una classe non
dovrebbe contenere milioni di metodi. Prova a spezzettare metodo e
classe in qualcosa di più gestibile!

fma...@gmail.com
 ha scritto:

Forse ho risolto: include_once() va messo *dentro la funzione*, non 
dentro la classe...
Sul fatto che la classe deve essere di alcune decine di righe, è 
un'opinione tua: se devo implementare una cosa molto complessa (in 
termini di funzione che la classe svolge), è pacifico che il numero di 
righe cresca.

 righe cresca.
Ci sono sempre i casi particolari, ma non e` un'opinione solo sua.
Gia` una classe di 3000 righe e` una cosa fuori dal mondo. Aggiungerci 
anche un metodo altrettanto grosso e`... non saprei definirlo.
Cosa deve fare il tuo codice lo sai tu, ma generalmente conviene 
suddividere le varie parti in altre funzioni o in altre classi che 
svolgano compiti specifici. Quello che perdi in prestazioni lo guadagni 
centuplicato quando devi rimetterci le mani in seguito.
Bye.

 righe cresca.
E' vero che sia una mia opinione, ma è anche l'opinione della
stragrande maggioranza dei programmatori. Indipendentemente da quale
sia il problema da risolvere classi immense sottolineano solo il fatto
che non si è riusciti ad trovare/applicare un pattern. Spero che tu
abbia colleghi molto comprensivi, perchè mettere le mani in una classe
da 5.5Krighe non è piacevole.

Alessandro Pellizzari ha scritto:

La classe è lunga perché ci sono parecchi commenti (circa il 20%), poi 
il nucleo principale è un ciclo che interroga in cascata svariate 
tabelle di un db, e ad ogni query metto sempre il controllo di 
congruenza (sono un cacami****a, in questo senso, ma quando la classe è 
in esecuzione c'è solo 1 warning, che sto risolvendo; il mio collega 
invece scrive codice adminchiam e mi genera circa 20 tra notice e 
warning ogni volta che qualcuno muove il mouse).
L'elaborazione dura circa 1 secondo, e viene fatta solo quando 
l'operatore sceglie "trova il migliore", in pratica ogni tanto, quando 
si vuole vedere se esiste quello che si cerca.
E' impostata come classe (e non come funzioni indipendenti) perché c'è 
un set di dati (circa 20 variabili) che è condiviso tra tutti i metodi, 
in più c'è un vettore che viene elaborato più volte da metodi diversi.
Comunque ho ridotto le dimensioni del metodo da aggiungere, adesso siamo 
sulle 500 righe.

 sulle 500 righe.
Se da 2500 si riesce a passare a 500 significa che c'era un bel
margine di miglioramento.

 righe cresca.
E' vero... però devi capire se la classe è un "artigiano" o 
un'imprenditore con 10 dipendenti. Forse la "maxiclasse" potrebbe essere 
un "organizzatore" di più classi specializzate ciascuna su una 
particolare funzione (scusa il gioco di parole).
A me capitava di creare classi gigantesche quando iniziavo ad utilizzare 
la oop con mentalità ancora legata alla programmazione tradizionale...
Spiego diversamente: puoi creare una classe "automobile" che fa tutto... 
accende i fari, chiude gli sportelli ecc...
oppure puoi creare una classe "automobile" che "possiede" due classi 
"sportello", due classi "faro" ecc..