Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,582

    Controllare il valore $_GET dall'interno di una classe.

    Sembra assurdo ciò che ho scritto, ma sto impazzendo per una cosa che per ora, per me, non ha molto senso.
    In pratica sto scrivendo una classe che crea la paginazione di un certo numero di record estratti da un database.
    In questa classe c'è un metodo che estrae dall'url il numero di pagina richiesto, e lo faccio passando la $_GET a dei filtri per filtrare valori spuri.
    e mi da il valore ripetuto !
    Cioè se chiedo pagina 2 mi ritorna 22.
    La cosa assurda è che se faccio echo $_GET['pagina'] da fuori della classe, mi da correttamente 2, se invece metto la stessa istruzione dentro il metodo all'interno della classe mi torna 22.

    Vi è mai capitata una cosa del genere e se sì, come l'avete risolta?

  2. #2
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,582
    Continuo a fare prove.
    In pratica se scrivo:
    Codice PHP:
    // URL: prova.php?pagina=2
    class Paginazione
    {
      function 
    __construct()
      {
         echo 
    $_GET['pagina'];  //  Il risultato è 2
      
    }

      public function 
    getQueryString()
      {
         echo 
    $_GET['pagina'];  //  Il risultato è 22
      
    }
    }
    echo 
    $_GET['pagina'];  //  Il risultato è 2 
    Per me non ha senso, non ha alcun senso.
    Per voi?

  3. #3
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    758
    Ciao, la funzione __construct viene richiamata quando subito dopo che l'oggetto viene creato.
    Per cui nel tuo codice, supponendo che crei la classe con
    Codice PHP:
    $paginazione= new Paginazione(); 
    automaticamente ti esegue il codice all'interno della funzione __construct.

    Puoi verificarlo facendo così:
    Codice PHP:
    <pre>
    <?php
    class Paginazione{
        function 
    __construct(){
            print 
    "all'interno di __construct: ".$_GET['pagina']."<br>";
        }
        public function 
    getQueryString(){
            print 
    "all'interno di getQueryString: ".$_GET['pagina']."<br>";
        }
    }
    $paginazione = new Paginazione();
    $page $paginazione->getQueryString();

    print 
    "all'esterno: ".$_GET['pagina']."<br>";
    ?>
    <pre>
    eXvision

  4. #4
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,582
    Quote Originariamente inviata da brodik Visualizza il messaggio
    Ciao, la funzione __construct viene richiamata quando subito dopo che l'oggetto viene creato.
    Per cui nel tuo codice, supponendo che crei la classe con
    Codice PHP:
    $paginazione= new Paginazione(); 
    automaticamente ti esegue il codice all'interno della funzione __construct.
    Studiando ieri pomeriggio, in effetto ho scoperto che, quando usi __construct() succede proprio che ogni volta richiami un metodo, viene anche richiamata la __construct() quindi è come se chiamassi il tutto due volte.
    Non mi è ancora ben chiaro il meccanismo, ma in realtà forse è fuorviante l'esempio che ho portato.
    Non è che richiamo la GET dal costruttore e poi dal metodo, non avrebbe senso richiamarlo più volte.
    In realtà viene richiamato solo dal metodo getQueryString(), ma proprio per via dei valori sballati mi sono accorto di questa cosa.
    Ora dati questi strani valori sto cercando nuovi approcci.
    Puoi verificarlo facendo così:
    Codice PHP:
    <pre>
    <?php
    class Paginazione{
        function 
    __construct(){
            print 
    "all'interno di __construct: ".$_GET['pagina']."<br>";
        }
        public function 
    getQueryString(){
            print 
    "all'interno di getQueryString: ".$_GET['pagina']."<br>";
        }
    }
    $paginazione = new Paginazione();
    $page $paginazione->getQueryString();

    print 
    "all'esterno: ".$_GET['pagina']."<br>";
    ?>
    <pre>
    E' ciò che avevo fatto.

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