Visualizzazione dei risultati da 1 a 7 su 7

Discussione: classi & namespace

  1. #1
    Utente di HTML.it L'avatar di Pasco
    Registrato dal
    Apr 2002
    Messaggi
    1,559

    classi & namespace

    Con l'arrivo di php5, non dovrebbe essere stato possibile racchiudere le classi dentro un namespace?

    codice:
    Namespace FooBar {
    
    	class Foo {
    	
    		public final function __construct($string){
    		
    			echo Bar::len( $string ) ;
    		
    		}
    	
    	}
    	
    	class Bar {
    	
    		public static function len($string){
    		
    			return strlen( $string ) ;
    		
    		}
    	
    	}
    	
    }
    
    
    new FooBar::Foo ( 'ciao' ) ;
    l'errore è di tipo parse a livello di Namespace... non ditemi che non sono state implementate...
    PyFanatics

  2. #2
    Utente di HTML.it L'avatar di Pasco
    Registrato dal
    Apr 2002
    Messaggi
    1,559

    Re: classi & namespace

    up
    PyFanatics

  3. #3
    Sei sicuro?
    [ DarCas The Architect ]
    [ The DarCas Of Blog ]
    Chuck Norris riesce a trovare un pagliaio dentro a un ago
    :maLOL:

  4. #4
    Ciao,
    gli namespaces erano stati previsti e poi abbandonati perchè richiedevano una mezza rivoluzione nello zend engine.


    L'utilità principale degli namespaces riguarda l'evitare conflitti tra i nomi, cosa che può esere comunque evitata in modo indolore utilizzando dei prefissi nei nomi delle classi, per le classi, e inserendo le funzioni come metodi statici di una classe, per le librerie di funzioni.

    Es.1
    //HLL è il prefisso
    class HLL_dbClass
    {
    .....
    }

    $x = new HLL_dbClass

    Es.2

    class Namespace1
    {
    static function pippo()
    {
    ...
    }

    static function paperino()
    {
    ...
    }
    }

    //richiamo la funzione attraverso il "namespace"

    Namespace1:ippo() ;
    per favore NIENTE PVT TECNICI da sconosciuti

  5. #5
    Utente di HTML.it L'avatar di Pasco
    Registrato dal
    Apr 2002
    Messaggi
    1,559
    Ciao Fabio , è un peccato che non siano stati implementati i namespaces , a mio parere è una grave lacuna , specialmente su progetti estesi e di gruppo dove non è possibile 'tenere a mente' tutto...
    PyFanatics

  6. #6
    Originariamente inviato da Pasco
    Ciao Fabio , è un peccato che non siano stati implementati i namespaces , a mio parere è una grave lacuna , specialmente su progetti estesi e di gruppo dove non è possibile 'tenere a mente' tutto...
    Sì...e no, nel senso che non ho mai lavorato a un progetto più esteso di un Vbulletin o un Typo3, e ovviamente chi ha realizzato queste applicazioni non ha potuto utilizzare gli namespaces.
    Come ti dicevo, se il problema è il conflitto di nomi, gli namespaces si possono "emulare" abbastanza agevolmente, non c'è molta differenza tra fare

    $obj = new Ns1::Ns2::MyClass() ;

    e

    $obj = new Ns1_Ns2_MyClass() ;

    Diciamo che possono essere utili, ma non indispensabili, per lo meno nell'ambito in cui PHP dà il meglio di sè, ovvero nel WEB
    per favore NIENTE PVT TECNICI da sconosciuti

  7. #7
    Quoto Fabio,
    inoltre di solito il problema del namespace sorge quando un applicazione deve implementare un altra applicazione fatta da terzi.

    La cosa più semplice che mi viene in mente è l'utilizzo del namespace in xml, dove ha senso perchè due documenti XML possono avere uno stesso marcatore, ma che abbia funzioni differenti (es. Titolo di un libro e Titolo di un capitolo) quindi il namespace risolve l'ambiguità.

    Ma nell'ambito della programmazione, non ne vedo la necessità se si scelgono nomi di classe sensati.

    Poi ovviamente uno che programma in PHP, sa che ha questo problema, quindi a priori lavora con l'obiettivo di evitare situazioni del genere; mentre se uno giunge a PHP da un linguaggio differente all'inizio può trovare difficoltà.
    [ DarCas The Architect ]
    [ The DarCas Of Blog ]
    Chuck Norris riesce a trovare un pagliaio dentro a un ago
    :maLOL:

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.