Utilizzo dei metodi

marco_rx

Utente Attivo
19 Dic 2010
129
0
0
C'è un modo per utilizzare i metodi di una classe all'interno di un'altra senza usare extends?
Ad esempio io ho questa classe che ho creato per eseguire le query:
PHP:
class PDOEngine
{
    /**
     * The class to store PDO objects
     *
     * @var    object
     * @access public
     */
    public $db;
    
    /**
     * Database connection
     *
     * @param string dsn
     * @param string database username
     * @param string database password
     *
     * @return true on success
     * @access public
     */
    public function __construct($dsn, $username, $password)
    {
        try {
            $this->db = new PDO($dsn, $username, $password);
        }

        catch(PDOException $exception) {
            echo die('Connection failed: ' . $exception->getMessage());
        }
        
        $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        
        return true;
    }
    
    /**
     * Executes an SQL query on the database
     *
     * @param string SQL query
     *
     * @return query data
     * @access public
     */
    public function query($sql)
    {
        $query = $this->db->query($sql);
        
        return $query;
    }
    
    /**
     * Execute an SQL query on the database
     *
     * @param string SQL query
     * @param string array of values
     *
     * @return query data
     * @access public
     */
    public function execute($sql, $values)
    {
        $query = $this->db->prepare($sql);
        $query->execute($values);
        
        return $query;
    }
    // ....
}
Se in un'altra classe avessi bisogno di interrogare il database utilizzando uno dei metodi di sopra come dovrei fare?
 
Potresti richiamare la classe all'interno del metodo:

PHP:
class AltraClasse {
     public function interroga() {
         $sql = new PDOEngine();
         
         $query = "SELECT * FROM tabella";
         $sql->query($query);
     }
}
 
Non va, mi restiruisce questo errore:
Catchable fatal error: Object of class PDOStatement could not be converted to string

Non c'è un modo per richiamare una variabile normale all'interno di un metodo?
Perchè stavo pensando di creare un file dove istanziare le classi per poi utilizzare l'oggetto creato in altre classi, ad esempio:

file init.php
PHP:
<?php
require_once 'pdo_engine.class.php';
$db = new PDOEngine();
require_once 'altra_classe.php';
?>

file altra_classe.php
PHP:
<?php
class Altra_classe
{
    public function test()
    {
        global $db;
        $test = $db->query("SELECT c FROM t");
        return $test;
    }
}
?>

Poi in un file generico potrei includere il file init.php e instanziare la classe Altra_classe per utilizzare i suoi metodi e quelli di PDOEngine.
Solo che non so se ha senso questa cosa, ho provato a farla ma non mi restituisce niente.
 

Discussioni simili