Доброго времени суток всем знатакам PHP. Помогите исправить несколько ошибок в движке онлайн игре. первая сама большая ошибка: Fatal error: Cannot re-assign $this in Z:\home\sirius\www\classes\Shop.php on line 75 PHP: function get($objectId=null) { if ($objectId == 0) return false; if (parent::get($objectId)) { // echo "in get clinic, $objectId, ".get_class($this)."<br>"; if ($this->getVariable('type') == 'comission' and get_class($this)!='comissionshop') { $newShop = new ComissionShop(); if ($newShop->get($objectId)) { $this = $newShop; $this->getCrncyDst(); return true; } return false; } if ($this->getVariable('type') == 'repair' and get_class($this)!='repairshop') { $newShop = new RepairShop(); if ($newShop->get($objectId)) { $this = $newShop; return true; } return false; } if ($this->getVariable('type') == 'clinic' and get_class($this)!='clinic') { $newShop = new Clinic(); // echo "in get clinic, $objectId, ".get_class($this)."<br>"; if ($newShop->get($objectId)) { $this = $newShop; return true; } return false; } и так далее... ошибка в строчке $this = $newShop; кто может помогите...
this это ключевое слово это указатель на нынешний класс и ты не можешь его переопределить ... $this = $newShop; - вот твоя ошибка решение: не используй переменную this
помогло большое спасибо. ну вот ещё одна проблема почемуто не выводится капча... картинка вообще не выводится хотя и требует ввести. с чем это может быть связанно
Да? Т.е. в любом скрипте написав "this->$newShop;" и ошибка исчезает - значити не факт, что ошибки нет?
Товарищи знатаки как говориться все проблемы по степени их поступления. у меня тут ещё много ошибок и одна самая противная из них это: Warning: array_merge() [function.array-merge]: Argument #2 is not an array in Z:\home\sirius\www\classes\Fighter.php on line 150 вот фрагмент кода PHP: function get($objectId) { if (parent::get($objectId)) { $this->data = array_merge($this->data, unserialize($this->data['user_info'])); unset($this->data['user_info']); return true; } else { return false; } } проблема опять же с $this... Посоветуйте что то в этом случае...
2 astrologer: simple magic 2 Chrek625: Чувак, ты используешь какие-то классы, код которых не приводишь, думаешь тебе тут реально помогут? Врял ли. Начни с: PHP: <?php echo "\n1"; ?> + http://www.translate.ru/ <- вот без этого точно прогресса не будет, хотя бы научиться переводить ошибки, которые тебе выдают прямо на твой широкоформатный монитор
я не использую их... это код игры... помоги если можешь... если надо в силу возможностей заплачу... напиши мне в личку если захочешь помочь... обговорим цену...
Чел. Ты реально полез не в свою степь. Не понимая что откуда берется вот так на форуме ты ее будешь чинить до новых веников. Говоря медицинским языком, ты пытаешься лечить симптомы, а надо искать причину болезни скрипта. Затыкая один симптом - будут вылазить другие. Надо посмотреть почему вообще эти ошибки вылезли. Это надо смотреть на весь скрипт (организм) в целом. И дебажить, дебажить, дебажить....
помогите исправить последнюю ошибку... больше обращаться не буду... Warning: array_merge() [function.array-merge]: Argument #2 is not an array in Z:\home\sirius\www\classes\Fighter.php on line 150 вот фрагмент кода... PHP: function get($objectId) { if (parent::get($objectId)) { $this->data = array_merge($this->data, unserialize($this->data['user_info'])); unset($this->data['user_info']); return true; } else { return false; } } Полный скрипт
unserialize($this->data['user_info']) учите английский, пишет понятно: вот это (что сверху) - не массив
Я тебе уже писал как можно это решить, переписывать класс с 4 на 5 не простоя задача, простым изменением $this=$newShop на $this->$newShop(это вообше разные по смыслу операции) ты ничего не добьешься, с таким же успехом ты мог бы сделать и так //$this=$newShop и о чудо ошибка исчезла, это НЕ РЕНШЕНИЯ ПРОБЛЕМЫ А ЕЕ СКРЫТИЕ отсюда у тебя нарушаеться логика работы класса и ошибки полезут как из рока изобилия. Найди толкового кодера и не занимайся как написал astrologer - Permutation programming, во первых время збережешь во вторых код будет рабочим.
мдя ... ну еси ты не понел что ты сделал то лучшеб ваще этот пост не писал ... таким образом ты обратился к переменной newshop в нынешнем классе .. а посему ты не переназначил переменную $this а просто обратился к переменой ... учи ООП гения млять ..
Мой тебе совет сходи сюда -> http://www.free-lance.ru/ во первых в условиях жесткой конкуренции особенно большие ценны там не буду назначать(конечно там есть супермего_павлины_ты_взгляни_на_мое_портфолио и всякие фирмы), во вторых там есть граммотные люди(но и всяких hello_world_зделаю_за_5_минут тоже хватает), конечно абсолютно весь класс переписывать не нужно - поэтому баков в 15-30 тебе это ТАМ обойдется(хотя смотря по количеству инклюдов то тебе лечше найти хост с php4).