powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Использование объектов в PHP
13 сообщений из 63, страница 3 из 3
Использование объектов в PHP
    #38667334
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r uПрограмёр,

в твоем коде, все происходит иначе - чем ты думаешь. конструктор ничего не возвращает. а причина ругани в другом
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
class myclass {
  public function __construct() {
    return "hello";
  }
  public function __toString() {
    return 'опа';
  }
}
echo (new myclass());


а так? )
можешь объяснить? если нет, читай доки. ну этоже основы

Конструктор прям таки ничего не возвращает? )) И даже указатель на объект?
Разумеется, что скорее всего это придирка к словам :) перефразирую так - конструкция new class() всегда возвращает указатель на объект независимо от результата выполнения конструктора (тут только сомневаюсь по поводу исключений, но хотя если я из конструктора бросил исключение, то в любом случае в нормальном коде объект требуется или не использовать или пересоздать и просто словить исключение и не выполнить действий над объектом - это бред).

Однако снова же, как меняется от этого смысл сказанного? Получит ли автор в итоге от строки new class() вместо объекта class строку или fasle? Вот об этом я и говорил.

P.S. что-то последнее время перестаёт мне нравится этот форум... Участники всё чаще и чаще начинают придираться к мелочам, которые не имеют смысла и часто произносятся мной для упрощения всей модели понимания. Или мне надо было разводить весь этот трёп для автора, что бы пояснить ему, почему return в конструкторе не имеет смысла? или же просто как я сказал "конструктор объекта может вернуть только соответствующий объект", что автор сразу понял и прокомментировал.
...
Рейтинг: 0 / 0
Использование объектов в PHP
    #38667347
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрКонструктор прям таки ничего не возвращает? )) И даже указатель на объект?
блин. ну глянь доку. уже даже ктото тебе приводил. повторюсь
php.netvoid __construct ([ mixed $args [, $... ]] )
видишь VOID. знаешь что это значит? конструктор НЕ ВОЗВРАЩАЕТ указатель.
ни больше не меньше.
указатель на объект ты получаешь с помощью new
...
Рейтинг: 0 / 0
Использование объектов в PHP
    #38667371
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрКонструктор прям таки ничего не возвращает? )) И даже указатель на объект?
в PHP/JAVA/CPP и т д - не возвращает. new выделяет память, конструктор ее инизиализирует (очень грубо)

в Javascript - действительно возвращает объект (если ничего в коде конструктора не возвращать - неявно возвращается this)
...
Рейтинг: 0 / 0
Использование объектов в PHP
    #38667376
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettAlibek B.,

Не к вашему, там кто то про $this спросил, из чего следует пологать о доступе изнутри.

Программе, где ты там статический метод увидел в моём примере? Это вообще азы пхп, а ты даже тут опростофилился

блин... да обратись ты через self не к методам, а к переменной и почувствуй разницу. А то спорим ни о чём. Статический - не изменяемый от объекта к объекту. То есть сколько бы объектов класса "A" создано не было, метод m1 в памяти будет храниться в единственном числе (не напоминает ничем static переменную?). А потому обращение self::m1() прокатывает... только из-за того, что метод ОДИН, а не по одному на объект... Попробуй прокрутить то же с атрибутом (переменной) объекта и зацени ругань интерпретатора.

для методов было введено слово static не для того, что бы уточнить у программиста "а надо ли дублировать код метода для каждого объекта", а для того, что бы уточнить "а надо ли передавать первым аргументом ссылку на объект". Вот и всё!!! С переменными класса всё совсем иначе.

А вообще пока... до нескорых встреч... надоели мне эти все "опростофилился" и "ошибаешься чуть бы не в каждом суждении".

P.S. К сожалению модераторы уже не те... если при регистрации на этом форуме я видел как все сообщения строго фильтруются, из них вырезаются оскорбления, пустая болтовня (оффтоп) и тому подобный бред, то сейчас всё совсем иначе. Сейчас даже при отправке сообщения модераторам о явном нарушении правил, троллинге и подобных моментах, модераторы не реагируют никак. Не дают никаких пояснений, что для них это в пределах нормы общения или что-то подобное, а просто игнорируют запросы, хотя они явно указывают на развитие нездравой беседы (то есть когда нормальное здравое обсуждение темы прерывается чьей-то тупой фразкой или сообщение аля "ну вы и дебилы все! Так нельзя делать, так только последние уроды пишут. Иди газоны подстригать с такими руками, а не программировать" (совпадения с реальными фразами или людьми является случайностью)).

Разуверился я в данном форуме... Раньше модераторы следили за своими ветками явно более тщательно.
...
Рейтинг: 0 / 0
Использование объектов в PHP
    #38667407
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r uПрограмёрКонструктор прям таки ничего не возвращает? )) И даже указатель на объект?
блин. ну глянь доку. уже даже ктото тебе приводил. повторюсь
php.netvoid __construct ([ mixed $args [, $... ]] )
видишь VOID. знаешь что это значит? конструктор НЕ ВОЗВРАЩАЕТ указатель.
ни больше не меньше.
указатель на объект ты получаешь с помощью new

Начиная со второго предложения я пояснил свои слова, и описал почему написал именно так. Для ответа на вопрос не разумно объяснять устройство выделения памяти. Или мне заглянуть ещё в низкоуровневые функции выделения памяти? А может ещё упомянуть при описании метода foreach что элементы массива вроде как иду последовательно, но реально они совсем не последовательны, а разбросаны в памяти исходя из результатов вычисления хэш-функции? Ведь иначе скажи я "foreach перебирает последовательно все элементы массива", меня точно также могут прижать, что я не прав!!!

Так всё же, почему, когда я с кем-то согласен, все упускают мелкие ошибки в моих высказываниях (а иногда и некоторые аспекты неправильного понимания), а когда доходит до спора, то придираются к каждой буковке?
Может это от недостатка аргументов? (хотя по отношению к `r u` сомневаюсь, так как редко замечал от него тыканье носом в асфальт кого либо)
...
Рейтинг: 0 / 0
Использование объектов в PHP
    #38667414
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторперефразирую так - конструкция new class() всегда возвращает указатель на объект независимо от результата выполнения конструктора

есть еще два варианта, когда таки возвращает.
...
Рейтинг: 0 / 0
Использование объектов в PHP
    #38667428
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрПолучит ли автор в итоге от строки new class() вместо объекта class строку или fasle?
echo ждет на входе строку, чтобы вывести её.
ты ей даешь объект.
никто незнает КАК ОДНОЗНАЧНО ОТОБРАЗИТЬ этот объект в строку, чтобы вывести.
от этого и ошибка выполнения.
но стоит добавить магию в виде __toString() как ошибка исчезает. так как теперь есть четкое приведение объекта в строку.

что ты хочешь доказать этим кодом, мне лично непонятно? както подругому должно было это сработать?
...
Рейтинг: 0 / 0
Использование объектов в PHP
    #38667429
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторМожет это от недостатка аргументов? (хотя по отношению к `r u` сомневаюсь, так как редко замечал от него тыканье носом в асфальт кого либо)


ты начинаешь делать мой день.
...
Рейтинг: 0 / 0
Использование объектов в PHP
    #38667434
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
щас мы еще вспомним что конструкторов на самом деле два и будет совсем весело.
...
Рейтинг: 0 / 0
Использование объектов в PHP
    #38667508
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r uПрограмёрПолучит ли автор в итоге от строки new class() вместо объекта class строку или fasle?
echo ждет на входе строку, чтобы вывести её.
ты ей даешь объект.
никто незнает КАК ОДНОЗНАЧНО ОТОБРАЗИТЬ этот объект в строку, чтобы вывести.
от этого и ошибка выполнения.
но стоит добавить магию в виде __toString() как ошибка исчезает. так как теперь есть четкое приведение объекта в строку.

что ты хочешь доказать этим кодом, мне лично непонятно? както подругому должно было это сработать?

Это можно упустить в принципе )) Спор насчёт конструктора возник после 16150171 . Из-за чего меня "раздражают" эти недофразы ScareCrow. То есть было выражено несогласие с моим суждением, которое я расценил неверно... как уже выяснилось позже, суть была в том, что указатель на объект (выделенную для него память) возвращается не конструктором. Но учитывая что я то ставил ударение на "только", а не на возвращения указателя именно конструктором, подумал что спор идёт насчёт "не только". (и потому я склоняюсь, что впредь реагировать на её такого рода бессмысленные высказывания несогласия не подкреплённые даже описанием несогласия я не буду).

А сработать этот код не должен вообще, Он показывает, что возвращая строку в конструкторе, мы не получим эту строку на выходе из конструкции new Class() (говорил я это именно автору, так как он возвращал строку и ждал её на выходе)
...
Рейтинг: 0 / 0
Использование объектов в PHP
    #38667513
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёрговорил я это именно автору, так как он возвращал строку и ждал её на выходе
ок.
а то спор идет. а кто, что доказать хочет - уже совсем непонятно
...
Рейтинг: 0 / 0
Использование объектов в PHP
    #38667520
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторОн показывает, что возвращая строку в конструкторе, мы не получим эту строку на выходе из конструкции new Class()

как всегда всё совсем не так.


Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
abstract class MyBase {
    public function __construct () {
        return "Hello, world.";
    }
}
class MyDerived extends MyBase {
    public function __construct () {
        echo parent::__construct();
    }
}
new MyDerived(); // prints "Hello, world."
...
Рейтинг: 0 / 0
Использование объектов в PHP
    #38667535
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrow
Код: php
1.
new MyDerived(); // prints "Hello, world."




автормы не получим эту строку на выходе из конструкции new Class()

ну если печатать и получить из new - одно и то же - разговаривать не о чем


летели два крокодила, один зелёный, другой на север...
...
Рейтинг: 0 / 0
13 сообщений из 63, страница 3 из 3
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Использование объектов в PHP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]