Newsgroup: it.comp.www.php
Titolo: Domandine sciolte da un programmatore C#

Ciao a tutti,
Sto iniziando dopo anni di tentativi a dedicarmi anche a php che trovo molto 
affascinante come linguaggio.
Ora per iniziando a capirne sintassi e comportamenti non posso che trovarmi 
in contrasto con altri linguaggi "non script".
In questi giorni di inizio studi mi trovo a voler fare qualche domandina 
rapida. :)
- IDE e debugger
Faccio una grande fatica a capire come mai con tanta gente che usa php non 
si riesce a trovare un buon debugger (in particolare free).
Ora sto tentando PDT Project sotto eclipse e lo trovo ottimo come IDE (anche 
se senza il designer per pagine web) ma come debugger è un casino e un po' 
limitato :(
Voi che usate?
- dichiarazioni variabili
Mi trovo un po' spiazzato sul fatto che (ditemi se sbaglio!)
    - non si può forzare la dichiarazione delle variabili, il che porta al 
classico errore che php non indica
        $my_var;
        ...
        my_func($myvar);
    - non si può forzare il tipo della var
        // niente string $my_var :(
        $my_var = quello_che_vuoi;
        // e nemmeno questo forza niente...
        function my_func(string $s) {}
        my_func(quello_che_vuoi)
- metodi statici delle classi
        class MyClass
        {
            // posso dichiarare una variabile statica
            static $my_var;
            // ma non posso dichiarare una funzione statica!
            // come faccio a sapere che devo chiamare questa funzione come
            // MyClass::my_func() piuttosto che $my_class->my_func()???
            function my_func() {}
        }
Per ora questa è la base di quanto ho notato in php... seguiranno altre 
domande noiose :)
Ciao, grazie :) 

 
Pensa che io sto imparando (da programmatore php) il visual basic e c#
in ambiente .net ...
Enrico

 in ambiente .net ...
Beh, per quello mi trovi tranquillamente a litigare con principianti nei NG 
di .Net :P
Ciao 

             function my_func() {}
Come no? si scrive
static function my_func(){}
Ma attento che se non hai settato error_reporting come ti ho detto, il
PHP e' molto... liberale e non ti dice se sbagli usando l'operatore di
risoluzione statico :: al posto di ->. Questo per compatibilita' con PHP 4,
dove l'attributo static non esisteva.
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it


ma cavolo... ho provato ieri e mettere static davanti a function mi dava 
solo errore... chissà che scrivevo, poi ho cercato nel confusionario manuale 
e mostrava esempi di static solo sulle variabili e non sulle funzioni 
(retrocompatibilità?) e ho rinunciato...
Adesso ci ho riprovato e questo viene interpretato correttamente... boh :)
Vabbeh, continuiamo :P
Ciao 

 - metodi statici delle classi
[..]
come ti avranno gia' detto esiste la parola chiave static..
-- 
www.iuz-lab.info
 - 
www.php-faq.org

 Io ho l'ho segnato come E_ALL... a che serve un OR su E_ALL? :)
[..]
nel confusionario ( :-) ) manuale dice..
http://php.net/error_reporting
 - guarda il changelog o segui il link E_ALL
-- 
www.iuz-lab.info
 - 
www.php-faq.org

 
-- 
Ciao.
Roberto Rossi
Web    : 
http://www.robertorossi.org

 
http://it.php.net/manual/it/language.oop5.static.php
Sì, sì, colpa mia, come dicevo sopra ho avuto qualche problema a usare 
static sulle funzioni e non so perchè.
Ciao 

 Io ho l'ho segnato come E_ALL... a che serve un OR su E_ALL? :)
"All" vuol dire "tutto" nel linguaggio comune, ma non in PHP :-)
http://it.php.net/manual/en/ref.errorfunc.php
E_STYLE e' stato eliminato nelle recentissime versioni di PHP 5, ma pare
sia ancora definito, per cui io lo metto fino a quando mi dara' un errore.


> In alternativa, personalmente acquisterei Zend Studio.
[..]
l'ho provato ed e' buono..
ma come ho detto in precedenza.. preferisco fare a meno delle funzionalita'
che offre.. anche se in passato mi e' stato utile..
-- 
www.iuz-lab.info
 - 
www.php-faq.org

 affascinante come linguaggio.
Dimenticavo: se hai intenzione di capire la natura e la "filosofia" del
linguaggio, allora ti serve un bel libro come "Programming PHP" di O'Reilly.
E' un libro su PHP 4, ma va benissimo lo stesso, e poi porta l'imprimatur
di Rasmus Lerdorf. Il manuale 
www.php.net
 e' solo un reference inadatto per
avere una visione organica della natura del linguaggio e le motivazioni di
certe scelte, rischi di perdere del tempo e di confonderti.


 
Capisco benissimo che tuo possa essere disorientato. Lo ero anch'io. 
Abituati a sistemi complessi come quelli microsoft, l'approccio a PHP è 
sempre un po traumatico.
Anch'io all'inizio ero spaventato dall'assenza di uno strumento standard 
per il debug. Poi ho utilizzato, con soddisfazione, sia XDebug (che 
sporadicamente utilizzo), sia DBG (
http://dd.cron.ru/dbg/
), facendo le 
stesse cose che facevo con il debugger di 
VB.NET
.
Adesso, dopo aver studiato per bene il linguaggio, dopo averne capito la 
filosofia, non vedo quale sia il problema, basta scegliere e studiare un po.

Bene, se hai "error_reporting=E_ALL", allora il problema potrebbe essere 
in "display_errors = On".
Per la cronaca io sto utilizzando PHP 5.2.1, con Apache 2 in windows vista.


 insormontabile.. con o senza debugger..
Perdonami, adesso mi prenderai a calci, ma studio programmazione OOP da 
dieci anni (oltre a quella "spaghetti" nei dieci anni precedenti) e quanto 
dici mi pare una vera idiozia: programmare con notepad e facendo un mucchio 
di errori perdento un sacco di tempo e con un mucchio di frustrazione 
sarebbe una cosa positiva?
Non parlo di php, ma del tuo discorso: a me pare il discorso di un 
vecchietto che non ha trovato niente di nuovo oltre alla programmazione 
nello Zx80...
Ciao 

 Ciao
non ti dico questo..
ma ti dico che se continui a programmare.. e fare cosi' tanti errori c'e'
qualcosa che non va'.. perdere tempo per trovare e correggere errori e' una
contraddizione in termini.. poiche' trovare e correggere errori non e' mai
una perdita di tempo.. non e' possibile commettere cosi' tanti nuovi errori
ogni volta :-P
esistono molti modi di programmare senza l'ausilio di un debugger.. e cosi'
deve essere..
comunque si, sono un aitante vecchietto di poco piu' di 20 anni che giusto
qualche mese fa' ha ricomprato un commodore perche' in preda alla
nostalgia.. :-)
-- 
www.iuz-lab.info
 - 
www.php-faq.org

 
io uso devphp 1.9.4 leggero colora solo il codice
il problema non e' il codice, quello si corregge, il VERO errore
e' quello di strutturazione di un programma quello e' grave
vale per tutti pero

 rigorosi con la loro sintassi, guidelines, pattern design ecc...
Se vuoi seriamente imparare PHP devi toglierti dalla testa l'idea che 
esistano linguaggi seri e linguaggi rilassanti.
Se trovi il PHP poco serio, Javascript sara` un giocattolino, immagino. 
Eppure viene usato da Google per un sacco di siti.
Semplicemente sei abituato alla tipizzazione statica e forte e non a 
quella dinamica e debole.
Ognuna delle due ha vantaggi e svantaggi.
Se io ho una serie di oggetti con compiti diversi e voglio passarli a 
una funzione che ne stampa il valore, con PHP mi basta definire in 
ognuno un magic method __toString(), in C#/Java devo per forza fare in 
modo che tutti ereditino un'interfaccia o siano derivati da un metodo 
base, altrimenti non posso passarli alla funzione.
Lo svantaggio e` che se mi sono dimenticato di definire __toString() in 
PHP, mi trovo un errore non verificabile dal compilatore o dal 
debugger ma solo a runtime.
Lo stesso comportamento lo riscontri con tutti i linguaggi dinamici. 
Per esempio in python e ruby.
Personalmente sopporto poco dover scrivere n volte il nome della 
classe quando uso un oggetto, e fare cast espliciti ogni volta che devo 
passarlo in giro.
Do` nomi significativi alle variabili e alle classi, e so cosa mi sto 
portando in giro senza bisogno che un compilatore mi dica che non e` 
quello che sembra.
Bye.