Привет! Вот кусочек кода, который почему-то на винде раотает, а на юниксах нет. Не знаете в чем дело? PHP: <?php $viewClassName= '\tv\View\PageInfoView'; $vew= new $viewClassName($currentChild, $this, "cc"); На автолоаде затыкается. Кричит "рекваер онсе не может найти файла tv/View/PageInfoView.php" а хотя такой файл есть. И на винде все работает. Спасибо!
* регистр - винде оно пох*ю * права в любом случае заголовок темы не отражает суть проблемы. проблема в доступе к файлу, а не в каких-то тонкостях синтаксиса
artoodetoo Я пока хак туда вставил. С хаком работает. Так что и не в правах и не в регистре. А че еще может быть я и сам не знаю. Рекваер ванс говорит "нет такого файла tv\View\PageInfoView.php в инклудах таких-то" а я глазами вижу что есть такой файл именно в в той папке, которая указана в инклудепас. Баг что-ли? PHP: <?php $temp= new \tv\View\PageInfoView(); //это хак! Этот класс я заранее не мог знать. $viewClassName= '\tv\View\PageInfoView'; $vew= new $viewClassName($currentChild, $this, "cc");
ок. в твоем автолоадере используется относительный или абсолютный путь до файла? поймай через die($filename) оба случая - с явным указанием класса и с подставляемым а может у тебя где-то "\t..." есть )))) насчет спецсимволов точно всё ОК?
Мой автолоад- это доктрин2 автолоад. Он сейчас настроен так, что ищет путь к файлу tv/View/PageInfoView.php внутри инклудепас. Инклуде пас настроен правильно. Это точно, потому что и другие классы подгружаются и в рекваер ванс фатал эрор я вижу нужную папку. А что такое die($filename) ? куда это надо вставить, в автолоад? Про спец-символы все ок. Потому что на самом деле строка с классом не рукописная, а получается из get_class () для модели.
alexey_baranov дык а как помочь тебе если я например не знаю что там доктрина делает и что ей надо...?
str_replace('\\', '/', $className) Вполне может быть из-за трактовки комбинации \t съезжать. Знаю, в одиночных кавычках не должно, но баги никто не отменял.
не надо быть таким категоричным. ошибка есть, это повод подвергнуть сомнению всё перед тем как что-то куда-то передастся, оно у тебя присваивается как строковая константа и в этот момент [падападападам!!!] ВНЕЗАПНО может случиться "\t" die($var) - универсальное лекарство. помогает всегда. если оно не выявило ошибку, значит вставлено не туда.