La class b contiene 2 errori. Il primo è la mancanza della creazione dell'istanza come hai indicato. Il. secondo è che utilizzato in maniera procedurale, mysqli_query ha bisogno del parametro "connessione".
Codice PHP:
class b {
function pluto() {
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
$this->sql = mysqli_query($link,"SELECT * FROM tab");
}
}
oppure
Codice PHP:
class b {
private $link;
function __construct() {
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
}
function pluto() {
$this->sql = mysqli_query($link,"SELECT * FROM tab");
}
}
Vedi la differenza ? Nel primo caso la query puo' essere eseguita soltanto da pippo(). Dovresti creare un'altra connessione si tu dovessi fare un'altra query in un altro metodo.
Nel secondo caso si potrebbe eseguire una query da un altro metodo senza dover creare una nuova connessione.
In maniera OOP mysqli non ha bisogno di tramandare la connessione. Essa è una "variabile" visibile e utilizzabile da tutti i metodi dell'oggetto mysqli, un po' come $link nell'esempio di sopra. Quindi si potrebbe ipotizzare che l'oggetto mysqli è stato creato usando mysqli procedurale.
Codice PHP:
class mysqli {
private $link;
function __construct($host,$user,$password,$dbname) {
$link = mysqli_connect($host,$user,$password,$dbname);
....
}
function query($string) {
return mysqli_query($link,$string);
}
}