|
ошибка при использовании $this и parent | ☑ | ||
---|---|---|---|---|
0
vde69
26.01.20
✎
17:28
|
PHP, не пойму в чем ошибка
abstract class FG_Alg_Custom { protected $in_data = array(); public function read_data($data, $dim){ $this->$in_data = array(); // вот тут вываливается в исключение } } class FG_Alg_Gray extends FG_Alg_Custom { protected $step = 10; public function read_data($data, $dim, $step = 10){ $this->$step = $step; parent::read_data($data, $dim); } } $FG_Gray = new FG_Alg_Gray(); $FG_Gray->read_data($a_i, $algall); вроде по логике работет так 1. создаю объект FG_Alg_Gray, 2. вызываю FG_Alg_Gray.read_data() 3. внутри нее идет вызов перепределеной функции FG_Alg_Custom.read_data(), при этом внутри нее $this должен быть указателем не на класс а на обьект $FG_Gray 4. а вот обращение к свойству обекта выдает ошибку... единственное чего приходит в голову, это то, что по сколько базовый класс объявлен как абстрактный и может в нем $this равен null? (статический), но тогда вопрос - как правильно реализовать сабж? |
|||
1
Генератор
26.01.20
✎
17:32
|
он же как статик метод вызывается, если я правильно синтаксис понимаю, значит там нет this
|
|||
2
vde69
26.01.20
✎
17:35
|
(1) то есть базовый класс не может быть абстрактным и одновременно реализовывать логику обьекта? только логику класса в целом?
|
|||
3
Генератор
26.01.20
✎
17:40
|
(2) а хз, я думал :: это вызов только статических методов в php, а это еще и вызов переопределенных...
|
|||
4
vde69
26.01.20
✎
17:42
|
(3) :: это обращение к свойству класса, а -> к свойству объекта,
|
|||
5
Ненавижу 1С
гуру
26.01.20
✎
18:08
|
Ты задал значение поля объекта. Значит оно становится рид-онли по правилам php
|
|||
6
vde69
26.01.20
✎
18:16
|
(5) ух-ты, вот так сюрприз для меня.... спасибо !
|
|||
7
vde69
26.01.20
✎
18:17
|
(6) хотя вске равно не работает
|
|||
8
vde69
26.01.20
✎
18:22
|
(5) кстати везде советуют инирциализировать переменные в классе сразу, так, что наверно я не понял о чем ты
|
|||
9
Генератор
26.01.20
✎
18:43
|
попробуй без $: $this->in_data = array()
|
|||
10
vde69
26.01.20
✎
18:59
|
PHP - отстой в плане ООП... наследование кривое.... parent ведет только к методам класса а не к методам унаследованого обьекта
придется переписывать на добавление ссылки на обьект ребенка во все процедуры класса родителя... есть еще механизм позднего связывания, но он плохо совмещается с обычным функционалом... короче криво все... |
|||
11
ДенисЧ
26.01.20
✎
19:01
|
(10) А зачем ты взял пых? Более других языков нет, что-ли?
|
|||
12
Генератор
26.01.20
✎
19:02
|
попробуй все-таки (9)
|
|||
13
sevod
27.01.20
✎
17:43
|
(10) Ты перед тем как язык хейтить, хоть немного с базовым синтаксис разберись.
Твое "$this->$in_data = array();" Должно быть "$this->in_data = array();" $ - лишний. ПХП я возможно хуже тебя знаю, но за 10 минут разобрался. Хотя бы попробовал задачу на более простые разложить. Сразу бы понял что не в наследовании проблема. |
|||
14
Пинки Пай
27.01.20
✎
18:11
|
(13) Одно другому не мешает. Я в ПХП разобрался довольно хорошо, но при этом тоже считаю его полным отстоем. С момента создания его предназначение изменилось, сам язык тоже сильно изменился и оброс новыми фичами, при этом сохранил в себе кучу старого и ненужного груза.
|
|||
15
sevod
27.01.20
✎
20:04
|
(14) У пхп одна проблема, что всякие недоучки рукожопят в нем, потому что можно методом тыка начать. К примеру в jave так не прокатит, "не заведется". В итоге о языке и о всех программистах по таким рукожопым судят.
|
|||
16
Пинки Пай
27.01.20
✎
20:38
|
(15) Еще есть проблема что в ПХП полно старых специалистов, которые пишут код по старому, и думают что это правильно. И полно проектов, где все старье перемешалось с новьем, потому что приходят новые программисты, и пытаются что-то исправить в этом говне. Но проще все с нуля переписать на JS, чем в ПХП исправлять тонны легаси.
|
|||
17
sevod
27.01.20
✎
22:22
|
(16) На JS?! На ноде? Вообще не спец ни в вэб, ни в пхп, ни в ноде. Но сколько слышу, она не стабильна. Не говоря о том что нет cms на ней и еще много чего. И JS хейтят намного жестче чем пхп. И за дело причем. Когда говорят о том что ПХП худший языке в мире, делают оговорку что JS еще хуже. Правда в последнее время из за высоких ЗП этот хейт поутих, но именно из за ЗП и востребованности. Если и переписывать, то на ларавель/сифони и т.п.
JS отличный кандидат на убицу пхп, но не сейчас и если доделают. И фронт и бэк на одном языке, это круто. Это уже почти 1С! |
|||
18
Пинки Пай
27.01.20
✎
23:06
|
(17) ларавель/сифони - это тоже ПХП. Зачем на них, если ПХП хейтят?
|
|||
19
Пинки Пай
27.01.20
✎
23:08
|
Чем JS плох? ИМХО никаких минусов. Я щас на TypeScript пишу, вообще все офигенно. ПХП по сравнению с ним гораздо хуже.
|
|||
20
Пинки Пай
27.01.20
✎
23:12
|
На счет нестабильности ноды не слышал. CMS очень много. Не знаю откуда у тебя такая информация, но она похоже что ложная.
|
|||
21
sevod
28.01.20
✎
08:50
|
(18) чем сильнее хейтят, тем меньше прогеров. ларавель и симфони никто не хейтит. И php7 тоже.
Какие cms под JS есть? |
|||
22
Сияющий в темноте
28.01.20
✎
09:10
|
для понимания хорошо почитать переменные переменные и что делает $$var
язык,на самом деле,замечательный где еще из коробки обращение к переменной по имени без вычислить (eval в javascript) где сериализация графа объектов из коробки? ну и сборка мусора методами php дает прекрасные результаты. а любителям java и javascript - два кактуса со спиральными иголками в помощь |
|||
23
vde69
28.01.20
✎
22:33
|
(9) (13) да, Вы правы, $ реально лишний.
по поводу PHP - совершенно соглашусь в том, что смесь старых методов и новых - бред, да и мусора там куча... еще там куча всяких заплаток, вроде позднего связывания и прочего, чего нет в нормальных языках... да и тот-же подход с произвольной типизацией и не явным передачей "копии указателя" и еще огромная куча совершенно не очевидных вещей.... я в своей жизни писал на кучи разных языков, PHP в целом вполне приемлемый для определенных задач, но отдельные вещи сделаны просто ужасна именно по причине необходимости совместимости более ранних версий, вот 1с правильно сделала, выпустила восьмерку без оглядки на семерку, а PHP ни как не может уйти на новый уровень... |
|||
24
Asmody
28.01.20
✎
22:37
|
Нормальный подход: в (0) нарукожопил ТС, а говно – язык.
|
|||
25
sevod
29.01.20
✎
11:31
|
(24) причем тут не один такой в теме. Похоже на диагноз когда ведутся на хайп не обращая внимание на реальность.
Проблемы php это говнокодеры и хейтеры, но не язык. Если не надо новый гугл пилить, то все нормально работает. Самый востребованный язык под бэк в вэбе. Есть возможность войти в него, потому что есть вакансии для начинающих. Ну а дальше уже от тебя зависит. Будишь ты "желтые коробочки развозить" или новый фейсбук пилить. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |