Pagina 1 di 6 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 53
  1. #1

    Problema con istanziazione classe

    salve!
    sto creando una classe per il login:
    Codice PHP:
    <?php

    include_once 'connessione.php';

    class 
    Login {

        private 
    $user;
        private 
    $pwd;
        private 
    $conn Connessione::getInstance(); // ERRORE

        
    function __construct($user$pwd) {
            
    $this->user $user;
            
    $this->pwd $pwd;
        }
     }
    ho incluso il file per la connessione che la classe che gestisce il db:
    Codice PHP:
    <?php

    class Connessione {

        private 
    $pdo;
        private static 
    $instance;

        private function 
    __construct() {
            try {
                
    $this->pdo = new PDO('mysql:host=localhost;dbname=db'"user""pwd", array(
                            
    PDO::ATTR_PERSISTENT => TRUE,
                            
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
                        
    ));
            } catch (
    PDOException $e) {
                echo 
    $e->getMessage();
                die();
            }
        }

        public static function 
    getInstance() {
            if (!isset(
    self::$instance)) {
                
    $c __CLASS__;
                
    self::$instance = new $c;
            }
            return 
    self::$instance;
        }

        public function 
    __clone() {
            
    trigger_error('Clone is not allowed.'E_USER_ERROR);
        }

        public function 
    getPdo() {
            return 
    $this->pdo;
        }

    }
    nn riesco a capire perchè nella classe Login ottento sempre un errore alla riga di istanziazione della classe.
    inoltre netbeans dice che è un errore di sintassi.
    dove sbaglio??

  2. #2
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    getInstance nn metterlo tra le definizioni.
    Per gli Spartani e Sparta usa spartan Il mio github

  3. #3
    nn ho ben capito.
    parli della classe Login o della classe Connessione?

  4. #4
    ah forse intendevi di metterlo nel costruttore:
    Codice PHP:
        function __construct($user$pwd) {
            
    $this->user $user;
            
    $this->pwd $pwd;
            
    $conn Connessione::getInstance();
        } 
    solo che nn ho capito il perchè.

  5. #5
    Prova così:

    Codice PHP:
    class Login {

        private 
    $user;
        private 
    $pwd;
        private 
    $conn;

        function 
    __construct($user$pwd) {
            
    $this->user $user;
            
    $this->pwd $pwd;
            
    $conn Connessione::getInstance();
        }

    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    ?????

    public static function getInstance() {
    if (!isset(self::$instance)) {
    $c = __CLASS__;
    self::$instance = new $c;
    }
    return self::$instance;
    }

    Ma che ci devi fare con sta roba ?

    Devi clonare la classe ?

    l'istanza della classe la hai gia' quando la crei ?
    Se ti serve una copia vai din constructor copy ....
    Oppure fai un return->$this ... ti sorprenderà !

    Mah....

  7. #7
    si si così funziona grazie.
    solo che avrei un altro problema sempre nella classe Login:
    Codice PHP:
    class Login {

        private 
    $user;
        private 
    $pwd;
        private 
    $conn;

        function 
    __construct($user$pwd) {
            
    $this->user $user;
            
    $this->pwd $pwd;
            
    $this->conn Connessione::getInstance();
        }

        public function 
    checkUtente() {
                
    $query $this->conn->
        } 
    la classe Connessione ha la funzione getPdo() (la classica funzione get).
    solo nn riesco a "vederla".

  8. #8
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    OMG !!!!!!

    No mi dispiace ma nn proseguo oltre, mesolare contesti statici e dinamici in questo modo mi fa accapponare la pelle......

    Se usi classi statiche FAI CLASSI SATICHE !!!

    instruzioni con classe::attributo => valore sono chiamate folli e solo php ti fa fare queste schifezze.....

    Le classi statiche NON SI usano in questo modo, servono per avere set di funzioni in un approccio oop ... usate in questo modo mi fanno rabbirividire...

    Se devi fare ste cose perche' non fai una normalissima classe ????
    Altrimenti guarda bene come fare il factorying ... ma cosi' sono solo pezze.
    No mi dispiace io mi fermo qui.

  9. #9
    scusa senza che ti innervosisci.
    quella è una classe Singleton con guida seguita su html.it.
    quindi proprio questo sito.
    nn mi pare di aver fatto chissà cosa di assurdo sinceramente.

    se poi consigli di nn usare Singleton per xyz motivi ok.
    magari anche dicendomi il perchè.

  10. #10
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Quel tipo di classi deriva dalle classi statiche dei linguaggi ad oggetti.

    Nascono per fornire set di funzioni anche in lungaggi oop come java.
    E li non esiste che mescoli rba statica con roba dinamica esplode tutto. PHP d'altro canto ti consente di fare quelle porcate.

    Io personalmente odio vedere chiamate del tipo classeStatica::attributo = valore ...
    non eiste!

    classe->metodo()
    classe->attributo // get
    classe->attributo = valore // assegnazione

    mescolare queste cosecon classi spacciate per classi singleton e' una cosa oscena. Io personalmente la odio. Lo scopo di queste classi pseudostatiche e' quello di avere questo

    classe::funzione( parametri )

    Ebbasta la classe non deve avere attributi etc... altrimenti non ha alcuin senso usare queste classi non cabmia nulla fare una classe "normale". Queste classi mutanti sono oscene da vedersi e da usrsi.
    Inoltre le classi statiche (opportunamente usate) servono per il facotrying, ossia ti costruisci le tue fabbrice di cose(altre classi modelli view controllers etc) e quidni nei server dove puoi usare la persistenza ( ad esempio java servlet+hibernate) o alcuni frameworks php.

    Sinceramente e' assoluta follia avere una classe che ritorni un'istanza di se' stessa !!
    In java hanno implementato reflection ma java e' in lunguaggio pseudocompilato quindi li serve ... in php NO! Non servono ste cose.

    echo get_class( $object ) ;

    se mi serve un'istanza di una class .... ??? perhe devo fare classe::getInstance() !!! E' FOLLIA!

    $oggetto = new miaClasse( /*paramters for default constructor*/ ) ;

    L'istanza della classa e' stipata in $oggetto ....perche' complicarsi inutilmente la vita ????

    Non capisco queste classi mutanti vanno soppresse e va scoraggiato completamente il loro utilizzo, sono brutte pesanti e inutili e creano solo casini inutili.

    questa eì la mia opinionne. SU html posso fare quello che gli pare il sito e' loro e le guide le fanno loro, ma fidati usare questo apporccio ti dai solo la zappa sui piedi .

    static class stringhe()
    {

    public static doPrinteRabbit(){ }


    }

    CI siano NON CI SONO ATTRIBUTI!!!!

    e la usi correttamente stringhe::doPrintRabbit();


    quindi hai in un constesto OOP la possibilita di avere funzioni cosa che altrimenti non avresti e sarebbero tutto oggetti ....

    Questo e' il preche'.

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.