автолоад по имени класса

Духовность™

Продвинутый новичок
автолоад по имени класса

Сейчас смотрю стало модно делать автолоад по имени класса, заменяя "_" на "/" и таким образом подгружая класс. В принципе, идея хорошая, только я вот не пойму, тогда получается, что имя класса жестко завязано на его местоположении и само имя класса получается очень большим?

Kernel_Module_User_Mapper_Coommon - это нормальное имя класса?
и нормально ли писать такие вызовы в программе:
PHP:
$class = new Kernel_Module_User_Mapper_Coommon();
??
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Сейчас смотрю стало модно делать автолоад по имени класса, заменяя "_" на "/" и таким образом подгружая класс.
Это не "модно", это PEAR coding guideline.
 

Духовность™

Продвинутый новичок
Ну ладно к частностям придираться. Правильно ли я понимаю, что вызовы классов в скриптах именно так происходят или пишут какие-то особые замудренные Loader-ы?
 

Fortop

Новичок
Есть вариант с предопределенными namespace для модулей или плагинов.

например.
PHP:
$class = new Mapper_Commonl();
есть зарегистрированный модуль MyApp
и в loader производится поиск по следующим путям:

Mapper/Common.php
Modules/MyApp/Mapper/Common.php
 

Духовность™

Продвинутый новичок
ммм... я неймспейсы ещё не юзал. ща посмотрю что эт такое

-~{}~ 15.03.10 23:43:

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

AmdY

Пью пиво
Команда форума
triumvirat
>>имя класса жестко завязано на его местоположении
в этом вся соль, иначе разработчик получает возможность стрельнуть себе в ногу и довести коллег до суицида, посмотри высказывания Ирокеза в теме о фреймфорке.
 

Духовность™

Продвинутый новичок
Понятно. Начал переписывать приложение на таком принципе именования и расположения классов.

Это не "модно", это PEAR coding guideline.
Я почитал про PEAR coding guideline, но я не нашел, где была бы информация о том, как располагать и именовать абстрактные классы и интерфейсы... вот у Хряка в теме про фреймворк абстрактные классы/интерфейсы лежат в папке Abstract - это его задумка или это стандарт?
 

AmdY

Пью пиво
Команда форума
Хряк плохому не научит, повторяй за ним, если не уверен, что твоя идея будет лучше.
а вообще это в zend framework можно наблюдать, классы и интерфейсы *_*_Abstract, *_*_Interface
 

Alexandre

PHPПенсионер
Kernel_Module_User_Mapper_Coommon - это нормальное имя класса
на мой взгляд - бред
делаю автолоад сл образом:
- все классы в директории lib
классы ищутся в директории, которая начинается с первой буквы начала класса и заканчивается первой следующей большой буквой не включая ее, например:
~lib/User
там ищутся классы:
User
UserProfile
UserModel

~lib/News
там ищутся классы:
News
NewsList
NewsMode
NewsLoader



если нет там, то некоторые системные классы, расположены в папке System:
~lib/System

так же есть классы страниц, ищутся в дирктории ~Page
оканчиваются на xxxPage например UserProfilePage или NewsPage


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

Духовность™

Продвинутый новичок
Я почитал про PEAR coding guideline, но я не нашел, где была бы информация о том, как располагать и именовать абстрактные классы и интерфейсы... вот у Хряка в теме про фреймворк абстрактные классы/интерфейсы лежат в папке Abstract - это его задумка или это стандарт?
обожаю, когда меня игнорируют
 

HraKK

Мудак
Команда форума
если нет там, то некоторые системные классы, расположены в папке System:
~lib/System

так же есть классы страниц, ищутся в дирктории ~Page
оканчиваются на xxxPage например UserProfilePage или NewsPage
ага, а перебор стольких директорий, конечно не тормозит.

это его задумка или это стандарт?
это логически обоснованная позиция.
 

HraKK

Мудак
Команда форума
http://pear.php.net/manual/nl/standards.classdef.php

имя класса жестко завязано на его местоположении
что в этом плохого?


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

Ну и конечно, легкость загрузки для автолоадера.
KISS
 

cDLEON

Онанист РНРСlub
HraKK
На сколько я понял, там дира определяется первым словом в названии класса UserMapper - папка User, файл UserMapper.php
 

Fortop

Новичок
Угу, последовательность меня тоже порадовала.
Часть классов ищем по началу имени, часть по окончанию имени....
 
Сверху