The problem lies in:
$query = $this->db->conn->prepare('SELECT value, param FROM ws_settings WHERE name = ?'); $query->bind_param('s', $setting);
prepare() method can return
false and you should check for that. As for why it returns
false, perhaps the table name or column names (in
WHERE clause) are not correct?
Also, consider use of something like
$this->db->conn->error_list to examine errors that occurred parsing the SQL. (I’ll occasionally echo the actual SQL statement strings and paste into phpMyAdmin to test, too, but there’s definitely something failing there.)