Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Oop e richiamo dei metodi

    Salve a tutti, sono nuovo di programmazione ad oggetti ed ho un piccolo dubbio...
    In una pagina php instanzio un classe (ClasseA) che a sua volta instanzia un'altra classe (ClasseB)...
    Ora io sono in grado di accedere ai metodi pubblici della ClasseA direttamente dalla pagina php ma non sono in grado di accedere a quelli della ClasseB.
    Per accedere direttamente ai metodi della ClasseB devo istanziare nuovamente la ClasseB nella pagina php oppure c'è un'altro metodo per farlo?
    Spero di essermi spiegato!
    Grazie a tutti!
    What is the |\/|atrix?

  2. #2
    crea un metodo che nella classe a che richiama il metodo di quella b

  3. #3

    ...............

    Ciao.
    Allora se classeA extends classeB
    quando istanzi la classeA automaticamente
    hai accesso ai metodi e proprietà della classeB.
    Se poi vuoi utilizzare metodi o proprietà della
    classeB all'interno della ClasseA devi richiamare il
    metodo che ti serve in questo modo parent::nomeMetodo().
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  4. #4
    Grazie a tutti per la risposta!!!
    Un'ultima cosa..
    E' meglio fare come ho fatto io cioè che nella ClasseA viene instanziata una new ClasseB() oppure basta fare ClasseA Extends ClasseB per lavorare con i metodi della ClasseB nella ClasseA?
    Grazie ancora!
    What is the |\/|atrix?

  5. #5

    ...........

    E' meglio fare come ho fatto io cioè che nella ClasseA viene instanziata una new ClasseB() oppure basta fare ClasseA Extends ClasseB per lavorare con i metodi della ClasseB nella ClasseA?
    Grazie ancora!
    In linea di massima la seconda cioè usi Extends.
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  6. #6
    Finalmente sto cominciando a capire l'oop...
    Ma sto litigando con una cosa... non riesco a chiudere una connessione al db (sicuramente perchè non riesco a passargli la connessione che devo chiudere...) come faccio?
    Ecco il codice che ho scritto finora:
    prova.php
    Codice PHP:
    <?php
    require_once("config.inc.php");
    $start carica::classe(_OB);
    $start->connetti();
    $start->disconnetti();
    ?>
    config.inc.php
    Codice PHP:
    <?php
    require_once("classes/init.class.php");
    $_CONFIG['DB_HOST'] = "localhost";
    $_CONFIG['DB_USER'] = "root";
    $_CONFIG['DB_PASSWORD'] = "123456";
    $_CONFIG['DB_NAME'] = "miodb";
    ?>
    init.class.php
    Codice PHP:
    <?php
    class carica{

        public static function 
    classe($classe){
        
            if (require_once 
    $classe){
            
                
    $pos strrpos($classe"/");

                
    $classname ucfirst(substr($classe, ($pos+1),((strlen($classe)-1) - ($pos+10))));
                
                return new 
    $classname();
                    

            }else{
            
                throw new 
    Exception ('Driver not found');
                
            }
        
        }
    }
    define("_MYSQL",$_SERVER["DOCUMENT_ROOT"]."/classes/dbMySql.class.php");
    define("_OB",$_SERVER["DOCUMENT_ROOT"]."/classes/ob.class.php");
    ?>
    ob.class.php
    Codice PHP:
    <?php
    require_once(_MYSQL);
    class 
    Ob extends DbMySql{

            public function 
    __construct(){

            }
       
            public function 
    connetti(){
            
                
    //fai altre cose e poi connetti
    //non ho messo gli if per non allungare il codice sul forum
                
    $conn carica::classe(_MYSQL);
            }
            
            
            public function 
    disconnetti(){
                
    //fai altre cose e poi disconnetti
    //non ho messo gli if per non allungare il codice sul forum
                
    parent::__sleep();

            }
    }

    ?>
    dbMySql.class.php
    Codice PHP:
    <?php
    class DbMySql{

        protected 
    $link;
        private 
    $config;
       
            public function 
    __construct(){
            
                    global 
    $_CONFIG;
                
                    
    $this->server $_CONFIG['DB_HOST'];
                    
    $this->username $_CONFIG['DB_USER'];
                    
    $this->password $_CONFIG['DB_PASSWORD'];
                    
    $this->db $_CONFIG['DB_NAME'];

                    
    $this->connect();
            }
       
            private function 
    connect(){
            
                
    $this->link mysql_connect($this->server$this->username$this->password);
                
    mysql_select_db($this->db$this->link);

            }
       
            public function 
    __sleep(){
                
    mysql_close($this->link);
            }
       
            public function 
    __wakeup(){
                
    $this->connect();
            }
    }

    ?>
    Grazie ancora per l'aiuto!
    What is the |\/|atrix?

  7. #7

    ........

    Ciao.
    Secondo me
    class Ob extends DbMySql
    è inutile una classe ha il suo dovere da fare e
    il dovere lo fa DbMySql.
    global $_CONFIG;
    anche questo poco utile puoi passare i
    parametri al costruttore .
    __wakeup()
    è inutile chiami connect() nel costruttore
    della classe.
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  8. #8

    ...........

    Ultima cosa quando usi le Exception
    devi usare try e catch quando provi
    ad istanziare la classe in questo caso
    o il suo metodo.
    A parte tutto continua così la sperimentazione
    è alla base della conoscenza



    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  9. #9
    Grazie per l'aiuto, ma ancora non riesco tramite $start->disconnetti(); a chiudere la connessione al db!
    Mi date un aiutino?
    Grazie ancora per l'aiuto!
    What is the |\/|atrix?

  10. #10

    .............

    Ciao.
    Codice PHP:
    public function __sleep(){
              return  
    mysql_close($this->link);
            } 
    prova a vedere cosa ritorna.
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

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.