Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) 1 [2]  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Разница между self и $this в классах
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 21 день
Карма: 7




Спасибо killer8080 уже читаю про эту функцию
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 21 день
Карма: 7




Какая классная функция __autoload и как удобно

Получается создал одну папку с классами и файл автолоада и все

В нужном файле подключаеш только файл автолоада, создаешь объекты
нужных тебе классов или вызываешь их статически и они автоматом поочередно
подключаются.

На самом деле удобно, чем все время инклудить каждые класс перед тем как
создать его объект

Только вот немного не допонял функцию spl_autoload_register

Для чего она конкретно нужна, читаю про нее в мануале и толком не пойму что к чему
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 21 день
Карма: 7




А, вот понял. Если я подключаю класс не через __autoload, а через функцию,
то мне нужно ее зарегистрировать чтобы использовать эту функцию в __autoload
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 21 день
Карма: 7




И вот еще что интересно

Возьмем пару примеров с spl_autoload_register и без
Первый
function lod($classname)
{
$filename = dirname(__FILE__).DIRECTORY_SEPARATOR.strtolower($classname).'.php';
if (is_readable($filename)) {
require $filename;
}
}


spl_autoload_register('lod');

function __autoload($classname)
{
lod($classname);
}

Второй
function lod($classname)
{
$filename = dirname(__FILE__).DIRECTORY_SEPARATOR.strtolower($classname).'.php';
if (is_readable($filename)) {
require $filename;
}
}


function __autoload($classname)
{
lod($classname);
}


Что первый что второй вариант срабатывают без ошибок, так в чем смысл
функции spl_autoload_register?

Она что, своего рода создает очередь загрузки классов?

И что будет если spl_autoload_register не использовать при подключении
нескольких классов в одном файле
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 21 день
Карма: 7




Ну вот вроде врубился что к чему. В скриптах выше в первом примере
можно было и не использовать __autoload, так как я зарегистрировал свой загрузчик.

__autoload можно использовать если версия PHP старая, но если версия PHP, к примеру
выше чем 5.3 то лучше использовать spl_autoload_register, так как в мануале написано
что функция __autoload в будущем может перестать поддерживаться или быть удалена
Из мануала
Цитата
Подсказка
spl_autoload_register() предоставляет более гибкую альтернативу для автоматической загрузки классов. По этой причине использовать __autoload() не рекомендуется, а сама функция в будущем может перестать поддерживаться или быть удалена.


Ну и соответственно я сварганил вот такой велосипед
function Autoload($classname)
{
$files = dirname(__FILE__).DIRECTORY_SEPARATOR.strtolower($classname).'.php';
if (is_readable($files)) {
require $files;
}
}



if (version_compare(PHP_VERSION, '5.3.0', '>='))
{
spl_autoload_register('Autoload');

} else {

function __autoload($classname)
{
Autoload($classname);
}
}


Если версия PHP больше или равна 5.3 то регистрируем свой автозагрузчик
иначе используем старую функцию __autoload

Думаю для понимания функций __autoload и spl_autoload_register я дошел.

И теперь интересно, для чего регистрируют несколько автозагрузчиков?

Кто может ответить на этот вопрос, для чего это нужно



PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) 1 [2]  Ответ в темуСоздание новой темыСоздание опроса