Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Не могу разобраться со скриптом, помогите пожалуйста если не трудн (https://forum.antichat.xyz/showthread.php?t=52378)

XopoIII 30.10.2007 13:42

Не могу разобраться со скриптом, помогите пожалуйста если не трудн
 
в общем дали мне скрипт, я когда загружаю выводит ошибку там та в той то строке, я уже наизусть ее выучил но немогу понять что там нитак, посоветуйте(ошибка Fatal error: Cannot re-assign $this in T:homelocalhost3classesShop.php on line 77)

Код:

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)) {
                    $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;
            }
 
              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;
        }
    }


groundhog 30.10.2007 13:58

И что тут лайн 77?

XopoIII 30.10.2007 15:12

вот я выделил его жирным но там плохо видно=( ($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;
}

groundhog 30.10.2007 15:57

Ну я так понял это у тебя выбивает такое на PHP5. А связано это с тем, что если в PHP4 ты переменную $this мог использовать как угодно, то в PHP5 она отнесена к разряду зарезервированных, следовательно переопределить её невозможно. По идее, если такая ошибка возникла - это некорректный алгоритм, ибо сделано "в лоб". То есть отныне ты этой переменной ничего не сможешь присвоить... Лучше заведи в классе метод вроде такого:

Цитата:

function new_ref ($class) {
if (class_exists($class)) return new $class;
return null;
}
А потом с её помощью получай новый объект в какую-то переменную и работай с ним. В любом случае - если ты от этого далёк, то пускай кодер доведёт этот скрипт до ума, чтобы он пахал в PHP5.

XopoIII 30.10.2007 16:14

я тоже подумал что в этом и есть проблема я заместо

$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 строках искать куда поставить ; ?=(

groundhog 30.10.2007 16:52

Ну насчёт корректности исправления я тебе толком сказать ничего не смогу... Ибо всё зависит от реализации алгоритма, а те куски что я видел мало что об это говорят.

Что касается ошибки - возможно не закрыта строка, возможно нарушение баланса скобок {}. Что на той строке?

XopoIII 30.10.2007 17:10

я посмотрел у меня помойму не закрыта функция class но я не знаю точно, можно ли тебе как нибуть файл скрипта дать или прикрипить куда нибуть чтобы ты посмотрел?

XopoIII 30.10.2007 17:21

на той строке конец пхп
?>
вот))

groundhog 30.10.2007 17:28

Цитата:

на той строке конец пхп
Ну скорее всего баланс скобок не верен...

Цитата:

...можно ли тебе как нибуть файл скрипта дать или прикрипить куда нибуть чтобы ты посмотрел?
Да теоретически можно, но у меня времени реально нету разгребать что-то... Я так понял - это у тебя модуль какой-то... Может даже от oscommerce, а там есть над чем подумать...

XopoIII 30.10.2007 17:33

ну попробую все скобки пересмотреть))


Время: 16:17