Несколько интересных вопросов по PHP
|
|
dima9595 | Дата: Воскресенье, 11 Января 2015, 15:29 | Сообщение # 1 |
почти ветеран
Сейчас нет на сайте
| Очередной привет! На днях продолжил кодить и появились очередные вопросы, которые не дают мне спокойно спать)))
1. Иногда, когда прохожу по чужому коду, то замечаю 2 вида вызова классов. Например, у нас есть класс Users. Так вот, бывают вызовы этого класса $users->метод или Users::метод... Вопрос: Что лучше использовать, ведь оба файла подключаются через include_ или require_. Значит разницы нет!?
2. Недавно прочитал про функцию spl_autoload_register, но при использовании, почему-то не работают методы (Проверял через __construct() - всё работает). Код spl_autoload_register(function($name){ require ENGINE_DIR.'classes/'.$name.'.php'; });
Ошибка: Код Fatal error: Call to a member function load_tpl() on a non-object...
Кстати, заметил что __construct() работает в том случае, если использовать вызов класса производится через название_класса::название_метода/ Вопрос: Почему не грузятся методы и стоит ли вообще использовать spl_autoload_register и подобные функции.
Заранее благодарю!
Сообщение отредактировал dima9595 - Воскресенье, 11 Января 2015, 15:36 |
|
| |
Snake174 | Дата: Воскресенье, 11 Января 2015, 15:59 | Сообщение # 2 |
участник
Сейчас нет на сайте
| Users::method() обычно используют для вызова статических методов класса.
Цитата Почему не грузятся методы $users = new Users(); $users->method();
Все нормально должно грузиться.
Не следует обманывать инспектора Pipmak Assistant Love2D Exporter Love2D-Helpers Old Consoles Games
|
|
| |
dima9595 | Дата: Воскресенье, 11 Января 2015, 16:19 | Сообщение # 3 |
почти ветеран
Сейчас нет на сайте
| Snake174, спасибо за ответы! Цитата Snake174 ( ) $users = new Users(); По сути объект уже объявлен в файле класса, стоит ли ещё раз писать? Цитата Snake174 ( ) Users::method() обычно используют для вызова статических методов класса. А скорость не будет падать, если использовать его не только для статики!?
|
|
| |
Snake174 | Дата: Воскресенье, 11 Января 2015, 16:39 | Сообщение # 4 |
участник
Сейчас нет на сайте
| Цитата По сути объект уже объявлен в файле класса, стоит ли ещё раз писать? Не нужно. Главное чтобы конфликтов с именами не было :-)
Цитата А скорость не будет падать, если использовать его не только для статики!? По идеи не должно работать, если метод не статичный. С РНР мало знаком.
Не следует обманывать инспектора Pipmak Assistant Love2D Exporter Love2D-Helpers Old Consoles Games
|
|
| |
JackNazaryan | Дата: Пятница, 16 Января 2015, 23:25 | Сообщение # 5 |
старожил
Сейчас нет на сайте
| Цитата dima9595 ( ) 1. Иногда, когда прохожу по чужому коду, то замечаю 2 вида вызова классов. Например, у нас есть класс Users. Так вот, бывают вызовы этого класса $users->метод или Users::метод... Вопрос: Что лучше использовать, ведь оба файла подключаются через include_ или require_. Значит разницы нет!? $users::method используется для статических функций, когда создавать экземпляр класса не нужно Цитата dima9595 ( ) Вопрос: Почему не грузятся методы и стоит ли вообще использовать spl_autoload_register и подобные функции. А чем не устраивает function __autoload?Добавлено (16 января 2015, 23:23) ---------------------------------------------
Цитата dima9595 ( ) А скорость не будет падать, если использовать его не только для статики!? Практические примеры покажите, тогда будет ответ точнееДобавлено (16 января 2015, 23:25) --------------------------------------------- Или вообще делайте так:
Код function my_autoloader($class) { include 'classes/' . $class . '.class.php'; }
spl_autoload_register('my_autoloader');
|
|
| |
dima9595 | Дата: Суббота, 17 Января 2015, 13:41 | Сообщение # 6 |
почти ветеран
Сейчас нет на сайте
| Цитата JackNazaryan ( ) function __autoload говорят что она уже устарела Цитата JackNazaryan ( ) Практические примеры покажите, тогда будет ответ точнее пока не чего. со статикой разобрался) Всем спасибо за ответы! Всем плюсег поставлю)
|
|
| |
JackNazaryan | Дата: Понедельник, 19 Января 2015, 15:53 | Сообщение # 7 |
старожил
Сейчас нет на сайте
| Цитата dima9595 ( ) говорят что она уже устарела Если она устареет, в документации будет уведомление: "Функция устарела, будет удалена в скором времени" Щас она остаётся актуальной
|
|
| |
dima9595 | Дата: Понедельник, 19 Января 2015, 17:30 | Сообщение # 8 |
почти ветеран
Сейчас нет на сайте
| JackNazaryan, вот от куда прочитал: http://myrusakov.ru/php-spl-autoload.html
|
|
| |
JackNazaryan | Дата: Понедельник, 19 Января 2015, 19:04 | Сообщение # 9 |
старожил
Сейчас нет на сайте
| dima9595, Михаил Русаков, конечно, неплохой веб-разработчик. Однако от этого autoload не становится баяном. Для него может и устарела, у меня же всё прекрасно до сих пор... в общем это не суть важно, у всех свои вкусы
|
|
| |