в общем дали мне скрипт, я когда загружаю выводит ошибку там та в той то строке, я уже наизусть ее выучил но немогу понять что там нитак, посоветуйте(ошибка Fatal error: Cannot re-assign $this in T:homelocalhost3classesShop.php on line 77) Code: function Shop($DBManager = 0, $objectId = null) { global $DBManager; $this->DBObject($DBManager, $objectId); $this->_app_voc = new app_voc(); } 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)) { [b]$this = $newShop[/b]; 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; } if ($this->getVariable('type') == 'magic' and get_class($this)!='magicshop') { $newShop = new MagicShop(); // echo "in get clinic, $objectId, ".get_class($this)."<br/>"; if ($newShop->get($objectId)) { $this = $newShop; return true; } return false; } if ($this->getVariable('type') == 'consulting' and get_class($this)!='consulting') { $newShop = new Consulting(); // echo "in get clinic, $objectId, ".get_class($this)."<br/>"; if ($newShop->get($objectId)) { $this = $newShop; return true; } return false; } if ($this->getVariable('type') == 'promotion' and get_class($this)!='promotion') { $newShop = new Promotion(); if ($newShop->get($objectId)) { $this = $newShop; return true; } return false; } if ($this->getVariable('type') == 'mine' and get_class($this)!='mine') { $newShop = new Mine(); if ($newShop->get($objectId)) { $this = $newShop; return true; } return false; } if ($this->getVariable('type') == 'transport' and get_class($this)!='transportation') { $newShop = new Transportation(); if ($newShop->get($objectId)) { $this = $newShop; return true; } return false; } if ($this->getVariable('type') == 'ad_board' and get_class($this)!='adboard') { $newShop = new AdBoard(); if ($newShop->get($objectId)) { $this = $newShop; return true; } return false; } return true; } else { return false; } }
вот я выделил его жирным но там плохо видно=( ($this = $newShop; ) if ($this->getVariable('type') == 'repair' and get_class($this)!='repairshop') { $newShop = new RepairShop(); if ($newShop->get($objectId)) { $this = $newShop; return true; } return false; }
Ну я так понял это у тебя выбивает такое на PHP5. А связано это с тем, что если в PHP4 ты переменную $this мог использовать как угодно, то в PHP5 она отнесена к разряду зарезервированных, следовательно переопределить её невозможно. По идее, если такая ошибка возникла - это некорректный алгоритм, ибо сделано "в лоб". То есть отныне ты этой переменной ничего не сможешь присвоить... Лучше заведи в классе метод вроде такого: А потом с её помощью получай новый объект в какую-то переменную и работай с ним. В любом случае - если ты от этого далёк, то пускай кодер доведёт этот скрипт до ума, чтобы он пахал в PHP5.
я тоже подумал что в этом и есть проблема я заместо $this = $newshop; написал if (class_exists($newShop)) { return new $newShop; вроде как помогло но стала выкидывать ошибку такого рода Parse error: parse error, unexpected ';', expecting T_FUNCTION in T:\home\localhost\3\classes\Shop.php on line 2434 как я понял это где-то не закрыта строка? и надо в 2500 строках искать куда поставить ; ?=(
Ну насчёт корректности исправления я тебе толком сказать ничего не смогу... Ибо всё зависит от реализации алгоритма, а те куски что я видел мало что об это говорят. Что касается ошибки - возможно не закрыта строка, возможно нарушение баланса скобок {}. Что на той строке?
я посмотрел у меня помойму не закрыта функция class но я не знаю точно, можно ли тебе как нибуть файл скрипта дать или прикрипить куда нибуть чтобы ты посмотрел?
Ну скорее всего баланс скобок не верен... Да теоретически можно, но у меня времени реально нету разгребать что-то... Я так понял - это у тебя модуль какой-то... Может даже от oscommerce, а там есть над чем подумать...
XopoIII, давай смотри... Если что - тогда свистни, постараюсь время найти поставить и потестить. Что хоть за скрипт? Какого плана?
вроде более ли менее разобрался теперь такая проблема=) Parse error: parse error, unexpected T_CLASS, expecting T_FUNCTION in T:\home\localhost\3\classes\Trauma.php on line 178 вот эта строка class LightTrauma extends Trauma { за ней идет function LightTrauma($fighterId) { $this->Trauma($fighterId); $this->setVariable('type', TRAUMA_LIGHT); } function chooseType($mode, $probability) { if ($probability < $this->probability[$mode][TRAUMA_MEDIUM]) { $newTrauma = new HardTrauma($this->getVariable('fighterId')); } elseif ($probability < $this->probability[$mode][TRAUMA_LIGHT]){ $newTrauma = new MediumTrauma($this->getVariable('fighterId')); } else { $newTrauma = false; } return $newTrauma; } } что может в быть в той строке не правильно вообще не понимаю=(
Сложно сказать... Но мне кажется проблема в строке $this->Trauma($fighterId), т.к. идёт обращение по имени класса, то есть, я так понял вызывается конструктор (?). Может в PHP4 такое и прохляет, то в пятёрке вряд ли. Вообще, это гиблое дело переделывать такой глупый объектно-ориентированный код под пятый PHP. Проще поставить четвёрку, наверное...
XopoIII, PHP5 от PHP4 как раз и отличается более глубокой реализацией объектно-ориентированных фичей, т.е. у тебя как раз на это замут и идёт... В PHP4 ООП - это вообще страшная фикция, ограниченная рядом условий и ограничений. Поэтому в твоём коде стилистика написания соответствущая... Местами аффтар пытался изобрести колесо, что пятёрке уже сделали за него... А где ты собираешься хостится?
Ну по идее нету сложностей прикрутить к нему PHP4. Тут на форуме полно манов по теме как прикрутить к апачу PHP4. Тут хз... Надо у саппорта спрашивать какая у них стоит версия Php. Только боюсь, что везде будет 5-ка. 175757