Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Spazio dei nomi

  1. #1
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,025

    Spazio dei nomi

    Salve.
    Sto cercando di usare lo spazio dei nomi, solo che quando digito in eclipse
    Codice PHP:
    namespace prova
    non mi colora di blu la parola chiave "namespace" e poi su "prova" mi da errore inaspettato, tutto questo prima di fare il debug.
    Cosa può essere che non funziona?
    Grazie.

  2. #2
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Io utilizzo netbeans 7.1.1 e questo problema non c'è, ma può darsi che il plugin di eclipse per il PHP non implementi tale caratteristica, presente da php 5.3 e quinid non può colorare ciò che non conosce segnalandolo come errore. Puoi provare a vedere se c'è un plugin più recente per eclipse.

    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  3. #3
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,025
    Scusa Grino, potresti farmi vedere un frammento di codice come utilizzi il namespace?
    Giusto per capire se anche io adotto lo stesso sistema.

  4. #4
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,025
    Ho provato adesso anche con NetBeans ed effettivamente non mi da errore.
    Ma poi quando lo eseguo mi da errore:
    codice:
    Fatal error: Namespace declaration statement has to be the very 
    first statement in the script in C:\xampp\htdocs\PhpProject1\index.php on line 10
    questi qua sotto sono i miei due script:
    codice:
     namespace prova1;
            class ProvaNameSpace {
    
                function __construct() {
    
                }
                function Stampa() {
                    echo 'Ciao' ;
                }
        }
    codice:
    namespace prova1;
    
    $stampa = new prova1\ProvaNameSpace();
    $stampa->Stampa();
    Penso che sia un problema del motore server, però utilizzo xampp 1.7.7 che ha già una versione php di 5.3.8
    Forse bisogna settare qualcosa?

  5. #5
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Leggi: http://it2.php.net/manual/en/languag...definition.php

    probabilmente fai una include o require prima della dichiarazione del namespace nel secondo file. Dichiarazione che puoi anche eliminare perchè inutile nel caso particolare, dato che istanzi la classe del namespace e ne invochi un metodo.

    file1.php
    Codice PHP:
    <?php
    namespace prova1;
    class 
    ProvaNameSpace {
        function 
    Stampa() {
            echo 
    'Ciao' ;
        }
    }
    ?>
    index.php
    Codice PHP:
    <?php
    require_once 'file1.php';

    $stampa = new \\prova1\\ProvaNameSpace();
    $stampa->Stampa();
    ?>
    o in alternativa
    index.php
    Codice PHP:
    <?php
    namespace prova1
    require_once 'file1.php';

    //queste chiamate sono nello stesso namespace di file1.php quindi 
    //posso istanziare senza risolvere in modo completo
    $stampa = new ProvaNameSpace();
    $stampa->Stampa();
    ?>
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  6. #6
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,025
    Se questo è il metodo corretto per creare i namespace, in effetti non si ha una risoluzione completa, anche perchè devo fare sempre minimo un require_once per includere il file della classe, mentre ho visto in altri linguaggi come il C# quando hai il namespace uguali a tutti i file di un progetto non devi più importare alcun file.
    In Eclipse mi da sempre errore in fase di scrittura del codice, sottolineandolo di rosso, però a livello logico, quando lancio il programma funziona correttamente.

  7. #7
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Altri linguaggi (compilati) hanno appunto i file di progetto, quindi è normale che un file appartenente al progetto sia "risucchiato" e dato in pasto al compilatore. Quando il compilatore trova due file che dichiarano nel codice il medesimo spazio nome, è come se quel codice fosse in un solo file con quello spazio nome.

    PHP non ha file di progetto che indichino quali sorgenti scritti in PHP appartengano al progetto stesso. In più è interpretato e non compilato.Ciò significa che se ti occorre il contenuto di un file lo devi sempre indicare esplicitamente, sia pure jit durante l'esecuzione dello script, con una include o require. Se due o più file definiscono il codice all'interno dello stesso spazio nome, allora il codice di entrambi i file è aggiunto in quell'ambito di visibilità.

    I file di progetto creati da netbeans, e penso anche da eclipse, hanno lo scopo di definire una tavola dei nomi che permetta di agevolare la scrittura del codice e rilevare degli errori/imperfezioni dello stesso ma non hanno alcuna utilità per il motore di PHP che non ne fa alcun uso.

    Da quello che dici, è confermata l'idea per cui il plug in di eclipse è un po' datato e non riconosce namespace come parola chiave di PHP.

    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

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