Просмотр полной версии : Несколько ошибок в онлайн игре...
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;
this это ключевое слово это указатель на нынешний класс и ты не можешь его переопределить ...
$this = $newShop; - вот твоя ошибка
решение: не используй переменную this
Chrek625
25.05.2009, 00:25
помогло большое спасибо.
ну вот ещё одна проблема почемуто не выводится капча... картинка вообще не выводится хотя и требует ввести. с чем это может быть связанно
Chrek625
25.05.2009, 00:27
Doom123 как не использовать? я сделал так как сказал Pashkela и ошибку перестало выводить.
Если не стало ошибки. Это не значит что СТАЛО работать =)))))))
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
я не использую их... это код игры... помоги если можешь... если надо в силу возможностей заплачу... напиши мне в личку если захочешь помочь... обговорим цену...
Чел. Ты реально полез не в свою степь. Не понимая что откуда берется вот так на форуме ты ее будешь чинить до новых веников.
Говоря медицинским языком, ты пытаешься лечить симптомы, а надо искать причину болезни скрипта. Затыкая один симптом - будут вылазить другие.
Надо посмотреть почему вообще эти ошибки вылезли. Это надо смотреть на весь скрипт (организм) в целом. И дебажить, дебажить, дебажить....
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'])
учите английский, пишет понятно: вот это (что сверху) - не массив
Я тебе уже писал как можно это решить, переписывать класс с 4 на 5 не простоя задача, простым изменением $this=$newShop на $this->$newShop(это вообше разные по смыслу операции) ты ничего не добьешься, с таким же успехом ты мог бы сделать и так //$this=$newShop
и о чудо ошибка исчезла, это НЕ РЕНШЕНИЯ ПРОБЛЕМЫ А ЕЕ СКРЫТИЕ отсюда у тебя нарушаеться логика работы класса и ошибки полезут как из рока изобилия. Найди толкового кодера и не занимайся как написал astrologer - Permutation programming, во первых время збережешь во вторых код будет рабочим.
Chrek625
25.05.2009, 20:22
Ну так помогите кто то из вас... я заплачу.
МНЕ НУЖНА ВАША ПОМОЩЬ.
я в долгу не останусь.
Doom123 как не использовать? я сделал так как сказал Pashkela и ошибку перестало выводить.
мдя ... ну еси ты не понел что ты сделал то лучшеб ваще этот пост не писал ... таким образом ты обратился к переменной newshop в нынешнем классе .. а посему ты не переназначил переменную $this а просто обратился к переменой ... учи ООП гения млять ..
Мой тебе совет сходи сюда -> http://www.free-lance.ru/ во первых в условиях жесткой конкуренции особенно большие ценны там не буду назначать(конечно там есть супермего_павлины_ты_взгля и_на_мое_портфолио и всякие фирмы), во вторых там есть граммотные люди(но и всяких hello_world_зделаю_за_5_минут тоже хватает), конечно абсолютно весь класс переписывать не нужно - поэтому баков в 15-30 тебе это ТАМ обойдется(хотя смотря по количеству инклюдов то тебе лечше найти хост с php4).
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot