Unire piu funzioni di una classe

  • Creatore Discussione Creatore Discussione Mr. PHP
  • Data di inizio Data di inizio

Mr. PHP

Utente Attivo
31 Gen 2013
141
0
0
Salve ragazzi volevo chiedervi qual e il metodo usato per fare cio. Es:
PHP:
$db = new DB();

$db->update( user  )->set( nome=arturo )->where( ID=25 );

Bisogna creare la Classe DB con le seguenti funzioni ? o bisogna definerle in un altro modo ?
 
Ciao, perchè vorresti complicarti la vita?
PHP:
<?php

$sql = new mysqli("localhost", "root", "", "database");

$sql->query("UPDATE user SET nome='arturo' WHERE id = 25");
?>
 
Ciao, perchè vorresti complicarti la vita?
PHP:
<?php

$sql = new mysqli("localhost", "root", "", "database");

$sql->query("UPDATE user SET nome='arturo' WHERE id = 25");
?>
Ti ringrazio per la risposta pero mi servirebbe il metodo che ho riportato sopra... Come bisogna impostare la Classe per fare cio...
 
dovrai crearti le funzioni che ti costruiscono la query e poi dovrai eseguirla
 
Tipo cosi
PHP:
class DB {

function update(){


}

function set(){

}

function where(){

}

}

Se sbaglio mi potresti fare un esempio ?
 
dovrebbe venire più o meno così
PHP:
<?php

class DB {

    var $query;
    var $sql;

    public function __construct() {
        $this->sql = new mysqli("localhost", "root", "", "database");
    }

    public function update($tab) {
        $this->query .= "UPDATE " . $tab;
    }

    public function set($set) {
        $this->query .= " SET " . $set;
    }

    public function where($where) {
        $this->query .= " WHERE " . $where;
    }
    public function execute() {
        echo $this->query;
    }
}

$db = new DB();
$db->update("user");
$db->set("nome='arturo'");
$db->where("id=25");
$db->execute();
?>
 
Ultima modifica:
dovrebbe venire più o meno così
PHP:
<?php

class DB {

    var $query;
    var $sql;
    public function __construct() {
        $this->$sql = new mysqli("localhost", "root", "", "database");
    }

    public function update($tab) {
        $this->query .= "UPDATE " . $tab;
    }

    public function set($set) {
        $this->query .= " SET " . $set;
    }

    public function where($where) {
        $this->query .= " WHERE " . $where;
    }
    public function execute() {
        echo $this->query;
    }
}

$db = new DB();
$db->update("user");
$db->set("nome='arturo'");
$db->where("id=25");
$db->execute();
?>

Scusami forse sono stato io a nn farmi capire. Mi servirebbe questo metodo:
PHP:
$db = new DB(); 

/* Per fare questo come bisogna impostare la classe o bisogna creare piu classi ? */
$db->update( user  )->set( nome=arturo )->where( ID=25 );
 
non ho mai provato ma credo bisogna impostare più classi
 
Non è chiaro nemmeno per me, è la prima volta che sento parlare di aggregazione di oggetti, ma sembra interessante ci studierò un po
 
Forse ho trovato qualcosa solo che la query mi torna nulla. Forse sbaglio qualcosa !
PHP:
class DB {
	
	var $query, $update, $set, $where;
	
	function update($a){
		$this->update = new Update($a);
		return $this->update;
	}

	function exe(){
		var_dump( $this->query );
	}
	
}

class Update extends DB {
		
	function __construct($a){
		
		$this->query = 'UPDATE '.$a;
		
	}
	
	function set($a){
		$this->set = new Set($a);
		return $this->set;
	}
	
}

class Set extends DB {
	
	function __construct($a){
		$this->query .= ' SET '.$a;
	}
	
	function where($a){
		$this->where = new Where($a);
		return $this->where;
	}
	
}

class Where extends DB {
	
	function __construct($a){
		$this->query .= ' WHERE '.$a;
	}
	
}

$db = new DB;

$db->update('user')->set('name="arturo"')->where('ID=25');

$db->exe();
 
Risolto con la modalita STATICA.
PHP:
class DB {
	
	static $query;
	
	static function update( $a ){
		
		self::$query = 'UPDATE '.$a;
		
		return new Update( $a );
		
	}
	
	static function exe(){
		return self::$query;
	}
	
}

class Update extends DB {
	
	static function set( $a ){
		
		self::$query .= ' SET '.$a;
		
		return new Set( $a );
		
	}
	
}

class Set extends DB {
	
	static function where( $a ){
	
		self::$query .= ' WHERE '.$a;
	
	}
	
}

class Where extends DB {

	
}

echo '<pre>';

$db = new DB;

$db->update( 'user' )->set( 'name="Arturo"' )->where( 'ID="25"' );

print_r( $db::exe() );
 

Discussioni simili