|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
|
numerovan |
|
|||
Опытный Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: нет Всего: 2 |
можно ли как-то сделать следующее:
добавляю/объявляю в программе подключаемый класс при этом он помещается в определенную, выбранную мною, пространство имени ... и что самое главное в файле где происходит описание класса не подставляется слово namespace. Подключение классов, как знаем, происходит с помощью spl_autoload_register() ... в общем добавляем класс в нужное пространство имен, а сам подключаемый файл имеет вид:
|
|||
|
||||
_zorn_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
Выше еще один файл который неймспейсы разруливает... Вопрос "зачем" задавать бесмысленно ? |
|||
|
||||
ksnk |
|
|||
прохожий Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 1 Всего: 386 |
Каким образом в главной программе до этого класса добираются? Зачем вообще такое нужно? Пространство имен - очень простая штука. В каком-то пространстве имен ко всем определяемым классам и дефайнам автоматически приписывается префикс. Чтобы из другого места добраться до класса в другом пространстве имен - его нужно ЯВНО указать. При это можно пользоваться use, алиасами, но нужный неймспейс должен быть указан. Класс, в файле с описанием которого не указан неймспейс, может попасть только в глобальное пространство имен. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
_zorn_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
А как же use или полное указание класса (типа new \Namespace\Package\Subdir\Class()) ? Я понял что вы хотели сказать, но выразились не правильно. Не "может попасть", а "находится в". А вообще я пользуюсь композерским автолоадером. Очень удобно - пару строчек в composer.json и структура директорий повторяет неймспейсы АВТОМАТИЧЕСКИ. Это сообщение отредактировал(а) _zorn_ - 16.4.2016, 12:38 |
|||
|
||||
ksnk |
|
||||
прохожий Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 1 Всего: 386 |
_zorn_, словосочетание `может попасть ТОЛЬКО`, imho и означает `находится в`. Нет?
Ok. Есть файл
Какие слова, кроме nаmespace можно написать между описанием класса и первой строкой, чтобы в результате был НЕ `xx`? Как можно изменить описание класса, чтобы получился класс с namespace? Это сообщение отредактировал(а) ksnk - 16.4.2016, 14:53 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||
|
|||||
_zorn_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
||||
|
||||
numerovan |
|
||||||
Опытный Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: нет Всего: 2 |
Кстати, для чего такое мне, я в плане темы?
Так сказать фреймворк свой делаю. Мне вот нужно чтоб подключаемые пользовательские классы не конфликтовали с теми классами что уже определены, поэтому пользовательские классы хочится помещать в свою пространство имен. Вид на подобие: class Settings_step1_step2_step3{} - не очень как-то красиво, хотелось бы одним словом, например так: class Settings{} При этом так же бы не хотелось во все пользовательские классы сверху дописывать пространство имен:
Представьте подключаемых файлов штук 20 или 50, то на каждый прописывать пространство предка, то как-то не очень смотрится:
Поэтому и к чему веду, чтоб как-то более красиво было, без лишних слов на добавляемые классы
Это сообщение отредактировал(а) numerovan - 16.4.2016, 18:24 |
||||||
|
|||||||
ksnk |
|
|||
прохожий Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 1 Всего: 386 |
Совсем без изменений исходников - никак.
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
numerovan |
|
|||
Опытный Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: нет Всего: 2 |
Вот это не сработало, класс объявился, но в глобальном пространстве. Сейчас сижу понимаю что нужно как-то сделать чтоб котроллеры грузились в одно прсотонаство, модели в другое, при этом в файлах котроллеров и моделей не было лишних объявлений (namespace, \scope1\Class) |
|||
|
||||
ksnk |
|
|||
прохожий Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 1 Всего: 386 |
Какое слово в словосочетании `никак` остается непонятным?
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
_zorn_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
БРОСАЙ эту затею. Умные люди все до тебя придумали. И все удобно. И не конфликтуют. Фабьен красава по части ПХП. Объясню простую вещь - придумашь ты что нибудь... Чтобы ВСЕМ пользоваться этим ТВОИМ нужно вникать и разбираться. Правильно ? С чем проще разобраться с тем к чему ДОКУМЕНТАЦИЯ вся лежит и дожидается и куча народу знает как решить "проблему" или с твоим "фреймворком" в котором НИКТО не разбирается ? Ты же не готов поддерживать ДОКУМЕНТАЦИЮ в актуальном состоянии ? |
|||
|
||||
numerovan |
|
|||
Опытный Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: нет Всего: 2 |
Идея да херовая оказывается была. Конечно нужны свои пространства имен, в общем придерживать как на популярных фреймворках сделано.
|
|||
|
||||
Zhenek |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 168 Регистрация: 31.5.2007 Репутация: нет Всего: 1 |
Хоть пост и 16 года, НО! Это самый ужасный совет!!! НЕ обязательно делать что-то для всех. Достаточно просто делать это. Программированию учатся на практике читая документацию, а не просто ее читая. Есть люди кто берет заказ на фрилансе и учится по ходу дела. и опыт и деньги(заказчик получает полено). А есть те, кто просто спрашивают себя, а как сделать это - и делают. И чем сложнее задача, тем глубже придется копать, лезть в документацию. Это похоже на метод Карла Сагана. чтобы разобраться в теме, попробуй объяснить это так, чтобы понял ребенок.Если не можешь что-то объяснить значит не знаешь этого и нужно сначала изучить. Я за свою жизнь сделал СТОЛЬКО НЕ нужной фигни, я столько написал велосипедов, зато я обрел отличный опыт. Нужно написать свой фреимворк с блекджеком и теми ш***ми которые нравятся тебе, не фреимворка ради, а опыта!. Если бы никто не пытался сделать свое, мы бы все копали землю мотыгами. --------------------
<удалено администрацией> |
|||
|
||||
_zorn_ |
|
||||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
Это вроде Энштейн говорил.
Я тоже. Но ни одного фреймворка и прочего "общефункционального и всего умеющего комбайна". Я как УВИДЕЛ, как надо писать - тогда ОСЕНИЛО. А так то впринципе можно и до талова через жквери запросы гонять И обучаться на своих лисапедах )) |
||||
|
|||||
Zhenek |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 168 Регистрация: 31.5.2007 Репутация: нет Всего: 1 |
Это да, но автор никогда бы не полез в некие дебри ооп не начни он писать фреимворк))) В идеале нужен учитель который покажет, если его нет, можно листать чужой код и смотреть как надо, но для этого нужно сначала выучить основы так, чтобы читая чужой код учиться стилистике и правильному мышлению, а не лезть в документацию пытаясь выяснить что делает та или инная конструкция))) п.с. Выражение принадлежит Эйнштейну, а метод обучения из него сделал Саган) Что то типа: возьмите ручку и напишите как-будто вы объясняете ребенку, и если что-то не можете объяснить подробно не используя термины(расшифровывать их) то идите и вникните в определение и т.д.)))) Интересный подход) --------------------
<удалено администрацией> |
|||
|
||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Для профи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |