Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Primi dubbietti su PHP OO, qualche parere?

    Ciao,
    recentemente ho iniziato a studiare PHP OO sulle ottime guide di HTML.it
    Premetto che vengo da 2 corsi universitari di programmazione ad oggetti in Java...e tante cose mi sembrano abbastanza simili...per ora ho questo piccolo dubbio relativo alle differenze che mi pare di riscontrare con Java.

    Facciamo un esempio banalissimo (tratto proprio dal primo esempio della guida di PHP OO di HTML.it):

    codice:
    <?php
    
    /* DICHIARAZIONE DELLA CLASSE MyClass */
    class MyClass{
    
        // VARIABILI MEMBRO:
        public $a = 10;
        public $b = 20;
    
        // FUNZIONI MEMBRO:
        public function sayHello(){
            echo "Hello";
        }
    }
    
    $oggetto_1 = new MyClass();     // Crea un nuovo oggetto istanza di MyClass
    $oggetto_1->sayHello();         // Invoca il metodo sayHello() e stampa "Hello"
    echo $oggetto_1->a;         // Accedi al contenuto del memrbo a dell'oggetto e stampane il valore
    
    $oggetto_2 = new MyClass();     // Crea un nuovo oggetto istanza di MyClass
    $oggetto_2->a = 20;        // Accedi al contenuto del membro a dell'oggetto e modificane il valore
    
    
    ?>
    Bene...viene dichiarata una classe MyClass con delle variabili membro ed un metodo sayHello().
    Fuori da tale classe vengono creati 2 oggetti istanza di MyClass e vengono fatte un po' di operazioni come accedere alle variabili membro ed invocare il metodo sayHello()

    Ok...no problem...però quì noto una bella differenza con Java...cioè...in Java tali operazioni (quelle che quì sono dichiarate fuori dalla classe MyClass) avrei dovuto per forza dichiararle in una specifica classe di test...quì invece no...fanno parte del codice PHP ma non sono in nessuna classe...

    Come mai? e avrei potuto dichiararle dentro un'altra classe ad esempio TestClass?

    Grazie mille
    Andrea

  2. #2

    Re: Primi dubbietti su PHP OO, qualche parere?

    ma che discorso è "in java avrei dovuto fare una classe di test (che poi sarebbe la main del programma? ndr ) e qui sta nel codice php.... avrei potuto dichiararle dentro un'altra classe?" ...

    . le applicazioni java per funzionare hanno bisogno di un punto di accesso. La definizione del punto di accesso è diversa a seconda del tipo di progetto, ma tendenzialmente se non ricordo male è un oggetto del progetto con una funzione main.

    In php il punto di accesso all'applicazione può essere realizzato in piu modi, ma diciamo "il tipo primitivo" è quello di richiamare la singola pagina php che esegue uno script... giusto per forzare il paragone con java, è come se avessi una classe Page con un metodo main in cui tu scrivi tutto lo script... ma stiamo proprio a forzare di brutto secondo me.

    Sulla seconda risposta, se mi dici che università fai e il nome del professore, gli scrivo per farti annullare i due esami che hai dato... Il discorso piu semplice che ti possa fare è che tu per istanziare un oggetto devi avere visibilità sulla classe dell'oggeto (non so se hai mai fatto caso che in java dovevi fare gli import dei package.. secondo te che voleva dire??? ). Se hai visibilità, lo puoi istanziare dove ti pare.

    PHP da bravo linguaggio di scripting non nasce per utilizzare una oop rigorosa...giusto con la versione 5 si è strutturato meglio a riguardo e volendo si possono realizzare applicazioni java-like dove tutto è all'interno di classi e metodi, ma ciò non giustifica la domanda inquanto java ha bisogno di classi per qualsiasi cosa essendo basato su oop e non potendo quindi essere usato come uno script diciamo.

    EDIT: ho tolto le note troppo sarcastiche del messaggio
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3

    Re: Re: Primi dubbietti su PHP OO, qualche parere?

    Originariamente inviato da Santino83_02
    ma che discorso è "in java avrei dovuto fare una classe di test (che poi sarebbe la main del programma? ndr ) e qui sta nel codice php.... avrei potuto dichiararle dentro un'altra classe?" ...

    . le applicazioni java per funzionare hanno bisogno di un punto di accesso. La definizione del punto di accesso è diversa a seconda del tipo di progetto, ma tendenzialmente se non ricordo male è un oggetto del progetto con una funzione main.

    In php il punto di accesso all'applicazione può essere realizzato in piu modi, ma diciamo "il tipo primitivo" è quello di richiamare la singola pagina php che esegue uno script... giusto per forzare il paragone con java, è come se avessi una classe Page con un metodo main in cui tu scrivi tutto lo script... ma stiamo proprio a forzare di brutto secondo me.

    Sulla seconda risposta, se mi dici che università fai e il nome del professore, gli scrivo per farti annullare i due esami che hai dato... Il discorso piu semplice che ti possa fare è che tu per istanziare un oggetto devi avere visibilità sulla classe dell'oggeto (non so se hai mai fatto caso che in java dovevi fare gli import dei package.. secondo te che voleva dire??? ). Se hai visibilità, lo puoi istanziare dove ti pare.

    PHP da bravo linguaggio di scripting non nasce per utilizzare una oop rigorosa...giusto con la versione 5 si è strutturato meglio a riguardo e volendo si possono realizzare applicazioni java-like dove tutto è all'interno di classi e metodi, ma ciò non giustifica la domanda inquanto java ha bisogno di classi per qualsiasi cosa essendo basato su oop e non potendo quindi essere usato come uno script diciamo.

    EDIT: ho tolto le note troppo sarcastiche del messaggio
    Mi sono risparmiato di leggere le note sarcastiche...ti ringrazio della spiegazione...Java lo ho studiato benino ed ero anche abbastanza preparato...purtuttavia è passato un anno da quando l'ho toccato l'ultima volta...ed in quest'anno...ho fatto solo esami di matematica...credo sia umano non avere tutte le nozioni fresche fresche come la settimana post esame...

    Comunque si...intendevo che in Java dichiaravo la classe main...e appunto volevo capire meglio la storia del punto di accesso...

    Per la seconda cosa ovviamente sò che la classe deve essere visibile...davo per scontato che in un esempio stupido e banale fosse dichiarata come public...poi ovviamente sò che bisogna starci attenti alla visibilità di classi, membri e metodi...

    Comunque grazie
    Andrea

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.