Visualizzazione dei risultati da 1 a 4 su 4

Discussione: visibilità variabili

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258

    visibilità variabili

    Ciao a tutti, vi ricopio questo esempio trovato sul libro(che crea un link zip su un client windows e un link tar.gz su un client linux)
    Vorrei chiedervi una cosa. Come è possibile che l'oggetto fileNamingObj creato dentro un costrutto if, sia visibile esternamente?

    codice:
    <?php
    
    abstract class FileNamingStrategy{
      abstract function createLinkName($filename);
    }
    
    class ZipFileNamingStrategy extends FileNamingStrategy {
      function createLinkName($filename)
      {
        return "http://downloads.foo.bar/$filename.zip";
      }
    }
    
    class TarGzFileNamingStrategy extends FileNamingStrategy {
      function createLinkName($filename)
      {
        return "http://downloads.foo.bar/$filename.tar.gz";
      }
    }
    
    if (strstr($_SERVER["HTTP_USER_AGENT"], "Win")) {
      $fileNamingObj = new ZipFileNamingStrategy();
    } else {
      $fileNamingObj = new TarGzFileNamingStrategy();
    }
    
    $calc_filename = $fileNamingObj -> createLinkName("Calc101");
    $stat_filename = $fileNamingObj -> createLinkName("Stat2000");
    
    print <<<EOF
    <h1>Ecco un elenco di ottimi download</h1>
    
    
    Una calcolatrice eccellente
    
    La migliore applicazione statistica
    
    
    
    EOF;
    
    ?>
    provate a fare un programma cosi in java, e vedrete che è impossibile:

    codice:
    class provaOgg{
    	public static void main(String args[]){
    		if(true){
    			Persona p = new Persona("Luca");
    		}
    
    		System.out.println(p.getNome());
    	}
    }
    
    class Persona{
    	private String nome;
    
    	Persona(String n){
    		nome = n;
    	}
    
    	String getNome(){
    		return nome;
    	}
    }

  2. #2
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    PHP non e' Java.

    In Java una variabile dichiarata in un blocco e' locale, in php non necessariamente.

    http://php.net/manual/en/language.variables.scope.php

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    si ho provato a scriverlo per rendermi conto se funzionava, e in effetti funziona. Pero sono stupito, non sono d'accordo in questa scelta dei progettisti di php, vuol dire che in qualche punto del codice posso mettere una variabile che neanche mi curo di creare in precedenza...mah....

  4. #4
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Originariamente inviato da Lucked
    si ho provato a scriverlo per rendermi conto se funzionava, e in effetti funziona. Pero sono stupito, non sono d'accordo in questa scelta dei progettisti di php, vuol dire che in qualche punto del codice posso mettere una variabile che neanche mi curo di creare in precedenza...mah....
    PHP e' un linguaggio di scripting debolmente tipizzato, e non richiene nemmeno obbligatoriamente l'inizializzazione delle variabili. Le inizializza lui automaticamente, in base al tipo.

    Per intenderci, se in java tu devi fare (prendo il tuo esempio di sopra):
    codice:
    Persona p;//la dichiari prima
    if(true){
       p = new Persona("Luca");
    }
    System.out.println(p.getNome());
    In php puoi semplicemente fare:
    Codice PHP:
    if (true){
      
    $p=new Persona("Luca");//in questo momento la variabile $p viene dichiarata e valorizzata
      //conserva il suo valore anche fuori dal blocco, non essendo dichiarata in un contesto locale.
    }
    echo 
    $p->getNome(); 

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 © 2026 vBulletin Solutions, Inc. All rights reserved.