"PHP" / Говнокод #5570 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
<?php

//////////....................................

	static function Request($module="__global",$action='__global',$route=null){
		if(!$route && !empty(self::$route)) $route=self::$route;
        else $route=self::setRoute(APP_ModuleContext::getContext());
        $action=strtolower($action);
		$module=strtolower($module);

		$ro=array();
        if(!empty($route['allow'][$module])){
			$ro=$route['allow'][$module];
            $dis=!empty($route['disallow'][$module])?$route['disallow'][$module]:array();
			if(!empty($dis) && $dis['__global']===true) return new throw APP_Exceptions_PluginBox("Плагины для модуля '$module' отключены");
			 
			 if(empty($ro['__global'])) $ro['__global']=array();
			 if(empty($ro[$action])) $ro[$action]=array();
			 $ro=array_merge($ro['__global'],$ro[$action]);
             if(!empty($ro)){
				 $ro=array_unique($ro);
                 if(!empty($dis)){
					 if(empty($dis['__global'])) $dis['__global']=array();
					 if(empty($dis[$action])) $dis[$action]=array();
					 $dis=array_merge($dis['__global'],$dis[$action]);
					 if(!empty($dis)){
                        $dis=array_unique($dis);
						$ro=array_diff($ro,$dis);
					 }
				 }
				 if(!empty($ro)){
                    $res=array();
		 	        foreach($ro as $plugin){
                        $res[$plugin]=self::getContents($plugin);
			        }
			        return $res;
				 }else return new throw APP_Exceptions_PluginBox("Все плагины были отключены для '$module - $action'");
			 }else return new throw APP_Exceptions_PluginBox("Нет плагинов для запроса '$module - $action'");
		}
		
		return false;
	}

/////////////..........................................
?>

Роутеры роутят

Запостил: Zho Zho, (Updated )

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

  • <?php
    //route data file
    return array(
    "allow"=>array(
    "__global"=>array(
    "__global"=>array("plugin1","plugin2 "),
    ),
    "index"=>array( // some module
    "__global"=>array(),
    "index"=>array(),
    ),
    ),
    "disallow"=>array(
    "index"=>array( // some module
    "__global"=>array(), // true - disallow all
    "index"=>array(),
    ),
    ),
    );
    ?>
    Ответить
  • А что в PHP будет от return new throw $whatever? Я если чесно не заню ни одного другого языка, который бы это как-то смог интерпретировать...
    Ответить
      • Просто обычно лексер любого, компилируемого или интерпретируемого языка, если увидит, что после new нет ничего, что бы можно было "создать" (т.е. ни ссылки на класс, ни выражения, которое в итоге вернет какое-то значение), то дальше просто парсить не станет (не скомпилирует / не выполнит), потому как, очевидно, что все выражение не имеет смысла. Вот я и интересуюсь, а может в PHP для такого выражения есть специальное назначение? 🙂
        Ответить
        • в php new не тот new который в c++ =)
          у php он как раз для создания экземпляров класса

          в данном случае, мы бросаем исключение(тобишь объект) APP_Exceptions_PluginBox наследуемое от стандартного Exception
          Ответить
        • а, е-мае. увидел, конечно нужно местами поменять. бывает.
          спс за дебаг =)
          Ответить
          • Я всегда говорил, что динамическая типизация - говно!
            Компилятор языка со строгой статической типизацией такого бы не пропустил.
            Ответить
            • хорошо, когда динамический язык позволяет делать статическую типизацию. То есть, в var a можно пихать что угодно, а в A a только инстансы или потомков A
              Ответить
            • ну не красота ли =)

              <?php
              $var=array("one"=>1,2,3);
              $var=$var['one'];
              $var++;


              Зы. В с++ тоже есть динамическая типизация =)
              Зыы. Вы путаете динамическую типизацию со строгой. В php есть строгая типизация.
              Ответить
                  • ага. Ну разве что пока можно типизировать аргументы функции.
                    в общем, как и все в мире пхп, все недоделано, а что сделано, то через жопу
                    Ответить
                    • а вы знаете что идеальное общество строится в корне на анархии?
                      PHP дает вам анархию - попробуйте построить идеальное общество =)

                      И да, типизировать можно не только аргументы функций. Хотя такого рода просветление наступает уже через одно место..
                      И когда оно наступает, понимаешь что овчинка выделки не стоит =)
                      Ответить
                      • где вы такое вычитали? ) скорее сообщество пхп показывает нам обратное )
                        вот политика Сана мне нравилась больше: почти весь код доступен, и каждый может слать баги, но исправлять мог только Сан. И это дало нам стройность кода и структурность стандартных библиотек )
                        Ответить
                        • это следует из концепции идеального общества.

                          я вообще-то говорил про типизацию. Про стройность библиотек, есть статья "PHP Язык жрецов" или как-то так.

                          Исходные коды открыты, можете править функции.
                          А мне не в лом открыть доку если надо, заодно, вдруг чего там ещё увижу хорошего...
                          Ответить
                      • Анархия - это пиарский мем, дабы отвадить сомневающееся большинство от "текущих" действий "текущей" власти, "текущих" людей. И "впрыскивается" сторонниками противоположных точек зрения.
                        Анархия - как правило, увеличивает энтропию в энной степени.
                        Анархия - это путь к самкам и дубинам. И сегодня это заметно более чем никак.
                        Ответить
                        • я же сказал - в корне.
                          если хотите более точно, то - в переделе.
                          "PHP дает вам анархию - попробуйте построить идеальное общество"
                          Ответить
                        • народ должен быть грамотно управляем.
                          грамотно управляем, а не так, как обычно было и есть
                          Ответить
                          • вкраце,
                            любое социальное образование, особенно такое как общество, выделяется аппаратом самоконтроля.
                            Отличие идеального общества в что "сверхсознание" обнаруживает себя в сознании каждого индивида. Таким образом анархия - порождает управление =)
                            не знаю как бы попроще выразиться.

                            короче, все зависит от того как ВЫ построите управление своим php.
                            Ответить
                          • > грамотно управляем.
                            и эта прошивка заливается по несколько раз, и с младенчества
                            Ответить
  • маршрутизаторы маршрутизировали маршрутизировали, да не вымаршрутизировались
    Ответить

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

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8