The unexpected T_PAAMAYIM_NEKUDOTAYIM
is the double colon (::
) in this line:
print_r($load::$db->query('SELECT * FROM `users`'));
A singleton class should be able to create one and only one instance, which must be readily available. The instance should hold the data, but instead you used static properties. You should remove the static properties (or avoid creating an instance at all).
So, if you want to keep this static, access directly with the class name:
print_r(controller::$db->query('SELECT * FROM `users`'));
Or, if you remove the static:
class controller {
// Store the single instance of controller
private static $_controller = null;
public $user;
public $db;
public $page;
public $code;
// construct the class and set up the user & db instances
private function __construct() {
$this->db = new db(HOST, USER, PASS, DB);
$this->user = new user();
$this->page = new page();
$this->code = new code();
}
...// the rest as it is
And do this when calling:
$load = controller::getInstance();
print_r($load->db->query('SELECT * FROM `users`'));