как правильно использовать автолоад?

гемоглобин

Новичок
как правильно использовать автолоад?

Поделитесь опытом как правильно использовать автолоад
К примеру, если делать названия классов Module_Foo_Bar, и потом их автолоадом грузить из папки Module/Foo/Bar, это нормально? Есть ли какие-то неудобства, подводные камни? Где-то я читал (не могу щас найти), что надо, мол, держать конфиг, по которому можно определить где какой класс лежит, зачем такое может понадобиться?
 

zerkms

TDD infected
Команда форума
Нет никаких "правил".

Чтобы автолоад работал - достаточно, чтобы он был в состоянии по имени класса восстановить до него путь. Как он это будет делать - вычислять из имени, брать из какой-то предсгенеренной карты или телепатически - неважно. Всё, как всегда, упирается в удобство и контекст.
 

weregod

unserializer
Re: как правильно использовать автолоад?

> Есть ли какие-то неудобства, подводные камни?
множество одноимённых файлов и постоянное скакание по структуре папок, попробуйте почитать код Magento

> держать конфиг, по которому можно определить где какой класс лежит
если нет правила, изложенного выше, и все классы/интерфейсы не лежат в одной папке в отдельных одноимённых файлах
 

weregod

unserializer
triumvirat
хранить соответствие имён классов/интерфейсов именам или путям до файлов, их содержащие
 

Духовность™

Продвинутый новичок
а ты программист, или кто, епт?
хз кто я, но я твердо убежден, что писать руками в конфиг соответствия имя_класса => путь - это мазохизм, при котором песдетс головного мозга обеспечен. Конечно, можно ещё написать генератор, который будет ходить по каталогам, искать имена файлов вида *.class.php открывать их, узнавать имя класса и записывать это все в конфиг.. но ради чего?
 

флоппик

promotor fidei
Команда форума
Партнер клуба

weregod

unserializer
Re: Re: как правильно использовать автолоад?

triumvirat,
ещё раз, попробуйте почитать код Magento и поскакать по некоторому набору папок в розысках нужного класса после примерно следующих строк:
PHP:
Mage::getResource('что-то там')->метод1(..)->метод2(..)->метод3(..)->метод4(..);
и, до кучи, параллельно повыяснять, к чьим классам относятся методы 2, 3, 4 и т. д. ;)

вот где выдержку можно потренировать ;)
 

Духовность™

Продвинутый новичок
попробуйте почитать код Magento и поскакать по некоторому набору папок в розысках нужного класса после примерно следующих строк:

Mage::getResource('что-то там')->метод1(..)->метод2(..)->метод3(..)->метод4(..);
Это не проблема ООП (с)

Причем тут тема автолоада? От того, что твой класс будет называться не Module_Foo_Bar, а ModuleFooBar1, ModuleFooBar2 и ModuleFooBar3 легче станет разбираться в приведенном примере?
 

john.brown

просто кулибин
Нормально автолоад юзать, и пути к файлам в названияx классов зашивать. И код, кстати, в таком варианте оч удобно читать - не надо гадать, где лежит какой не то core_mvc_CommandBase ;)
 

fixxxer

К.О.
Партнер клуба
>>ещё раз, попробуйте почитать код Magento и поскакать по некоторому набору папок в розысках нужного класса после примерно следующих строк:

ох у тя проблемы...

зато в оскоммерсе все бл*ть понятно ага.
 

AmdY

Пью пиво
Команда форума
Re: Re: Re: как правильно использовать автолоад?

Автор оригинала: weregod
triumvirat,
PHP:
Mage::getResource('что-то там')->метод1(..)->метод2(..)->метод3(..)->метод4(..);
и, до кучи, параллельно повыяснять, к чьим классам относятся методы 2, 3, 4 и т. д. ;)

вот где выдержку можно потренировать ;)
двойной клик по 'что-то там', выделилось слово, теперь ctrl+o мгновенно находим нужный класс.
можно
/* @var $foo Resource_Class */
$foo = Mage::getResource('что-то там');
$foo->->метод1(..)->метод2(..)->метод3(..)->метод4(..);

p.s. Будь проклят CakePhp
 

Alexandre

PHPПенсионер
а как прикажете автозагрузку классов тогда делать?
лично я делал различие по большой букве:
ZF имена классов действительно убивают...
Пример
Код:
class User path lib/User
class userProfile path lib/User
class userModel path lib/User

class Group path lib/Group
class groupModel path lib/Group
исключение: все классы начинающиеся с page в папке page : userPage, groupPage

а психического здоровья хватит каждый путь к классу в конфиг записывать?
а зачем это делать ручками????
запусти скриптик, который тебе отсканирует содержимое всех директорий и названия классов и сформирует конфир. Делов на 45 минут.
 

Духовность™

Продвинутый новичок
да всё равно это костыли. я тоже много как делал, но ИМХО ничего лучше ИМЯ_КЛАССА_ЭТО_ПУТЬ_ДО_ЕГО_ФАЙЛА не придумали.
 

AmdY

Пью пиво
Команда форума
grigori
это путь к классам
userModel lib/User
Вроде понятно, не понятно только чем это лучше _
 
Сверху