У меня возникла проблема при использовании функции MySQLi fetch_object для создания экземпляра класса ... и, возможно, я просто обойду все это неправильно.fetch_object по унаследованному классу
У меня есть класс CustomerAddress, чем расширяет класс Адрес:
class Address {
private $street;
private $city;
private $zip;
private $state;
public function getStreet(){
return $this->street;
}
}
class CustomerAddress extends Address {
private $fName;
private $lName;
public function getNames(){
return $this->fName;
}
}
function getCustomerAddresses($someID){
$db = "db connection here";
$query = "SELECT `street`, `city`, `zip`, `state`, `fName`, `lName` ...";
$stmt = $db->prepare($query);
$stmt->bind_param("i", $someID);
$stmt->execute();
$result = $stmt->get_result();
while($obj = $result->fetch_object("CustomerAddress")){
var_dump($obj);
}
//...
}
Это var_dump возвращает это:
object(CustomerAddress)#32 (23) {
["fName":"customeraddress":private]=>
string(4) "John"
["lName":"customeraddress":private]=>
string(5) "Smith"
["street":"address":private]=>
NULL
["city":"address":private]=>
NULL
["state":"address":private]=>
NULL
["zip":"address":private]=>
NULL
["street"]=>
string(11) "Some Street"
["city"]=>
string(7) "Anytown"
["state"]=>
string(10) "Some State"
["zip"]=>
string(5) "12345"
}
Так, насколько я могу судить, это не будет заполнять переменные из родительский класс, но вместо этого создает новые. Конечно, я просто глуп с наследованием или неправильно использовал fetch_object, потому что я не могу найти кого-либо другого с этой проблемой (и у меня не было проблемы с этим обычным классом).
Как ваш код соединяет функцию getCustomerAddresses с двумя классами? Я не вижу, как объекты создаются где угодно. – Maximus2012
Что вы пытаетесь сделать точно? – Maximus2012
Я пытаюсь заполнить класс CustomerAddress полями из моей базы данных. Вот для чего я использую fetch_object. – chrisjacob