PDA

Просмотр полной версии : Несколько ошибок в онлайн игре...


Chrek625
24.05.2009, 17:45
Доброго времени суток всем знатакам PHP.
Помогите исправить несколько ошибок в движке онлайн игре.

первая сама большая ошибка:
Fatal error: Cannot re-assign $this in Z:\home\sirius\www\classes\Shop.php on line 75


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;


кто может помогите...

Pashkela
24.05.2009, 17:54
гы, ну попробуй так:

$this->$newShop;

Doom123
24.05.2009, 18:08
this это ключевое слово это указатель на нынешний класс и ты не можешь его переопределить ...

$this = $newShop; - вот твоя ошибка

решение: не используй переменную this

Chrek625
25.05.2009, 00:25
помогло большое спасибо.

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

Chrek625
25.05.2009, 00:27
Doom123 как не использовать? я сделал так как сказал Pashkela и ошибку перестало выводить.

webjema
25.05.2009, 00:51
Если не стало ошибки. Это не значит что СТАЛО работать =)))))))

Pashkela
25.05.2009, 01:25
Если не стало ошибки. Это не значит что СТАЛО работать =)))))))

Да? Т.е. в любом скрипте написав "this->$newShop;" и ошибка исчезает - значити не факт, что ошибки нет? :D

astrologer
25.05.2009, 01:52
Да? Т.е. в любом скрипте написав "this->$newShop;" и ошибка исчезает - значити не факт, что ошибки нет? :D Permutation programming?

Chrek625
25.05.2009, 02:04
Товарищи знатаки как говориться все проблемы по степени их поступления.

у меня тут ещё много ошибок и одна самая противная из них это:

Warning: array_merge() [function.array-merge]: Argument #2 is not an array in Z:\home\sirius\www\classes\Fighter.php on line 150


вот фрагмент кода

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...

Посоветуйте что то в этом случае...

Pashkela
25.05.2009, 02:11
2 astrologer:

simple magic:)

2 Chrek625:

Чувак, ты используешь какие-то классы, код которых не приводишь, думаешь тебе тут реально помогут? Врял ли. Начни с:


<?php
echo "\n1";
?>


+ http://www.translate.ru/ <- вот без этого точно прогресса не будет, хотя бы научиться переводить ошибки, которые тебе выдают прямо на твой широкоформатный монитор

Chrek625
25.05.2009, 02:18
я не использую их... это код игры... помоги если можешь... если надо в силу возможностей заплачу... напиши мне в личку если захочешь помочь... обговорим цену...

webjema
25.05.2009, 02:32
Чел. Ты реально полез не в свою степь. Не понимая что откуда берется вот так на форуме ты ее будешь чинить до новых веников.
Говоря медицинским языком, ты пытаешься лечить симптомы, а надо искать причину болезни скрипта. Затыкая один симптом - будут вылазить другие.

Надо посмотреть почему вообще эти ошибки вылезли. Это надо смотреть на весь скрипт (организм) в целом. И дебажить, дебажить, дебажить....

Chrek625
25.05.2009, 03:12
webjema может ты поможешь? если вдруг захочешь помочь напиши мне 355949762

Chrek625
25.05.2009, 19:50
помогите исправить последнюю ошибку... больше обращаться не буду...

Warning: array_merge() [function.array-merge]: Argument #2 is not an array in Z:\home\sirius\www\classes\Fighter.php on line 150


вот фрагмент кода...

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;
}
}


Полный скрипт (http://nerezus.ifolder.ru/12296197)

Pashkela
25.05.2009, 20:07
unserialize($this->data['user_info'])

учите английский, пишет понятно: вот это (что сверху) - не массив

PaCo
25.05.2009, 20:13
Я тебе уже писал как можно это решить, переписывать класс с 4 на 5 не простоя задача, простым изменением $this=$newShop на $this->$newShop(это вообше разные по смыслу операции) ты ничего не добьешься, с таким же успехом ты мог бы сделать и так //$this=$newShop
и о чудо ошибка исчезла, это НЕ РЕНШЕНИЯ ПРОБЛЕМЫ А ЕЕ СКРЫТИЕ отсюда у тебя нарушаеться логика работы класса и ошибки полезут как из рока изобилия. Найди толкового кодера и не занимайся как написал astrologer - Permutation programming, во первых время збережешь во вторых код будет рабочим.

Chrek625
25.05.2009, 20:22
Ну так помогите кто то из вас... я заплачу.
МНЕ НУЖНА ВАША ПОМОЩЬ.
я в долгу не останусь.

Doom123
25.05.2009, 20:32
Doom123 как не использовать? я сделал так как сказал Pashkela и ошибку перестало выводить.


мдя ... ну еси ты не понел что ты сделал то лучшеб ваще этот пост не писал ... таким образом ты обратился к переменной newshop в нынешнем классе .. а посему ты не переназначил переменную $this а просто обратился к переменой ... учи ООП гения млять ..

PaCo
25.05.2009, 20:48
Мой тебе совет сходи сюда -> http://www.free-lance.ru/ во первых в условиях жесткой конкуренции особенно большие ценны там не буду назначать(конечно там есть супермего_павлины_ты_взгля и_на_мое_портфолио и всякие фирмы), во вторых там есть граммотные люди(но и всяких hello_world_зделаю_за_5_минут тоже хватает), конечно абсолютно весь класс переписывать не нужно - поэтому баков в 15-30 тебе это ТАМ обойдется(хотя смотря по количеству инклюдов то тебе лечше найти хост с php4).