|
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
|
||||||||||||||||
Получить объект класса по имени24.12.2012, 20:51. Показов 3757. Ответов 13
Метки нет (Все метки)
Получается какая проблема, работаю с loader, который подключает файлы и объявляет классы.
К примеру есть файл test.php
Рассмотрим функцию подключения:
Все работает отлично, только вот этот момент, если такой класс уже где то определен: Как по названию класса можно получить его объект?
но как получить именно объект или хотя бы как обратиться к его свойствам ? За ранее спасибо.
0
|
||||||||||||||||
| 24.12.2012, 20:51 | |
|
Ответы с готовыми решениями:
13
Как из одного объекта получить объект другого класса?
Свойству класса присвоить объект другого класса |
|
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
|
|
| 24.12.2012, 21:08 | |
|
1
|
|
|
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
|
||||||
| 24.12.2012, 23:54 [ТС] | ||||||
|
вы не много не поняли.
Вот допустим есть класс Test, мы его подключили. Потом кто то еще раз по ошибке его подключает. И например вышло так, что файл тест подключает тест 1, а тест 1 подключает снова тест. (вот какой-то уникум так сделает) и будет рекурсия. Нужно, что бы:
0
|
||||||
|
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
|
|
| 25.12.2012, 00:12 | |
|
если вы используете include_once или require_once, то файл не подключится второй раз
а для того что бы проверить какие классы уже инициализированы можно использовать функцию get_declared_classes() которая вернет массив всех задекларированных классов
1
|
|
|
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
|
||||||||||||||||
| 25.12.2012, 00:34 [ТС] | ||||||||||||||||
|
да все верно, но вот еще ошибка возникает в момент, когда мы хотим определить уже существующий класс.
Вот например: класс 1
теперь берем класс тест и вызываем еще раз класс матриц к примеру
Что у нас выходит, класс матриц был вызван еще раньше и уже существует, тут пользователь Вася забыл, что класс матриц уже подключен и подключает его по новой. Ловим ошибку, так как этот класс есть. Что я предлагаю, я в лоадере проверяю, если класс есть, то мы его переопределим просто. Вот на этом моменте и завис. И я не знаю к сожалению как в классе тест вызвать класс матриц. Сам лоад, который я копаю:
0
|
||||||||||||||||
|
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
|
|
| 25.12.2012, 00:47 | |
|
не понимаю откуда может взяться ошибка о повторном декларировании класса если вы подключаете его при помощи include_once? эта функция не подключает файл если он уже был подключен
1
|
|
|
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
|
|||||||||||
| 25.12.2012, 00:49 [ТС] | |||||||||||
0
|
|||||||||||
|
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
|
|||||||||||||||||||||||||||
| 25.12.2012, 00:54 | |||||||||||||||||||||||||||
|
файл a.php
Добавлено через 1 минуту там вам что нужно что бы файл с классом не подключался второй раз или что бы создавался только один обьект класса, и если обьект существует то второй не создавался Добавлено через 2 минуты
1
|
|||||||||||||||||||||||||||
|
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
|
||||||||||||||||
| 25.12.2012, 00:59 [ТС] | ||||||||||||||||
|
получается сотрите
а тут момент, уже файл матриц подключен и я не могу его получить через $this->имя класса
должны мы переопределить класс, что бы его было видно в дочернем классе через $this->имя класса, но не можем, так как
Вот такую проблему нашел на свою голову =)
0
|
||||||||||||||||
|
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
|
|||||||||||
| 25.12.2012, 01:00 | |||||||||||
|
а что бы не создавать кучу обьектов при каждом обращании, создаете свойство с массивом
1
|
|||||||||||
|
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
|
|||||||||||
| 25.12.2012, 01:02 [ТС] | |||||||||||
0
|
|||||||||||
|
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
|
||||||||||||
| 25.12.2012, 01:08 | ||||||||||||
|
прочитайте про шаблон пректирования registry
Добавлено через 2 минуты
0
|
||||||||||||
|
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
|
|
| 28.12.2012, 16:54 | |
|
Зачем столько геморроя?
Читаем PSR-0 и не имеем мозг себе и другим. Там все ответы даны о том, как загружать класс. И еще: это стандарт. Отхождения от него без причины - это говнокод. А говнокод - это плохо.
0
|
|
|
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
|
|
| 29.12.2012, 01:37 | |
|
причем здесь psr-0 если вопрос абсолютно в другом
0
|
|
| 29.12.2012, 01:37 | |
|
Помогаю со студенческими работами здесь
14
Получить значения проперти/метода класса по имени Как получить указатель на объект класса CDocument Как получить полный адрес по имени поля объекта класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|