Jump to content
  • 0

Класс определяется как объект только таким вариантом: $object = new Class()?


Boron
 Share

Question

Уже перегуглил что мог.

Перечитал в книжках главы, посвящённые ООП.

Везде написано, что объект создаётся таким образом: "$object = new Class()".

Одна ошибка сводит меня с ума... :blink:

В общем дали мне подредактировать на практике один проект. Сижу, редактирую.

Встретился с проблемой. Когда к странице делаю include ('clsstatus.php'), то в браузере получаю

Fatal error: Cannot redeclare class clsStatus in /var/www/EdiCRM/cfg/clsStatus.php on line 3

Я уже закоментировал ВСЕ строчки, какие попадались в проекте с содержанием "$status = clsStatus". И всё-равно выдаётся эта ошибка...

С чем это может быть связано? Или всё-таки можно назначить объект другим способом?

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0
ВСЕ строчки, какие попадались в проекте с содержанием "$status = clsStatus"

а может стоит поискать просто clsStatus и в том числе в include/require-файлах выше того места, где встречается /cfg/clsStatus.php?

upd: да, и еще проверить не появляется ли еще раз /cfg/clsStatus.php где-нибудь

Link to comment
Share on other sites

  • 0

Павел Билькис, сомневаюсь, что ты бы стал читать сотни строк кода из нескольких файлов...

D.S.Denton, немного неточно выразился. Закомментировал во всех файлах корневого каталога проекта...

Сейчас заново попробую отследить, что за засада такая. По шагам. (yahoo!!! :blink:)

Так класс можно объявить объектом каким-нибудь другим способом?

И можно ли как-то "убить" объект? Что-то я сейчас копался на php.net, ничего кроме __destruct не нашёл, но это вроде не совсем убивалка объекта...

Link to comment
Share on other sites

  • 0
В РНР отсутствует непосредственная поддержка деструкторов. Тем не менее, вы можете легко имитировать работу деструктора, вызывая функцию РНР unset(). Эта функция уничтожает содержимое переменной и возвращает занимаемые ею ресурсы системе.
Link to comment
Share on other sites

  • 0

автор, убейте себя.

головой ап стену.

извините за офтоп, не сдержался.

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

по сабжу, у вас пхп 4 походу.

Edited by AMD
Link to comment
Share on other sites

  • 0

Павел Билькис, D.S.Denton, спасибо за ответы! Сегодня ничего в коде не нашёл, "проверяя строчки пошагово", продолжу завтра с утра, в том числе попробую и "убить" объекты.

AMD, сам себе стену найди покрепче! Ты вообще читал суть сообщений? Или у тебя с восприятием текста проблемы?

Хочется покидаться красивыми фразами, поищи соответсвующие разделы, и не мешай получить мнения более опытных участников форума.

Короче будь проклят, и пожалуйста отвали от этой темы! Умник... :blink:

Link to comment
Share on other sites

  • 0

Int, возможно поможет. :blink:

Всем спасибо за ответы, нашёл в чём проблема. Сам дурак! Не туда смотрел, из-за недопонимания сути проблемы. :(

Вечером опишу проблему, мало ли потом кто столкнётся с подобным...

Link to comment
Share on other sites

  • 0

В общем причина ошибки:

Когда-то к проекту инклюдились файлы с классами (назовём их cls_old_xxx.php)

Потом, к проекту начали подключать новые классы, с переписанным кодом, с новыми названиями файлов cls_new_xxx.php.

Т.к. я об этом не знал, и старые классы назывались неочевидно (носили имя "cfg_xxx.php"), я не заметил, что к странице инклюдятся как старые файлы с классами, так и новые файлы с классами.

А в новые классы имели одинаковые названия со старыми классами:

cls_old_xxx.php

class NotUniqueClassName
{
...
}

cls_new_xxx.php

class NotUniqueClassName
{
...
}

Из-за этого и получалась ошибка, что уже был задекларирован старый класс, и вдруг ещё подключался новый класс с таким же именем. :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy