суть вопроса такова, как разумнее вызывать объекты из класса
с объявлением класса
$tpl = new Template;
$tpl::header(\'hello\');
или на прямую
Template::header(\'hello\');
и в чем разница, инфу искать по подобному вопросу нет времени
Добавлено 07.12.13 в 14:16:47:
на ошибочные названия не обращаем внимание
$object = new Class;
$object->function();
без разницы по сути, но я бы придерживался стандарта, т.е. через обьявление $tpl = new Template;
Разница большая.
$tpl = new Template; - создаёт экземпляр класса,то есть это значит ты получаешь объект.В таком случае при инициализации объекта ^ у тебя подключается конструктор,деструктор,геттеры,сеттеры и т.д.
Template::header(); - у тебя не создаётся экземпляр класса,не подключаются конструктор,деструктор,геттеры,сеттеры и т.д и ты обращаешься напрямую к методу.
Если тебе нужно организовать класс например с набором методов,так сказать пак функций,тогда тебе нужны статики,а если например это будет какойто контроллер или же модель тогда обращайся к объекту
UA95, ну собственно я так и подумал, как ты написал, вообщем для статиков юзать класс::метод($данные); будет разумно, а если модель/контролер, тогда объект=класс(конструкты);
UA95, еще вопросик можно? вообщем есть объект $mysqli как можно сделать его глобальным для всех методов разных классов, просто global $mysqli; в каждом методе напрягает
За глобалки забудь,их не хорошо использовать.Я не до конца понял твой вопрос,пример скинь.
Вариантов много,в конструкторе объект запилить в свойство,либо и в каждом методе вызывать $this->_mysqli
UA95, почти в каждом методе я работаю с бд, если mysqli не объявлен глобальным, то метод просто не знает что он работает с бд, и $mysqli->query(); воспринимает как не существующий объект
Добавлено 07.12.13 в 18:56:11:
точнее не существующий метод query
$mysqli = new mysqli();
$data = new data();
$data->mysqli = $mysqli;
$form = new form();
$form->data = $data;
Но тогда свойства и методы классов надо делать строго public и инкапсуляция как таковая теряется.