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

    +161

    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
    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, 07 Февраля 2011

    Комментарии (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(),
      ),
      ),
      );
      ?>
      Ответить
    • это что за APP?
      Ответить
    • А что в 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.
                              Ответить
                            • > грамотно управляем.
                              и эта прошивка заливается по несколько раз, и с младенчества
                              Ответить
    • маршрутизаторы маршрутизировали маршрутизировали, да не вымаршрутизировались
      Ответить

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