2013-12-04 4 views
0

Я делаю крошечный автозагрузчик для моих проектов kickstarter, и у меня есть проблема, которая меня немного сбивает с толку.PHP взрывающаяся строка, странный результат

Я создал класс загрузчика, который принимает аргумент, который должен содержать символы подчеркивания, чтобы знать, где загрузчик должен следить за классом. Эта строка содержит информацию о пути и имя класса, например: 'path_to_my_class_myclassname' В классе загрузчика я разделил эту строку метками «_» (подчеркивание) на a и как-то всегда возвращает некоторые неожиданные элементы массива, например :

, если строка будет 'first', массив будет выглядеть следующим образом:

array (size=1) 
    0 => string 'first' (length=5) 
array (size=1) 
    0 => string 'f' (length=1) 

Тогда, если я использую подчеркивание так строка: 'youtube_ClassYouTubeAPI' это выглядит следующим образом:

array (size=2) 
    0 => string 'youtube' (length=7) 
    1 => string 'ClassYouTubeAPI' (length=15) 
array (size=1) 
    0 => string 'y' (length=1) 

Вы можете видеть, что в обоих примерах массив результатов содержит первую букву входной строки, но не должен.

Я был судим explode('_',$inputstring) и preg_split('[_]',$inputstring) тоже, но результат был тот же.

Было бы здорово, если бы кто-нибудь мог мне помочь. Заранее спасибо

=== Обновление ===========

Вот весь код:

<?php 
class Autoloader { 
    static public function loader($load_input) { 

     $load_data = preg_split('[_]',$load_input,0); 
     $classname = $load_input[count($load_input)-1]; 
     $filename = 'classes/'.implode('/',$load_data).'.php'; 
     var_dump($load_data); 

     if (file_exists($filename)) { 
      include($filename); 
      if (class_exists($classname)) { 
       return TRUE; 
      } 
     } 
     return FALSE; 
    } 
} 
spl_autoload_register('Autoloader::loader'); 
?> 
+2

Не могли бы вы предоставить нам полный код php? –

+2

Код, который вы опубликовали [работает правильно] (http://sandbox.onlinephpfunctions.com/code/a5a57508312390a70b32f5d89d121bc70c179086). В вашем коде должно быть что-то не так. Пожалуйста, напишите полный (er) листинг, и мы постараемся помочь – Shai

+4

«массив результатов содержит первую букву строки ввода», я подозреваю, что вы смотрите на str [0] вместо arr [0], если вы получить его .. – Teson

ответ

1

Расщепление работает правильно. Проблема эта линия:

$classname = $load_input[count($load_input)-1]; 

должно быть:

$classname = $load_data[count($load_data)-1]; 

то вам нужно использовать $load_data не $load_input!

В противном случае вы просите за [0] от вашего входной строки (что «у»), а не [0] от вашего разобранного массива, который youtube.

Смежные вопросы