Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
18 / 18 / 13
Регистрация: 10.11.2010
Сообщений: 143

Экземпляры класса

30.08.2013, 22:35. Показов 3179. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Я затупил и не могу понять такую вещь) Вот есть у меня, например, класс CRUD, он занимается манипуляциями с данными из БД. Также у меня есть, скажем, два файла php, оба из них обращаются к методам данного класса, к разным и к одному и тому же тоже. Вот вопрос в том, нужно ли создавать экземпляр класса для каждого такого файла, или нужен лишь один общий экземпляр?
То же самое касается класса шаблонизатора, например смарти. Я должен использовать его методы в нескольких местах. В том числе и assign, возможно даже с одинаковыми названиями переменных. Стоит ли заводить экземпляр для каждого модуля?)
Прошу объяснить поподробнее, если можно
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.08.2013, 22:35
Ответы с готовыми решениями:

Переопределение метода __call() чтобы вызвать методы protected с экземпляры класса
Я пришел на новый проект и столкнулся с такой ситуацией, что там сделали возможным вызывать методы объявлены как protected. Нарушает ли это...

Не наследуются экземпляры
class.php<?php class question { private $text,$variant1,$variant2,$variant3,$answer,$ed,$correct; public function...

Как положить в массив экземпляры классов?
Здравствуйте! Есть задача. У меня есть 2 класса FixedMonthlyCostPaidService и FixedHourlyCostPaidService, которые считают среднемесячные...

27
 Аватар для menlfik
32 / 32 / 0
Регистрация: 24.10.2012
Сообщений: 120
30.08.2013, 22:52
Почитайте про наследование.
0
18 / 18 / 13
Регистрация: 10.11.2010
Сообщений: 143
30.08.2013, 22:54  [ТС]
menlfik, при чем тут наследование? я про экземпляры (объекты), не про классы
0
 Аватар для fa2m
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
31.08.2013, 01:26
Цитата Сообщение от elluminate Посмотреть сообщение
нужно ли создавать экземпляр класса
я вот задумался, что Вы подразумеваете под созданием "экземпляра класса", это вызывать его каждый раз по новому, или это одинаковые классы в разных файлах?
0
18 / 18 / 13
Регистрация: 10.11.2010
Сообщений: 143
31.08.2013, 01:27  [ТС]
fa2m, это я имею в виду
PHP
1
$class = new class1();
в каждом модуле, где он нужен
0
 Аватар для fa2m
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
31.08.2013, 01:39
elluminate, ок, я Вас понял, ну тогда зря Вы проигнорировали совет menlfik

Добавлено через 1 минуту
Если в Вашем случае не подходит наследование, то нужно создавать экземпляр каждый раз
0
18 / 18 / 13
Регистрация: 10.11.2010
Сообщений: 143
31.08.2013, 01:41  [ТС]
fa2m, так а что Вы мне советуете наследовать? Может я не знаю чего-то или не понимаю, но как можно, во-первых, и, во-вторых, даже если можно, смысл наследовать экземпляр?
0
 Аватар для fa2m
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
31.08.2013, 01:45
PHP
1
2
3
4
class ClassName1 extends CRUD{
}
class ClassName2 extends CRUD{
}
и Вы можете создавая экземпляр любого из этих классов и использовать все методы CRUD не вызывая его отдельно... или я Вас не понял, или у Вас очень слабые знания ООП
0
18 / 18 / 13
Регистрация: 10.11.2010
Сообщений: 143
31.08.2013, 01:51  [ТС]
fa2m, у нас, наверно, недопонимание)
вот постараюсь конкретнее объяснить. если у меня класс crud в модуле crud.php. Описал я там все методы, которые мне нужны. Выборка, добавление и т.д. Появляется модуль показа новостей show.php. Там я создаю crud1 = new crud(); использую метод выборки. Потом появляется модуль удаления новостей delete.php. В нем я опять создаю crud2 = new crud();
Так вот я и спрашиваю. Так делаться должно или может создается в одном модуле экземпляр, а потом этот модуль require везде, где нужно использовать класс этот и все модули работают с одним экземпляром? или же все таки в каждый модуль должен работать со своим экземпляром?
0
 Аватар для fa2m
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
31.08.2013, 01:55
Да, вышло недопонимание, но, давайте сначала разберёмся с понятием МОДУЛЬ - это можно сказать отдельное приложение, которое может работать и без Вашего основного сайта (это конечно только моё мнение и Вы можете быть с ним не согласны). Поэтому лучше называть не МОДУЛИ, а модели. И нужно вызывать модель CRUD в каждой другой модели каждый раз
0
18 / 18 / 13
Регистрация: 10.11.2010
Сообщений: 143
31.08.2013, 01:59  [ТС]
fa2m, ну я вообще под модулем имел в виду файл) моделью не могу назвать пока, не совсем MVC получается) ну вот если даже от этого отойти а поговорить о smarty. Есть у меня админка и простой доступ, как разные файлы организованы. При чем они делятся на показ ленты новостей и всего одной новости) то есть тоже по 2 файла. Также стоит в каждом таком файле свой объект $smarty = new Smarty() организовывать?)
хотя Вы вроде как тоже не про ту модель, ну неважно, вроде теперь понятно)
0
 Аватар для fa2m
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
31.08.2013, 02:02
Со Smarty вообще никогда не работал, не знаю как ОНО работает, поэтому помочь Вам не могу...
0
18 / 18 / 13
Регистрация: 10.11.2010
Сообщений: 143
31.08.2013, 02:04  [ТС]
fa2m, ну давайте, чтоб все на свои места стало) если в нескольких файлах нужно обращаться к методам одного класса, то в каждм из них должен быть создан свой экземпляр, а не один на всех?)
0
 Аватар для fa2m
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
31.08.2013, 02:06
я не знаю Вашего кода, возможно там можно юзать один и тот же экземпляр, а возможно нужно использовать наследование

Добавлено через 1 минуту
делайте как получится, чувство "правильности" прийдёт позже ))
0
18 / 18 / 13
Регистрация: 10.11.2010
Сообщений: 143
31.08.2013, 02:07  [ТС]
fa2m, опять наследование? Вы что под ним имеете в виду сейчас?
0
 Аватар для fa2m
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
31.08.2013, 02:10
Цитата Сообщение от elluminate Посмотреть сообщение
Вы что под ним имеете в виду сейчас?
Да то, что не нужно создавать экземпляры, просто обращаетесь к нужным методам класса-родителя. Вы знаете что такое наследование?
0
18 / 18 / 13
Регистрация: 10.11.2010
Сообщений: 143
31.08.2013, 02:13  [ТС]
fa2m, к методам класса обратиться нельзя, обратиться можно к методам экземпляра. Даже если унаследовать класс, то придется создавать его экземпляр. Какой смысл?
0
 Аватар для fa2m
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
31.08.2013, 02:24
Специально для Вас написал:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
class Child extends CRUD{
 
}
 
class CRUD {
    public $word;
    public function get()
    {
        return $this->word = base64_decode('0J3RgyDRh9GRLCDRgNCw0LHQvtGC0LDQtdGCPyA6KSDQmCDQs9C00LUg0LzRiyDQt9C00LXRgdGMINGB0L7Qt9C00LDRkdC8INGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAgQ1JVRD8=');
    }
}
 
$Child = new Child();
echo $Child->get();
запустите у себя код

Добавлено через 1 минуту
У Вас слабые знания ООП
0
18 / 18 / 13
Регистрация: 10.11.2010
Сообщений: 143
31.08.2013, 02:27  [ТС]
fa2m, о господи. а где я сказал, что я создаю экземпляр предка, чтоб потом создать экземпляр потомка? Мне такое и в голову не приходило. У меня crud вообще высшей иерархии класс, я ни от чего его не наследовал
0
 Аватар для fa2m
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
31.08.2013, 02:31
Вы хотите использовать класс CRUD в многих своих файлах, вот и наследуйте его во всех классах, которые Вам нужны при этом каждый раз создавая экземпляр потомка.

Не по теме:

Я не пойму, Вы троллите, или реально не можете объяснить, что хотите?

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.08.2013, 02:31
Помогаю со студенческими работами здесь

Разъясните синтаксис - имя класса при передаче аргументов методу класса
Здравствуйте. Несколько раз столкнулся с нижеследующим кодом классов. 1. При разборе роутера FastRoute: $dispatcher =...

Как вызвать метод класса в другом методе этого же класса?
&lt;? class load_files{ public function traverse_hierarchy($path) { // from...

Создание экземпляра класса, имя класса находиться в строковой переменной
Подскажите люди добрые, как можно выйти из такой ситуации, вот допустим имеются классы class new1{ . . . } class new2{ . . ...

Как правильно вызвать метод класса внутри самого класса?
Здравствуйте. Собственно тема прописана в заголовке: как правильно вызвать метод класса внутри самого класса? Насколько я знаю, для...

Вызов метода одного класса внутри другого класса
PHP передача метода, с класса, в другой класс Столкнулся с проблемой не могу передать метод или функцию с одного класса в другой ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru