Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
-23 / 6 / 6
Регистрация: 21.12.2017
Сообщений: 79

Multiple extends - как правильно?

21.12.2017, 14:07. Показов 1018. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите разобраться
вот есть class0, который содержит все общие объекты и методы, которыми пользуются другие классы, т.е. он parent
и есть class1, который extends class0, но в нём много кода занимает ФОРМА + её валидация при сабмите
формы у меня и по 80 колонок есть, поэтому хотелось бы эту форму вынести в отдельный класс/файл
т.е. появляется class2, который тоже extends class0

а усугубляется всё тем, что вызываются оба эти класса из class3
в общем вопрос в том, как правильно сделать, когда надо методы 1 класса разбить на 2 и при этом оба чтобы юзали общего родителя, а вызывались вообще из 3го класса?

Добавлено через 1 час 16 минут
вот такой код выведет 2 1:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
(new a3)->go();
 
class a0
{
    public $obj = 1;
}
 
class a1 extends a0
{
    function show() {
        echo $this->obj."\n";
    }
}
 
class a2 extends a0
{
    function show() {
        echo $this->obj."\n";
    }
}
 
class a3
{
    function go()
    {
        $a1 = new a1;
        $a2 = new a2;
        $a1->obj = 2;
        $a1->show();
        $a2->show();
    }
}
очевидно потому, что 2 выставлялась для $a1, но мне то надо, чтобы её и $a2 увидел
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.12.2017, 14:07
Ответы с готовыми решениями:

получить все записи из <select multiple='multiple'
как через JQUERY получить все записи из &lt;select multiple='multiple'

Как избавиться от multiple definition?
Есть header: //base.hpp #ifndef BASE_HPP #define BASE_HPP struct Coord { int x, y; };

extends
Здравствуйте у меян такой вопрос мб кто нибудь знает. Допустим есть 2 класса class t1 { } class t2 extends t1 {}

12
 Аватар для otto-fukin
14 / 60 / 21
Регистрация: 15.06.2017
Сообщений: 572
21.12.2017, 21:41
Цитата Сообщение от little endian Посмотреть сообщение
PHP
1
2
3
4
5
6
7
8
9
10
11
12
class a1 extends a0
{
* * function show() {
* * * * echo $this->obj."\n";
* * }
}
class a2 extends a0
{
* * function show() {
* * * * echo $this->obj."\n";
* * }
}
и чем тут a1 отличается от a2?
Цитата Сообщение от little endian Посмотреть сообщение
2 выставлялась для $a1, но мне то надо, чтобы её и $a2 увидел
PHP
1
$a2->obj = 2;
0
-23 / 6 / 6
Регистрация: 21.12.2017
Сообщений: 79
21.12.2017, 21:45  [ТС]
тут ничем, на то он и пример
в условии написано, что в а2 форма
0
 Аватар для otto-fukin
14 / 60 / 21
Регистрация: 15.06.2017
Сообщений: 572
21.12.2017, 21:47
Цитата Сообщение от little endian Посмотреть сообщение
тут ничем, на то он и пример
Ну раз это пример, то судя по вашему примеру - проблем никаких.
0
-23 / 6 / 6
Регистрация: 21.12.2017
Сообщений: 79
21.12.2017, 21:51  [ТС]
он выводит 2 1
Цитата Сообщение от otto-fukin Посмотреть сообщение
$a2->obj = 2;
а это нихрена не решение, а костыль
мне надо, чтобы $a2 видел объекты из a0 И a1
т.к. а2 это часть а1, где прописываются некоторые переменные, то они тоже нужны
так то можно было просто работать с $a2, но нужны эти значения
0
 Аватар для otto-fukin
14 / 60 / 21
Регистрация: 15.06.2017
Сообщений: 572
21.12.2017, 21:58
Цитата Сообщение от little endian Посмотреть сообщение
а это нихрена не решение, а костыль
мне надо, чтобы $a2 видел объекты из a0 И a1, т.к. а2 это часть а1,
с хрена ли они не видят? все видят. Только выже нихрена не присваиваете значения свойства, какого хрена оно должно быть равно 2?
0
-23 / 6 / 6
Регистрация: 21.12.2017
Сообщений: 79
21.12.2017, 22:00  [ТС]
нет, не видит, вот в а1 назначается $obj1 из a0 через $this->obj1
и его не видит a2
а он назначается в a1, а не в a3 и его нельзя вот так взять и обозначить
Цитата Сообщение от otto-fukin Посмотреть сообщение
$a2->obj = 2;
0
 Аватар для otto-fukin
14 / 60 / 21
Регистрация: 15.06.2017
Сообщений: 572
21.12.2017, 22:05
Цитата Сообщение от little endian Посмотреть сообщение
от в а1 назначается $obj1 из a0
и его не видит a2
не путайте классы и объекты. $a1 и $a2 - разные объекты и значения их свойств у каждого свои. Если хотите чтобы все было одинаково используйте статические свойства, но это по большому счету уже не ооп, а так, дополнительный уровень изоляции глобальных переменных...
0
-23 / 6 / 6
Регистрация: 21.12.2017
Сообщений: 79
21.12.2017, 22:06  [ТС]
объекты это то что в классах вместо переменных
а на $a1 $a2 повешены именно классы

статика или общие переменные это единственный вариант?
0
 Аватар для otto-fukin
14 / 60 / 21
Регистрация: 15.06.2017
Сообщений: 572
21.12.2017, 22:12
Цитата Сообщение от little endian Посмотреть сообщение
объекты это то что в классах вместо переменных
а на $a1 $a2 повешены именно классы
в этой фразе смысл вообще не прослеживается. Какой-то набор слов. Делайте программу процедурно. Она будет быстрее работать. Бонусом будет отсутствие необходимости разбираться чем объект отличается от класса контексте ООП
0
-23 / 6 / 6
Регистрация: 21.12.2017
Сообщений: 79
22.12.2017, 11:16  [ТС]
и что мне даст эта процедурность? один хрен в ф-и глобалы передавать, что ещё неудобнее

Добавлено через 12 часов 53 минуты
в общем, поразмыслив, пришёл к выводу, что общие параметры это общие параметры и надо юзать стандартные механизмы - global либо в оба класса назначать
0
123 / 77 / 33
Регистрация: 05.03.2013
Сообщений: 449
22.12.2017, 16:21
Думаю, тебе нужно это https://ru.wikipedia.org/wiki/... ер_на_PHP5
0
-23 / 6 / 6
Регистрация: 21.12.2017
Сообщений: 79
22.12.2017, 16:54  [ТС]
мудрёно :\
но спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.12.2017, 16:54
Помогаю со студенческими работами здесь

extends
Я вот читаю про ООП в PHP. Там написано, что extends говорит, что этот класс расширяет тот, класс, &quot;от которого он extends&quot;. Вот...

Как изменить оформление select multiple?
Добрый день, подскажите пожалуйста как реализовать эту выборку ? Я думаю что нужно изменить скрол в теге &lt;select&gt; а вот как...

Как избавиться от E2238 Multiple declaration ?
Есть файл resource.h в котором подключены и определены общие типы данных Этот файл подключен во всех (3) классах которые используют...

Jinja2 extends
Добрый день! Подскажите, использую базовый шаблон html-страницы для создания новых путем расширения через extends Дело в том, что в...

<? extends E> и <? super E>
class One class Two extends One class Three extends Two One one = new One(); Two two = new Two(); ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru