1. PHP / Говнокод #7212

    +170

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    function load_class($module, $class) {
      $class_inc = strtoupper($class) . "_INC";
      $file_inc = $class  . ".inc";
    
      if (!file_exists(MODROOT.$module."/lib/".$class.".inc")) {
         echo "ERROR Loading Class: $class<BR>";
         echo "      Loading Module: $module<BR>";
    //     echo MODROOT.$module."/lib/".$class.".inc";
         exit;
      }
      else {
      $load_class = "if (!defined(\"".$class_inc."\")) {";
      $load_class .= "include(\"".MODROOT.$module."/lib/". $file_inc ."\");";
      $load_class .= "define(\"".$class_inc."\",\"1\");";
      $load_class .= "}";
       }
      return $load_class;
    }
    
    // вызов
    eval(load_class("module", "className"));

    Fffuf

    Запостил: sl1p, 08 Июля 2011

    Комментарии (12) RSS

    • Печальное зрелище.

      А все, что требовалось - прочесть одну страничку мана
      http://www.php.net/manual/en/function.spl-autoload-register.php
      Ответить
    • > MODROOT . $module . '/lib/' . $class . '.inc'
      Обожаю всё такое... Только как-то маловато что ли. Вот, поправил:
      $_SERVER['DOCUMENT_ROOT'] . MODROOT . $GLOBALS['theme']['current'] . $module . $CLASSES . '/lib/default/source/php/' .  $class . '.inc'
      Ответить
      • Вам + ' ' + таки + ' ' + нравится + ' ' + склеивать + ' ' + строчки?
        Ответить
      • Всё равно плохо. Надо '/lib/default/source/php/' разбить так:
        DS . 'lib' . DS . 'default' . DS . 'source' . DS . 'php' . DS

        Вдруг в ФС сервера директории разделяются не слешами, а другим символом?
        Ответить
        • Фи... Константа...
          $definitionDirectorySeparatorFileSystem->getCurrentDirectorySeparator() . 'lib' . 
          $definitionDirectorySeparatorFileSystem->getCurrentDirectorySeparator() . 'default' . 
          $definitionDirectorySeparatorFileSystem->getCurrentDirectorySeparator() . 'source' . 
          $definitionDirectorySeparatorFileSystem->getCurrentDirectorySeparator() . 'php' . 
          $definitionDirectorySeparatorFileSystem->getCurrentDirectorySeparator()
          Ответить
          • public function getCurrentDirectorySeparator() {
            	return eval('return chr(47);');
            }
            Ответить
            • пиписюнчик
              Ответить
            • public function getCurrentDirectorySeparator() {
              	//return eval('return chr(92);'); // please, uncomment this line for windows platform
              	return eval('return chr(47);');
              }
              Ответить
              • *КЩАД*
                Ответить
              • А у меня вот на винде слэш прекрасно работает.
                Ответить
                • У Вас винда не та... Где-то в реестре должна быть запись:"Здесь был Торвальдс"
                  Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий