Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> загрузка класса 
V
    Опции темы
Absinthe
Дата 8.11.2011, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 4.5.2011

Репутация: 5
Всего: 11



Цитата

Почему стандартные средства автолода не могут такого?
 Потому что им наверное приходилось работать с чужим *кодом с файлами по 500+ строк.
Исключения - хорошо документированные файлы, там 800 строк это нормально(т.к. кода по сути там 200 строк, остальное комментарии и пустые строки).

PM MAIL   Вверх
bars80080
Дата 8.11.2011, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



да, надо было оказывается найти вразумительный мануал.

правда, не догнал, каким образом можно запихнуть в автолоад дополнительные параметры. с путём ещё выкрутился:


Код

function __autoload($name) {
    require_once PATH_LIB . "/class.{$name}.php";
}


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


а насколько удлиняет работу такой вызов? может и смысла им пользоваться нет?
PM MAIL WWW   Вверх
gta4kv
Дата 8.11.2011, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



А зачем тебе в автолоаде дополнительные параметры? почему константа?

Добавлено через 10 минут и 37 секунд
Сделай статичную переменную с настройками в $mainClassObject
PM MAIL   Вверх
ksnk
Дата 8.11.2011, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Можно так.  smile 
Код

function __autoload($name) {
    static $options=array();
    if(is_array($name)){ // relax,  it's configuration
        $options=array_merge(var_export ($name),$options);
        return;
    }
    if(!include_once $options['path'] . "/class.{$name}.php" )
      require_once $options['secondary_path'] . "/class.{$name}.php";
}


настройка

Код

__autoload(array(
  'path'=>'MyCmsPath',
  'secondary_path'=>'MyCmsPath2'
));


Хотя более кошерно состряпать класс со статическими константами. Тогда такого странного вызова автолода можно не делать 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
bars80080
Дата 8.11.2011, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(gta4kv @  8.11.2011,  14:58 Найти цитируемый пост)
Сделай статичную переменную с настройками в $mainClassObject 

не понял. __autoload() - ведь просто функция вне класса mainClass. там ведь никакой $this виден не будет


Цитата(ksnk @  8.11.2011,  15:30 Найти цитируемый пост)
Хотя более кошерно состряпать класс со статическими константами. Тогда такого странного вызова автолода можно не делать  

что-то вы говорите о материях, коих я, судя по всему, не касался
PM MAIL WWW   Вверх
ksnk
Дата 8.11.2011, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Код

class SUPER {
   static $options=array();
   static function set($options){
      self::$options=array_merge(var_export ($options),self::$options);
   }
}



инициализация 
Код

SUPER::set(array(
  'path'=>'MyCmsPath',
  'secondary_path'=>'MyCmsPath2'
));

__autoload
Код

function __autoload($name) {
    
    if(!include_once SUPER::$options['path'] . "/class.{$name}.php" )
      require_once SUPER::$options['secondary_path'] . "/class.{$name}.php";
}


просто этот супер используется в качестве namespace. Так его можно использовать по всей системе, классы видны глобально ...

Это сообщение отредактировал(а) ksnk - 8.11.2011, 16:09


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
bars80080
Дата 8.11.2011, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



понятно.

ОК
PM MAIL WWW   Вверх
gta4kv
Дата 8.11.2011, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



прошу заметить, что никто не мешает положить вам функцию автолоада в класс.
PM MAIL   Вверх
bars80080
Дата 8.11.2011, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



опять не понятно. 
пхп что, разыскивает все методы называющиеся __autoload() в любых классах?
PM MAIL WWW   Вверх
gta4kv
Дата 8.11.2011, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Он будет его искать, там, где ты скажешь.

http://ru2.php.net/spl_autoload_register
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

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


 




[ Время генерации скрипта: 0.0759 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.