| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Для профи > Как объявить класс в необходимом пространстве имен |
| Автор: numerovan 16.4.2016, 08:58 | ||
| можно ли как-то сделать следующее: добавляю/объявляю в программе подключаемый класс при этом он помещается в определенную, выбранную мною, пространство имени ... и что самое главное в файле где происходит описание класса не подставляется слово namespace. Подключение классов, как знаем, происходит с помощью spl_autoload_register() ... в общем добавляем класс в нужное пространство имен, а сам подключаемый файл имеет вид:
|
| Автор: _zorn_ 16.4.2016, 12:05 | ||
Выше еще один файл который неймспейсы разруливает... Вопрос "зачем" задавать бесмысленно ? |
| Автор: _zorn_ 16.4.2016, 12:33 | ||
А как же use или полное указание класса (типа new \Namespace\Package\Subdir\Class()) ? Я понял что вы хотели сказать, но выразились не правильно. Не "может попасть", а "находится в". А вообще я пользуюсь композерским автолоадером. Очень удобно - пару строчек в composer.json и структура директорий повторяет неймспейсы АВТОМАТИЧЕСКИ. |
| Автор: ksnk 16.4.2016, 14:45 | ||||
_zorn_, словосочетание `может попасть ТОЛЬКО`, imho и означает `находится в`. Нет?
Ok. Есть файл
Какие слова, кроме nаmespace можно написать между описанием класса и первой строкой, чтобы в результате был НЕ `xx`? Как можно изменить описание класса, чтобы получился класс с namespace? |
| Автор: _zorn_ 16.4.2016, 15:04 | ||
"Может попасть только в" можно воспринять как "ограниченная область видимости" Но согласен это я к словам придираюсь |
| Автор: numerovan 16.4.2016, 18:17 | ||||||
| Кстати, для чего такое мне, я в плане темы? Так сказать фреймворк свой делаю. Мне вот нужно чтоб подключаемые пользовательские классы не конфликтовали с теми классами что уже определены, поэтому пользовательские классы хочится помещать в свою пространство имен. Вид на подобие: class Settings_step1_step2_step3{} - не очень как-то красиво, хотелось бы одним словом, например так: class Settings{} При этом так же бы не хотелось во все пользовательские классы сверху дописывать пространство имен:
Представьте подключаемых файлов штук 20 или 50, то на каждый прописывать пространство предка, то как-то не очень смотрится:
Поэтому и к чему веду, чтоб как-то более красиво было, без лишних слов на добавляемые классы
|
| Автор: ksnk 16.4.2016, 20:50 |
| Совсем без изменений исходников - никак. |
| Автор: numerovan 17.4.2016, 06:49 | ||
Вот это не сработало, класс объявился, но в глобальном пространстве. Сейчас сижу понимаю что нужно как-то сделать чтоб котроллеры грузились в одно прсотонаство, модели в другое, при этом в файлах котроллеров и моделей не было лишних объявлений (namespace, \scope1\Class) |
| Автор: ksnk 17.4.2016, 15:10 |
| Какое слово в словосочетании `никак` остается непонятным? |
| Автор: _zorn_ 26.4.2016, 16:53 |
БРОСАЙ эту затею. Умные люди все до тебя придумали. И все удобно. И не конфликтуют. Фабьен красава по части ПХП. Объясню простую вещь - придумашь ты что нибудь... Чтобы ВСЕМ пользоваться этим ТВОИМ нужно вникать и разбираться. Правильно ? С чем проще разобраться с тем к чему ДОКУМЕНТАЦИЯ вся лежит и дожидается и куча народу знает как решить "проблему" или с твоим "фреймворком" в котором НИКТО не разбирается ? Ты же не готов поддерживать ДОКУМЕНТАЦИЮ в актуальном состоянии ? |
| Автор: numerovan 17.2.2017, 04:34 |
| Идея да херовая оказывается была. Конечно нужны свои пространства имен, в общем придерживать как на популярных фреймворках сделано. |
| Автор: Zhenek 17.2.2017, 15:21 | ||
Хоть пост и 16 года, НО! Это самый ужасный совет!!! НЕ обязательно делать что-то для всех. Достаточно просто делать это. Программированию учатся на практике читая документацию, а не просто ее читая. Есть люди кто берет заказ на фрилансе и учится по ходу дела. и опыт и деньги(заказчик получает полено). А есть те, кто просто спрашивают себя, а как сделать это - и делают. И чем сложнее задача, тем глубже придется копать, лезть в документацию. Это похоже на метод Карла Сагана. чтобы разобраться в теме, попробуй объяснить это так, чтобы понял ребенок.Если не можешь что-то объяснить значит не знаешь этого и нужно сначала изучить. Я за свою жизнь сделал СТОЛЬКО НЕ нужной фигни, я столько написал велосипедов, зато я обрел отличный опыт. Нужно написать свой фреимворк с блекджеком и теми ш***ми которые нравятся тебе, не фреимворка ради, а опыта!. Если бы никто не пытался сделать свое, мы бы все копали землю мотыгами. |
| Автор: _zorn_ 17.2.2017, 18:50 | ||||
Это вроде Энштейн говорил.
Я тоже. Но ни одного фреймворка и прочего "общефункционального и всего умеющего комбайна". Я как УВИДЕЛ, как надо писать - тогда ОСЕНИЛО. А так то впринципе можно и до талова через жквери запросы гонять И обучаться на своих лисапедах )) |
| Автор: Zhenek 18.2.2017, 06:52 | ||
Это да, но автор никогда бы не полез в некие дебри ооп не начни он писать фреимворк))) В идеале нужен учитель который покажет, если его нет, можно листать чужой код и смотреть как надо, но для этого нужно сначала выучить основы так, чтобы читая чужой код учиться стилистике и правильному мышлению, а не лезть в документацию пытаясь выяснить что делает та или инная конструкция))) п.с. Выражение принадлежит Эйнштейну, а метод обучения из него сделал Саган) Что то типа: возьмите ручку и напишите как-будто вы объясняете ребенку, и если что-то не можете объяснить подробно не используя термины(расшифровывать их) то идите и вникните в определение и т.д.)))) Интересный подход) |
| Автор: _zorn_ 18.2.2017, 07:35 | ||
С чего это такое __утверждение__ ? Я например и сам понимал что надо в ооп двигаца (и двигался как мог. Функционал по работы со свитчами например - свитч это класс. Изначально написал кашу). Фабьен красавчик, он в правильную сторону пхп двигает. |