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

    problema classe in funzione

    Salve sto avendo un problema per passare una classe in una funzione.
    Il code è molto semplice:

    codice:
    $database=new database;
    $database->connect();
    
    function idacq(){
    ...
    $sql="...";
    $query=$database->query($sql);
    }
    mi dice:
    Undefined variable: database

    non capisco eppure mi ha sempre funzionato

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    $database=new database();

    ti mancano le parentesi tonde.

  3. #3
    be si vero ma il problema persiste.

  4. #4
    ecco il problema lo risolvo se si require_once che la chiamata della classe la inserisco nella funzione, ma non dovrebbe andare anche fuori?

  5. #5
    funziona anche facendo così:

    Codice PHP:
    require_once "../inc/db.php";
    $database=new database();
    $database->connect();

    function 
    idcliente($database){
    ...
    }

    echo 
    idcliente($database); 
    mah davvero strano

  6. #6
    Originariamente inviato da techno
    funziona anche facendo così:

    Codice PHP:
    require_once "../inc/db.php";
    $database=new database();
    $database->connect();

    function 
    idcliente($database){
    ...
    }

    echo 
    idcliente($database); 
    mah davvero strano
    perchè strano? passi un riferimento della classe all'interno della funzione, è corretto.. nel tuo primo esempio la funzione non aveva nessun riferimento alla classe database..

    Codice PHP:
    $a 'Ciao';
    echo 
    $a//-> Ciao 
    Codice PHP:
    function foo() {
        
    $a 'Ciao';
        echo 
    $a;
    }

    echo 
    $a//-> a is undefined
    foo(); //-> Ciao 
    Codice PHP:
    $a 'Ciao';

    function 
    foo() {
        echo 
    $a;
    }

    echo 
    $a//-> Ciao
    foo(); //-> a is undefined 
    Codice PHP:
    $a 'Ciao';

    function 
    foo($a) {
        echo 
    $a;
    }

    echo 
    $a//-> Ciao
    foo(); //-> ''
    foo($a); //-> Ciao 
    è una questione di scope..
    Questa volta, più che un voto.. è favoreggiamento.

  7. #7
    Originariamente inviato da Al_katraz984
    ...è una questione di scope..
    ...e di basi della programmazione!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.